redis(一)数据类型之set
1.set类型的特点和意义?
存储大量的数据、相比于list在查询方面提供更高的效率、无序集合、元素唯一性(适用于多种业务场景)。
2.set与hash的区别和联系?
set本质上就是去掉value而已field来保存属性的hash。
3.基本操作
增加元素并创建set:sadd key value1 value2 …(若成功返回1,失败则报错)
返回指定set的全部数据: smembers key(若成功返回数据,失败则报错)
删除set中的指定数据: srem key value(若成功则返回1,失败返回0)
返回set中的元素个数: scard key
判断该元素是否在set中:sismember key value(若是则返回1,否则返回0)
4.扩展操作
4.1 操作随机数据(适用于随机推荐等业务场景)
随机获取set中指定数量的数据: srandmember key count
随机获取集合中的某个数据并将该数据移出集合:spop key
业务场景举例并分析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jYmsaamu-1628088216147)(C:\Users\Administrator\Desktop\note\img\Snipaste_2021-08-04_22-10-40.png)]
4.2 集合交并差操作
返回两个集合交集(key1交key2): sinter key1 key2
返回两个集合并集(key1并key2): sunion key1 key2
返回两个集合差集(key1 - key2): sdiff key1 key2
存储两个集合交集:sinterstore key1 key2(成功返回1)
存储两个集合并集:sunionstore key1 key2(成功返回1)
存储两个集合差集:sdiffstore key1 key2(成功返回1)
将指定数据从原始集合移动到目标集合: smove source destination member
业务场景举例:
利用set元素唯一性与交并差操作可以适合相当多的业务场景,例如单一用户多重角色的权限管理、网站pv、uv 、 ipv等数据统计。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-flRaqagd-1628088216148)(C:\Users\Administrator\Desktop\note\img\Snipaste_2021-08-04_22-30-17.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bbAQuvGi-1628088216151)(C:\Users\Administrator\Desktop\note\img\Snipaste_2021-08-04_22-22-06.png)]
d-1628088216148)]
[外链图片转存中…(img-bbAQuvGi-1628088216151)]