redis应用场景及建议

redis应用场景及建议

ID:8957851

大小:20.80 KB

页数:0页

时间:2018-04-13

redis应用场景及建议_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《redis应用场景及建议》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Redis在很多方面与其他数据库解决方案不同:它使用内存提供主存储支持,而仅使用硬盘做持久性的存储;它的数据模型非常独特,用的是单线程。另一个大区别在于,你可以在开发环境中使用Redis的功能,但却不需要转到Redis。转向Redis当然也是可取的,许多开发者从一开始就把Redis作为首选数据库;但设想如果你的开发环境已经搭建好,应用已经在上面运行了,那么更换数据库框架显然不那么容易。另外在一些需要大容量数据集的应用,Redis也并不适合,因为它的数据集不会超过系统可用的内存。所以如果你有大数据

2、应用,而且主要是读取访问模式,那么Redis并不是正确的选择。然而我喜欢Redis的一点就是你可以把它融入到你的系统中来,这就能够解决很多问题,比如那些你现有的数据库处理起来感到缓慢的任务。这些你就可以通过Redis来进行优化,或者为应用创建些新的功能。在本文中,我就想探讨一些怎样将Redis加入到现有的环境中,并利用它的原语命令等功能来解决传统环境中碰到的一些常见问题。在这些例子中,Redis都不是作为首选数据库。显示最新的项目列表下面这个语句常用来显示最新项目,随着数据多了,查询毫无疑问会越

3、来越慢。1.SELECT * FROM foo WHERE ... ORDER BY time DESC LIMIT 10 在Web应用中,“列出最新的回复”之类的查询非常普遍,这通常会带来可扩展性问题。这令人沮丧,因为项目本来就是按这个顺序被创建的,但要输出这个顺序却不得不进行排序操作。类似的问题就可以用Redis来解决。比如说,我们的一个Web应用想要列出用户贴出的最新20条评论。在最新的评论边上我们有一个“显示全部”的链接,点击后就可以获得更多的评论。我们假设数据库中的每条评论都有一个唯一

4、的递增的ID字段。我们可以使用分页来制作主页和评论页,使用Redis的模板:-每次新评论发表时,我们会将它的ID添加到一个Redis列表:1.LPUSH latest.comments  -我们将列表裁剪为指定长度,因此Redis只需要保存最新的5000条评论:1.LTRIM latest.comments 0 5000 -每次我们需要获取最新评论的项目范围时,我们调用一个函数来完成(使用伪代码):1.FUNCTION get_latest_comments(start,num_item

5、s): 2.   id_list = redis.lrange("latest.comments",start,start+num_items-1) 3.   IF id_list.length < num_items 4.       id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...") 5.   END 6.   RETURN id_list 7.END 这里我们做的很简单。在Redis中我

6、们的最新ID使用了常驻缓存,这是一直更新的。但是我们做了限制不能超过5000个ID,因此我们的获取ID函数会一直询问Redis。只有在start/count参数超出了这个范围的时候,才需要去访问数据库。我们的系统不会像传统方式那样“刷新”缓存,Redis实例中的信息永远是一致的。SQL数据库(或是硬盘上的其他类型数据库)只是在用户需要获取“很远”的数据时才会被触发,而主页或第一个评论页是不会麻烦到硬盘上的数据库了。删除与过滤我们可以使用LREM来删除评论。如果删除操作非常少,另一个选择是直接跳过

7、评论条目的入口,报告说该评论已经不存在。有些时候你想要给不同的列表附加上不同的过滤器。如果过滤器的数量受到限制,你可以简单的为每个不同的过滤器使用不同的Redis列表。毕竟每个列表只有5000条项目,但Redis却能够使用非常少的内存来处理几百万条项目。排行榜相关另一个很普遍的需求是各种数据库的数据并非存储在内存中,因此在按得分排序以及实时更新这些几乎每秒钟都需要更新的功能上数据库的性能不够理想。典型的比如那些在线游戏的排行榜,比如一个Facebook的游戏,根据得分你通常想要:-列出前100名

8、高分选手-列出某用户当前的全球排名这些操作对于Redis来说小菜一碟,即使你有几百万个用户,每分钟都会有几百万个新的得分。模式是这样的,每次获得新得分时,我们用这样的代码:1.ZADD leaderboard   你可能用userID来取代username,这取决于你是怎么设计的。得到前100名高分用户很简单:ZREVRANGEleaderboard099。用户的全球排名也相似,只需要:ZRANKleaderboard。按照用户投票和时间排序

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。