应用场景

缓存设计

由于 Redis 基于内存的 Key-Value 存储,速度肯定是快于 DB 的,在缓存设计时通常也会采用 Redis 来做。可参考 Redis 缓存一节。

消息队列

基于 Redis 五种数据类型之一的 List 数据结构可实现消息队列。消息队列队列我们要保证的就是消息的顺序消费性,可以采用 lpush + brpop 命令实现,除了 Redis 之外推荐使用 RabbitMQ 来做。

排行榜

在一些商城项目中例如统计每月商品销售前 10 的商品或运营活动中用户积分排行榜需求,在 Redis 中提供了有续集合可以轻松实现。

计数器

这个场景也还是比较多的,例如网站PV/UV统计、文章点赞/阅读量、视频网站的播放量。Redis 提供的 incr 命令可实现计数器功能,且性能非常好复杂度为 O(1)。

Session存储

这在于用户登陆注册管理系统中是很常见的,相较于 Memcache 存储 Session 信息,Redis 不会因为服务重启而导致 Session 数据丢失,因为其有数据持久化功能,不会因为 Session 而导致的用户体验问题。之前用过公司内部一个产品发现每当他们发版之后(大概已经知道用户信息是怎么做了)都要去重新登录,真的会影响用户体验。

发布与订阅

Publish/Subscribe 功能可实现实时聊天系统、消息变更触发通知等。