redis应用场景

Redis能干啥?细看11种Web应用场景

2011-07-25 10:38  贾隆  51CTO.com  字号:T | Thtml

一键收藏,随时查看,分享好友!

Redis的一个很大好处就是能够不用整个转入到这个数据库,而是能够沿用以前的MySQL等数据库,而仅在一些特定的应用场景经过Redis的特性提升效率。本文列出了11个这样的Web应用场景,如显示最新的项目列表、删除和过滤、排行榜等相关需求。web

AD:51CTO学院:IT精品课程在线看!redis

【51CTO精选译文】在“怎样让Redis在你的系统中发挥做用”一文中,Salvatore 'antirez’ Sanfilippo告诉咱们如何利用Redis独有的数据结构处理能力来解决一些常见问题。一些Redis原语命令好比LPUSH、LTRIM和 LREM等等可以用来帮助开发者完成须要的任务——这些任务在传统的数据库存储中很是困难或缓慢。这是一篇很是有用而且实际的文章。那么要如何在你的框架 中完成这些任务呢?数据库

下面列出11种Web应用场景,在这些场景下能够充分的利用Redis的特性,大大提升效率。编程

1.在主页中显示最新的项目列表。缓存

Redis使用的是常驻内存的缓存,速度很是快。LPUSH用来插入一个内容ID,做为关键字存储在列表头部。LTRIM用来限制列表中的项目数最多为5000。若是用户须要的检索的数据量超越这个缓存容量,这时才须要把请求发送到数据库。网络

2.删除和过滤。数据结构

若是一篇文章被删除,可使用LREM从缓存中完全清除掉。 框架

3.排行榜及相关问题。spa

排行榜(leader board)按照得分进行排序。ZADD命令能够直接实现这个功能,而ZREVRANGE命令能够用来按照得分来获取前100名的用户,ZRANK能够用来获取用户排名,很是直接并且操做容易。

4.按照用户投票和时间排序。

这就像Reddit的排行榜,得分会随着时间变化。LPUSH和LTRIM命令结合运用,把文章添加到一个列表中。一项后台任务用来获取列表,并从新计算列表的排序,ZADD命令用来按照新的顺序填充生成列表。列表能够实现很是快速的检索,即便是负载很重的站点。

5.过时项目处理。

使用unix时间做为关键字,用来保持列表可以按时间排序。对current_time和time_to_live进行检索,完成查找过时项目的艰巨任务。另外一项后台任务使用ZRANGE...WITHSCORES进行查询,删除过时的条目。

6.计数。

进行各类数据统计的用途是很是普遍的,好比想知道何时封锁一个IP地址。INCRBY命令让这些变得很容易,经过原子递增保持计数;GETSET用来重置计数器;过时属性用来确认一个关键字何时应该删除。

7.特定时间内的特定项目。

这是特定访问者的问题,能够经过给每次页面浏览使用SADD命令来解决。SADD不会将已经存在的成员添加到一个集合。

8.实时分析正在发生的状况,用于数据统计与防止垃圾邮件等。

使用Redis原语命令,更容易实施垃圾邮件过滤系统或其余实时跟踪系统。

9.Pub/Sub。

在更新中保持用户对数据的映射是系统中的一个广泛任务。Redis的pub/sub功能使用了SUBSCRIBE、UNSUBSCRIBE和PUBLISH命令,让这个变得更加容易。 

10.队列。

在当前的编程中队列随处可见。除了push和pop类型的命令以外,Redis还有阻塞队列的命令,可以让一个程序在执行时被另外一个程序添加到队列。你也能够作些更有趣的事情,好比一个旋转更新的RSS feed队列。

11.缓存。

Redis缓存使用的方式与memcache相同。

网络应用不能无休止地进行模型的战争,看看这些Redis的原语命令,尽管简单但功能强大,把它们加以组合,所能完成的就更没法想象。固然,你能够专门编写代码来完成全部这些操做,但Redis实现起来显然更为轻松。


原文:11 Common Web Use Cases Solved In Redis

【编辑推荐】

  1. 几点建议,让Redis在你的系统中发挥更大做用

  2. 缓存大量小文件?Redis是首选!

  3. 主流NoSQL数据库之Redis全面评测

相关文章
相关标签/搜索