redis 学习笔记(五) set数据类型
目录
一.set类型的介绍
新的存储需求:存储大量的数据,在查询方面提供更高的效率
需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
set存储空间:(与hash存储机制完全相同,变形而来)
set类型:与hash存储结构完全相同,仅存储键,不存储值nil,并且键的值不许重复
二.set类型数据的基本操作
1.添加数据
sadd key member1 [member2]
2.获取全部数据
smembers key
3.删除数据
srem key member1 [memeber2]
4.获取集合数据总数量
scard key
5.判断集合中是否包含指定数据
sismember key member
三.set类型数据操作随机数据
业务场景
每位用户首次使用今日头条时会设置3项爱好的内容,但是为了增加用户的活跃度,兴趣点,必须让客户呃对其他信息类型逐渐产生兴趣,增加客户留存度
如何实现来提高用户粘性?
业务分析:
1.系统分析出各个分类的最新或最热点的信息组织成set集合
2.随机挑选其中部分数据
3.结合用户关注信息中的热点信息组织成要向该用户展示的信息集合
解决方案:
随机获取集合中指定数量的数据
srandmember key [count]
Spop 命令用于移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素。
SPOP key [count]
Tips8:
redis应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游路线,应用类app推荐,大V推荐等
五.set集合 交并差操作
业务场景
脉脉为了促进用户间的交流,保障业务成单率的提升,需要让每位用户拥有大量的好友,事实上职场新人不具有更多的职场好友,
如何快速让用户积累更多的好友?
新浪微博为了增加用户热度,提高用户留存性,需要微博用户在关注更多的人,以此获取更多的信息或热门的话题,如何提高用户关注
让人的数量?
set集合解决方案
1.求集合的交集,并集,差集
sinter key1 [key2] 交集
sunion key1 [key2] 并集
sdiff key1 [key2] 差集
2.求集合的交,并,差集并存储到指定集合
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
3.将指定数据从原集合中移到目标集合中
smove source destination member
源集合 目标集合 要转移的成员
tips9:redis应用于同类信息中的关联搜索,二度关联搜索,深度关联搜索
显示共同关注(一度)
显示共同好友(一度)
由用户A出发,获取到好友B的好友信息列表(一度)
由用户A出发,获取好友B的购物清单列表(二度)
由用户A出发,获取好友B的游戏充值列表(二度)
六.set实现权限校验
1.set类型不允许重复,如果添加的数据在set中已经存在,将只保留一份(第一次添加成功,第二三四次均失败)
2.set虽然与hash的存储结构相同,但是无法启动hash中储存值的空间
业务场景
集团公司里拥有12000名员工,内部oa系统拥有700多个角色,3000多个业务操作,23000多种数据,每位员工具有一个或多个角色,
如何快速进行业务操作的权限校验?
解决方案:
1.依赖set集合数据不重复的特征,完成数据快速过滤与查询
2.根绝用户id获取用户所有角色
3.根据用户所有角色获取用户所有操作权限放入set集合中
不鼓励业务混到redis中
tips10:
redis应用于同类型不重复数据的合并操作
七. set实现网站访问量统计
业务场景:
公司对旗下的网站做推广,统计网站的pv(访问量),uv(独立访客),ip(独立ip)
pv:网站被访问次数,可通过刷新页面提高访问量
uv:网站被不同用户访问的次数,可通过cookie统计访问量,相同的用户切换ip地址,uv不变
ip:网站被不同ip地址访问的总次数,可通过ip地址统计访问量,相同ip,不同用户访问,ip不变
解决方案:
1.利用set集合的数据去重的特征,记录各种访问数据
2.利用string 类型数据,利用inscr统计日访问量(pv)
3.建立set模型,记录不同的cookie数量(uv)
4.建立set模型,记录不同ip地址数量
tips11:
redis应用于同类型数据的快速去重
set实现黑白名单
业务需求:对用户实现黑白名单的功能
解决方案:
1.基于经营战略设定用户发现,鉴别规则
2.周期性满足规则的用户黑名单,加入set集合
3.用户行为信息满足后与黑名单作对比,确定行为取向
4.黑名单过滤ip地址:
应用于开放游客访问设备权限的信息源
5.黑名单过滤设备信息:应用于限定访问设备的信息源
6.黑名单过滤用户: 应用于基于访问权限的信息源