码迷,mamicode.com
首页 > 其他好文 > 详细

Redis 应用场景

时间:2019-12-07 16:39:55      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:srand   font   json   访问   维度   draw   自己的   购物车   href   

前言

这篇主要是记录一下之前看到的一个公开课视频内容,大体讲解的是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基本的数据结构应用场景先记录那么多,以上记录的使用场景,我觉得给大家提供的是一种思路,希望大家不要局限于这些,大家根据自己的业务使用吧!!!

Redis 应用场景

标签:srand   font   json   访问   维度   draw   自己的   购物车   href   

原文地址:https://www.cnblogs.com/zoe-zyq/p/12001843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!