看了一些文章,关于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来删除评论。
可以给列表记上
排行榜相关
时间: 2024-10-10 04:58:51