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

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

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

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

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

2.删除和过滤。

假设一篇文章被删除,能够使用LREM从缓存中彻底清除掉。

3.排行榜及相关问题。

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

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

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

5.过期项目处理。

使用unix时间作为keyword,用来保持列表可以按时间排序。对current_time和time_to_live进行检索,完毕查找过期项目的艰巨任务。还有一项后台任务使用ZRANGE...WITHSCORES进行查询,删除过期的条目。

6.计数。

进行各种数据统计的用途是非常广泛的,比方想知道什么时候封锁一个IP地址。INCRBY命令让这些变得非常easy,通过原子递增保持计数;GETSET用来重置计数器;过期属性用来确认一个keyword什么时候应该删除。

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

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

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

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

9.Pub/Sub。

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

10.队列。

在当前的编程中队列随处可见。除了push和pop类型的命令之外,Redis还有堵塞队列的命令,可以让一个程序在运行时被还有一个程序加入到队列。你也可以做些更有趣的事情,比方一个旋转更新的RSS feed队列。

11.缓存。

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

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

原文:11 Common Web Use Cases Solved In Redis

Redis11种Web应用场景的更多相关文章

  1. Redis 11种Web应用场景举例

    在"怎样让redis在你的系统中发挥作用"一文中,salvatore 'antirez' sanfilippo告诉我们如何利用redis独有的数据结构处理能力来解决一些常见问题.一 ...

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

    下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率. 1.在主页中显示最新的项目列表. Redis使用的是常驻内存的缓存,速度非常快.LPUSH用来插入一个内容ID ...

  3. Redis能干啥?细看11种Web应用场景[转]

    下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率. 1.在主页中显示最新的项目列表. Redis使用的是常驻内存的缓存,速度非常快.LPUSH用来插入一个内容ID ...

  4. 几种web字体格式

    目前,文字信息仍是网站最主要的内容,随着CSS3技术的不断成熟,Web字体逐渐成为话题,这项让未来Web更加丰富多彩的技术拥有多种实现方案,其中之一是通过@font-face属性在网页中嵌入自定义字体 ...

  5. 四 主要的几种 Web 服务器

    一 Microsoft IIS 1. 仅支持 Windows 操作系统,用于 .Net 平台网站的部署和运行. 2. IIS 是一种 Web 服务组件,包括括 Web 服务器.FTP 服务器.NNTP ...

  6. 常见的三种Web服务架构

    常见的三种Web服务架构 转自http://www.cnblogs.com/bvbook/archive/2008/12/24/1360942.html 相互竞争的服务架构 The Competing ...

  7. Java中常见的5种WEB服务器介绍

    这篇文章主要介绍了Java中常见的5种WEB服务器介绍,它们分别是Tomcat.Resin.JBoss.WebSphere.WebLogic,需要的朋友可以参考下 Web服务器是运行及发布Web应用的 ...

  8. 【转】浅谈常用的几种web攻击方式

    浅谈常用的几种web攻击方式 一.Dos攻击(Denial of Service attack) 是一种针对服务器的能够让服务器呈现静止状态的攻击方式.有时候也加服务停止攻击或拒绝服务攻击.其原理就是 ...

  9. SSD固态盘应用于Ceph集群的四种典型使用场景

    在虚拟化及云计算技术大规模应用于企业数据中心的科技潮流中,存储性能无疑是企业核心应用是否虚拟化.云化的关键指标之一.传统的做法是升级存储设备,但这没解决根本问题,性能和容量不能兼顾,并且解决不好设备利 ...

随机推荐

  1. 一个简单的webdynpro的ALV示例

    开发alv的时候需要1.在web dynpro组件下面 的已使用的组件中添加ALV组件 SALV_WD_TABLE 2.在组件控制器的属性下面创建ALV组件SALV_WD_TABLE 3.在视图界面的 ...

  2. Skype无法显示登录界面

    Skype升级之后突然抽风,双击运行程序之后,输入用户名和密码的窗口都没了,截图如下(本机为Windows 7 32bit版本): 卸载重新安装,也无济于事.删除注册表中的Skype的相关信息后问题依 ...

  3. Firemonkey绑定对象列表

    在实现Firemonkey绑定对象列表的过程中,我遇到的一些现有教程当中没有提到的细节,分享一下. 1.追加对象 用Navigator插入记录,位置总是在当前记录之前插入,没有在最后追加一个对象的方法 ...

  4. SDL 简介

    SDL 简介 什么是SDL? 即 Simple DirectMedia Layer,使用 LGPL 许可证. 免费的跨平台多媒体应用编程接口 用于游戏.游戏开发工具.模拟器.样本演示.多媒体应用等 它 ...

  5. Python爬行动物(一):基本概念

    定义网络爬虫          网络爬虫(Web Spider,也被称为网络蜘蛛,网络机器人,也被称为网页追逐者).按照一定的规则,维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁,自己主动索引 ...

  6. 14.5.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量

    14.5.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量 改变InnoDB redo ...

  7. Android服务之PackageManagerService启动源码分析

    了解了Android系统的启动过程的读者应该知道,Android的所有Java服务都是通过SystemServer进程启动的,并且驻留在SystemServer进程中.SystemServer进程在启 ...

  8. C++ 11 右值引用以及std::move

    转载请注明出处:http://blog.csdn.net/luotuo44/article/details/46779063 新类型: int和int&是什么?都是类型.int是整数类型,in ...

  9. POJ 1159 - Palindrome 优化空间LCS

    将原串和其逆序串的最长公共子序列求出来为M..那么2*n-M就是所需要加的最少字符..因为求出的M就是指的原串中"潜伏"的最长回文.. 问题转化为求LCS..但是n最大到5000. ...

  10. 开发自己PHP MVC框架(一)

    本教程翻译自John Squibb 的Build a PHP MVC Framework in an Hour,但有所改动,原文地址:http://johnsquibb.com/tutorials 这 ...