在实际的业务中,大家大多都是把redis作为缓存来使用的。但是大家有没有想过把redis作为其他的形式来使用呢?现在我们给大家介绍下redis在实际应用场景里面,不仅限于作为缓存使用,我们还可以用来做很多数据库相关的使用。从本文开始,我们结合实际的使用场景来给大家介绍下redis实际场景里面更多的使用方法。本文我们介绍的主要是求差集的应用场景。
场景介绍
在微博整个系统里面,张三这个用户在2023年7月5日总共有100个粉丝,在2023年7月6日总共105个粉丝,但是从后来日志来看,张三这个用户在2023年7月6日有20次被关注记录。那么基于这个场景,既然是被关注了20次,是不是增加了20个粉丝呢?但是总共的粉丝只有105个,说明新增的粉丝只有5个,但是转念一想,这个两边的统计都不对,有的粉丝可能是取消了关注然后又重新关注的。此时我们想要统计2023年7月6日相对2023年7月5日到底新增了多少粉丝怎么统计呢?
需求分析
此时我们想要统计2023年7月6日相对2023年7月5日到底新增了多少粉丝,其实主要就是把7月5号的人和7月6号的人都拿出来,然后比较下差集即可。
redis设计方案
在介绍redis设计方案之前,我们首先介绍下mysql的设计方案,如果是mysql的话,我们是不是要记录下每天关注的人,这样子数据库的存储是不是特别多,这种实际的应用场景一般也就是比较今天和昨天之间的差异,或者昨天与前天之间的差异,其他的差异几乎不用统计对吧?所以思考下用mysql这种存储真的合适吗?
在redis里面,我们可以用userid:日期:${id}作为key,然后把当天对应的新增粉丝都存储在redis的集合里面去就可以了,示例图如下:
redis方案详细步骤
这里的话我们首先把每天的新增粉丝都插入到redis的set集合里面去,然后使用sdiff函数比较差集即可。
详细步骤
1)把2023年7月5号增加的粉丝添加到set集合里面去
sadd userid:20230705:1 1 2 3 4 5 6
2)把2023年7月6号增加的粉丝添加到set集合里面去
sadd userid:20230706:1 7 1 8 6 4 2 9
3)再比较下2023年7月6日相对于7月5日新增的粉丝
sdiff userid:20230706:1 userid:20230705:1
这样子统计出来了,此时统计的数据才是真实的新增的粉丝数。
备注:
1、这里我们主要是合理的使用的redis的set集合的求差集的部分
还没有评论,来说两句吧...