一些Redis原语命令如LPUSH、LTRIM、LREM可以用来帮助开发者完成需要的任务——这些任务在传统的数据库存储中是非常困难或者很慢的。这是一篇非常有用和实用的文章。那么你如何在你的框架中完成这些任务呢?下面是11个Web应用场景,你可以在其中充分利用Redis的特性,大大提高效率。1.首页显示最新的商品列表。Redis使用内存驻留缓存,速度非常快。LPUSH用于插入一个内容ID,它作为键存储在列表的头部。LTRIM用于限制列表中的项目数最多为5000。如果用户需要检索的数据量超过此缓存容量,则需要将请求发送到数据库。2.删除和过滤如果一篇文章被删除了,可以使用LREM将其从缓存中彻底清除。3.排行榜及相关题目按分数排序。ZADD命令可以直接实现这个功能,ZREVRANGE命令可以根据分数获取前100名的用户,ZRANK可以获取用户排名,非常直接易操作。4.按用户投票和时间排序这就像Reddit的排行榜,分数会随着时间变化。LPUSH和LTRIM命令结合使用以将文章添加到列表中。后台任务用于获取列表并重新计算列表的顺序,ZADD命令用于以新顺序填充结果列表。可以非常快速地检索列表,即使对于负载很重的站点也是如此。5、过期物品处理以unix时间为key,保持列表按时间排序。检索current_time和time_to_live会执行查找过期项目的艰苦工作。另一个后台任务使用ZRANGE...WITHSCORES进行查询,删除过期的条目。6.统计各种数据统计的用途非常广泛,比如知道什么时候封禁某个IP地址。INCRBY命令通过原子递增来保持计数使这变得容易;GETSET用于重置计数器;expire属性用于标识何时应删除密钥。7.特定时间的特定项目这是特定访问者的问题,可以通过对每个页面视图使用SADD命令来解决。SADD不会将已经存在的成员添加到集合中。8.实时分析正在发生的事情,用于数据统计和垃圾邮件预防等。使用Redis原始命令可以更容易地实现垃圾邮件过滤系统或其他实时跟踪系统。9.Pub/Sub在更新期间维护用户到数据的映射是系统中的一项常见任务。使用SUBSCRIBE、UNSUBSCRIBE和PUBLISH命令,Redis的发布/订阅功能使这变得更容易。10.队列在当前编程中无处不在。除了push和pop类型的命令,Redis还有阻塞队列命令,允许一个程序在执行过程中被另一个程序添加到队列中。您还可以做一些更有趣的事情,例如更新RSS提要的轮换队列。11、缓存Redis缓存的使用方法和memcache一样。网络应用程序不能进行无休止的模型大战。查看这些Redis原始命令。尽管它们很简单,但它们功能强大。将它们结合起来,能够完成的事情,更是难以想象。当然,您可以专门编写代码来完成所有这些,但Redis显然更容易实现。博文来源:http://my.oschina.net/HeAlvin
