首页 > 代码库 > Redis的一些使用场景

Redis的一些使用场景

看了一些文章,关于Redis的使用场景,觉得挺好的。Redis肯定远远不止作为缓存而使用。Redis更像是一个实现很好的数据结构服务器,通过TCP栈协议提供服务。下面进行详细描述。

 

http://database.51cto.com/art/201107/276333.htm

(其实是对 http://highscalability.com/blog/2011/7/6/11-common-web-use-cases-solved-in-redis.html 的翻译和补充)

 

显示最新的项目列表

下面这个语句常用来显示最新项目,随着数据多了,查询毫无疑问会越来越慢。

SELECT * FROM foo WHERE ... ORDER BY time DESC LIMIT 10 

在Web应用中,“列出最新的回复”之类的查询非常普遍。

因为项目本来就是按这个顺序被创建的,但要输出这个顺序却不得不进行排序操作。

 

类似的问题就可以用Redis来解决。比如说,我们的一个Web应用想要列出用户贴出的最新20条评论。在最新的评论边上我们有一个“显示全部”的链接,点击后就可以获得更多的评论。

我们假设数据库中的每条评论都有一个唯一的递增的ID字段。

-每次新评论发表时,我们会将它的ID添加到一个Redis列表:

LPUSH latest.comments <ID> 

-我们将列表裁剪为指定长度,因此Redis只需要保存最新的5000条评论:

LTRIM latest.comments 0 5000 

FUNCTION get_latest_comments(start,num_items): 
   id_list = redis.lrange(latest.comments,start,start+num_items-1) 
   IF id_list.length < num_items 
       id_list = SQL_DB(SELECT ... ORDER BY time LIMIT ...;) 
   END 
   RETURN id_list 
END 

SQL数据库(或是硬盘上的其他类型数据库)只是在用户需要获取“很远”的数据时才会被触发,而主页或第一个评论页是不会麻烦到硬盘上的数据库了。

 

删除与过滤

我们可以使用LREM来删除评论。

可以给列表记上

 

排行榜相关

Redis的一些使用场景