服务端指南 数据存储篇 | 聊聊 Redis 使用场景

本文,是升级版,补充部分实战案例。梳理几个场景下利用 Redis 的特性能够大大提升效率。web

原文地址:服务端指南 数据存储篇 | 聊聊 Redis 使用场景
博客地址:blog.720ui.com/redis

随着数据量的增加,MySQL 已经知足不了大型互联网类应用的需求。所以,Redis 基于内存存储数据,能够极大的提升查询性能,对产品在架构上很好的补充。在某些场景下,能够充分的利用 Redis 的特性,大大提升效率。缓存

缓存

对于热点数据,缓存之后可能读取数十万次,所以,对于热点数据,缓存的价值很是大。例如,分类栏目更新频率不高,可是绝大多数的页面都须要访问这个数据,所以读取频率至关高,能够考虑基于 Redis 实现缓存。服务器

会话缓存

此外,还能够考虑使用 Redis 进行会话缓存。例如,将 web session 存放在 Redis 中。微信

时效性

例如验证码只有60秒有效期,超过期间没法使用,或者基于 Oauth2 的 Token 只能在 5 分钟内使用一次,超过期间也没法使用。session

访问频率

出于减轻服务器的压力或防止恶意的洪水攻击的考虑,须要控制访问频率,例如限制 IP 在一段时间的最大访问量。数据结构

计数器

数据统计的需求很是广泛,经过原子递增保持计数。例如,应用数、资源数、点赞数、收藏数、分享数等。架构

社交列表

社交属性相关的列表信息,例如,用户点赞列表、用户分享列表、用户收藏列表、用户关注列表、用户粉丝列表等,使用 Hash 类型数据结构是个不错的选择。性能

记录用户断定信息

记录用户断定信息的需求也很是广泛,能够知道一个用户是否进行了某个操做。例如,用户是否点赞、用户是否收藏、用户是否分享等。ui

交集、并集和差集

在某些场景中,例如社交场景,经过交集、并集和差集运算,能够很是方便地实现共同好友,共同关注,共同偏好等社交关系。

热门列表与排行榜

按照得分进行排序,例如,展现最热、点击率最高、活跃度最高等条件的排名列表。

最新动态

按照时间顺序排列的最新动态,也是一个很好的应用,可使用 Sorted Set 类型的分数权重存储 Unix 时间戳进行排序。

消息队列

Redis 能做为一个很好的消息队列来使用,依赖 List 类型利用 LPUSH 命令将数据添加到链表头部,经过 BRPOP 命令将元素从链表尾部取出。同时,市面上成熟的消息队列产品有不少,例如 RabbitMQ。所以,更加建议使用 RabbitMQ 做为消息中间件。

(完)

更多精彩文章,尽在「服务端思惟」微信公众号!

相关文章
相关标签/搜索