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

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

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

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

1.在主页中显示最新的项目列表。 数据库

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

2.删除和过滤。 缓存

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

3.排行榜及相关问题。 数据结构

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

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

这就像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

相关文章
相关标签/搜索