Redis(4)----数据类型Set

Redis

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

数据存储类型介绍

String 字符串
Hash 散列
List 列表
Set 集合
Sorted_set 有序集合

Set类型

  • 新的存储需求:存储大量的数据,在查询方面提供更高的效率
  • 需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询

set类型数据的基本操作

添加数据
sadd key member1 [member2]
获取全部数据
smembers key
删除数据
srem key member [member2]
获取集合数据总量
scard key
判断集合中是否包含指定数据
sismember key member

在这里插入图片描述

set类型数据的扩展操作

1.业务场景

每位用户首次使用今日头条时会设置三项爱好的内容,但是后期为了增加用户的活跃性,兴趣点,必须让用户对其他信息类别逐渐产生兴趣,增加客户留存度,如何实现

业务分析
  • 系统分析出各个分类的最新或者最热点信息条目组织成set集合
  • 随机挑选出其中部分信息
  • 配合用户关注信息分类中的热点信息组织成展示的全信息集合
解决方案

随机获取集合中指定数量的数据

srandmember key [count]

随机获取集合中的某个数据并且将该数据移出集合

spop key

在这里插入图片描述
在这里插入图片描述

2.业务场景
  • QQ新用户入网年龄越来越低,这些用户的朋友圈交际圈非常小,往往集中在一所学校甚至一个班级中,如何帮助用户快速积累好友用户带来更多的活跃度
  • 微信公众号是微信信息流通的渠道之一,增加用户关注的公众号成为提高用户活跃度的一种方式,如何帮助用户积累更多关注的公众号
  • 美团外卖为了提升成单量,必须帮助用户挖掘美食需求,如何推荐给用户最适合自己的美食
解决方案
求两个集合的交集 并集 差集
sinter key [key2]
sunion key [key2]
sdiff key [key2]
求两个集合的交,并,差并存储到指定集合中
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
将指定数据从原始集合中移动到目标集合中
smove source destination member

在这里插入图片描述
在这里插入图片描述

set类型数据操作的注意事项

  • set类型不允许数据重复,如果添加的数据再set中已经存在,就只会保留一份
  • set虽然与hash的存储结构相同,但是无法启用hash中存储值的空间
set类型应用场景
业务场景

集团公司具有12000名员工,内部OA系统中具有700多个角色,3000多个业务操作,23000多种数据,每位员工具有一个或者多个角色,如何快速进行业务操作的权限校验?
在这里插入图片描述

解决方案
  • 依赖set集合数据不重复的特征,依赖set集合hash存储结构特征完成数据过滤与快速查询
  • 根据用户id获取用户所有角色
  • 根据用户所有角色获取用户所有操作权限放入set集合
  • 根据用户所有角色获取用户所有数据权限放入set集合
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼爱吃柚子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值