Redis--(四)常用应用场景

Redis-常用场景

一、缓存

        热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据

二、数据共享分布式

        分布式Session,如果一个分布式Web服务将用户的Session信息保存在各自服务器,用户刷新一次可能就需要重新登录了,这样显然有问题。实际上,可以使用Redis将用户的Session进行集中管理,每次用户更新或者查询登录信息都直接从Redis中集中获取

三、分布式锁

        几乎每个互联网公司中都使用了分布式部署,分布式服务下,就会遇到对同一个资的并发访问的技术难题,如秒杀、下单减库存等场景。

        用synchronize或者reentrantlock本地锁肯定是不行的。

        如果是并发量不大话,使用数据库的悲观锁、乐观锁来实现没啥问题。

        但是在并发量高的场合中,利用数据库锁来控制资源的并发访问,会影响数据库的性能。

        实际上,可以用Redis的setnx来实现分布式的锁

四、全局ID

incrby,利用原子性,分库分表的场景,一次性拿一段

五、计数器

文章的阅读量、微博点赞数、允许一定的延迟,先写入Redis再定时同步到数据库

六、用户消息时间线timeline

双向链表,直接作为timeline就好了。插入有序

七、抽奖

spop myset自带一个随机获得值

八、点赞,签到,打卡

微博ID是t1001,用户ID是u3001用 like:t1001 来维护 t1001 这条微博的所有点赞用户点赞了这条微博:sadd like:t1001 u3001

取消点赞:srem like:t1001 u3001

是否点赞:sismember like:t1001 u3001

点赞的所有用户:smembers like:t1001点赞数:scard like:t1001

九、限流

以访问者的ip和其他信息作为key,访问一次增加一次计数,超过次数则返回false

十、位统计

例如:在线用户统计,留存用户统计setbit onlineusers 01 setbit onlineusers 11 setbit onlineusers 20

十一、购物车

key:用户id;field:商品id;value:商品数量。+1:hincr。-1:hdecr。删除:hdel。全选:hgetall。商品数:hlen。

十二、消息队列

List提供了两个阻塞的弹出操作:blpop/brpop,可以设置超时时间blpop:blpop key1 timeout 移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。brpop:brpop key1 timeout 移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

十三、用户推荐,推荐模型

follow 关注 fans 粉丝相互关注:

sadd 1:follow 2 sadd 2:fans 1

sadd 1:fans 2 sadd 2:follow 1

我关注的人也关注了他(取交集):sinter 1:follow 2:fans

可能认识的人:

用户1可能认识的人(差集):sdiff 2:follow 1:follow

用户2可能认识的人:sdiff 1:follow 2:follow

十四、消息发布和订阅

        Redis提供了发布/订阅及阻塞队列功能,能实现一个简单的消息队列系统。另外,这个不能和专业的消息中间件相比,主要用于业务解耦、流量削峰及异步处理实时性低的业务

十五、排行榜

比如,用户每天上传视频,获得点赞的排行榜可以这样设计:

1.用户Jay上传一个视频,获得6个赞,可以酱紫:zadd user:ranking:2021-03-03 Jay 3

2.过了一段时间,再获得一个赞,可以这样:zincrby user:ranking:2021-03-03 Jay 1

3.如果某个用户John作弊,需要删除该用户:zrem user:ranking:2021-03-03 John

4.展示获取赞数最多的3个用户zrevrangebyrank user:ranking:2021-03-03 0 2

十六、商品筛选

 获取差集sdiff set1 set2

获取交集(intersection )sinter set1 set2

 获取并集sunion set1 set2

十七、商品标签

sadd tags:i5001 画面清晰细腻

sadd tags:i5001 真彩清晰显示屏

sadd tags:i5001 流程至极

可能还有其他场景我不清楚的,如果有可以在评论区评论一下,向大家学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值