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

浙公网安备 33010602011771号