Redis 应用场景

前言

这篇主要是记录一下之前看到的一个公开课视频内容,大体讲解的是Redis各种数据结构的应用场景;

如视频所说,一些中小型公司使用Redis的应用场景比较单一, 使用的数据结构大部分是string,或者是hash, 其他数据结构基本使用的很少,  至少我呆过的公司目前是这样的,尴尬!!!

数据结构

Redis中基本的五种数据结构,分别是字符串string、哈希hash、列表list、集合set、有序集合zset,各种数据结构基本使用请参考http://redisdoc.com/,这里就主要记录应用场景,数据存放结构如下图:

 

 

String 结构--具体命令使用参考http://redisdoc.com/string/

 

String应用场景

 

 

 

Session共享,根据编程环境提供的对应的RedisSession库可以实现Session共享,这里应该都使用过;

对象缓存,相信很多小伙伴和我一样,也是用Json字符串或者Hash存储, 其实这里说的用MSET和MGET也是一个不错的选择;

分布式锁,主要利用SETNX命令限制,SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写,但光用这个远远不够,还需要考虑业务其他相关场景;

计数器,主要用作文章的浏览次数,页面访问量等;

 

Hash数据结构 具体命令使用参考http://redisdoc.com/hash/index.html

 

Hash应用场景

做对象缓存

 

 电商购物车

 

 每个人的购物车,以用户id为key,商品id为field,商品数量为value,其他信息可以通过商品id到数据库中获取详细信息,前端异步调用接口即可。

Hash优缺点:

 

 

 

 

List 数据结构 --具体命令使用参考http://redisdoc.com/list/index.html

 

 List应用场景

 

 通过命令组合,和模拟实现常用数据结构,栈、队列、阻塞队列

 

实现模拟

 

 消息流,关注多个人,消息时间不一样,后台会根据发送消息时间顺序,定时给每个关注用户一条一条发信息,而不是一下发送。

 

Set数据结构--具体命令参考http://redisdoc.com/set/index.html

 

 Set应用场景

抽奖活动ID为LuckyDraw,点击参与抽奖的时候,将对应用户加到抽奖集合中,通过SMEMBERS 抽奖活动ID 获取参与人数,通过SRANDMEMBER 抽奖活动ID或SPOP 抽奖活动ID 进行抽奖。  这样的设计真的比用程序方便多,之前做过一个抽奖程序,用代码和数据库实现,做的东西挺多的。

 

 

 

 

 

 

 

 

 

 

 

 

这里是把所有维度的内容都预先加载到集合中,然后通过集合运算进行过滤,这里只是一种思路,真正这样做的话其实得考虑可行性。

 

 

 

有序集合zset数据结构--具体命令请参考http://redisdoc.com/sorted_set/index.html

 

 有序集合zset的使用场景

 

 

总结

 

 Redis基本的数据结构应用场景先记录那么多,以上记录的使用场景,我觉得给大家提供的是一种思路,希望大家不要局限于这些,大家根据自己的业务使用吧!!!