Redis学习笔记-Set集合(2)

先赞后看,养成习惯!!! ^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我坚持下去的动力,点赞后不要忘记关注我哦

个人主页:伯明翰java

文章专栏:redis

如有错误,请您指正批评 ^ _ ^

Set集合内部编码

集合类型的内部编码有两种:

• intset(整数集合):当集合中的元素都是整数并且元素的个数⼩于set-max-intset-entries配置(默认512个)时,Redis会选⽤intset来作为集合的内部实现,从⽽减少内存的使⽤。

• hashtable(哈希表):当集合类型⽆法满⾜intset的条件时,Redis会使⽤hashtable作为集合的内部实现。

1)当元素个数较少并且都为整数时,内部编码为intset:

powershell 复制代码
127.0.0.1:6379> sadd setkey 1 2 3 4
(integer) 4
127.0.0.1:6379> object encoding setkey
"intset"

2)当元素个数超过512个,内部编码为hashtable:

powershell 复制代码
127.0.0.1:6379> sadd setkey 1 2 3 4
(integer) 513
127.0.0.1:6379> object encoding setkey
"hashtable"

3)当存在元素不是整数时,内部编码为hashtable:

powershell 复制代码
127.0.0.1:6379> sadd setkey a
(integer) 1
127.0.0.1:6379> object encoding setkey
"hashtable"

使⽤场景

集合类型⽐较典型的使⽤场景是标签(tag)。例如A⽤⼾对娱乐、体育板块⽐较感兴趣,B⽤⼾对历史、新闻⽐较感兴趣,这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签的⼈,以及⽤⼾的共同喜好的标签,这些数据对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助。例如⼀个电⼦商务⽹站会对不同标签的⽤⼾做不同的产品推荐

下⾯的演⽰通过集合类型来实现标签的若⼲功能。

  1. 给⽤⼾添加标签
powershell 复制代码
sadd user:1:tags tag1 tag2 tag5
sadd user:2:tags tag2 tag3 tag5
...
sadd user:k:tags tag1 tag2 tag4
  1. 给标签添加⽤⼾
powershell 复制代码
sadd tag1:users user:1 user:3
sadd tag2:users user:1 user:2 user:3
...
sadd tagk:users user:1 user:4 user:9 user:28
  1. 删除⽤⼾下的标签
powershell 复制代码
srem user:1:tags tag1 tag5
...
  1. 删除标签下的⽤⼾
powershell 复制代码
srem tag1:users user:1
srem tag5:users user:1
...
  1. 计算⽤⼾的共同兴趣标签
powershell 复制代码
sinter user:1:tags user:2:tags
相关推荐
Gorgous—l37 分钟前
数据结构算法学习:LeetCode热题100-动态规划篇(下)(单词拆分、最长递增子序列、乘积最大子数组、分割等和子集、最长有效括号)
数据结构·学习·算法
此生只爱蛋2 小时前
【Redis】持久化
数据库·redis
窗边鸟2 小时前
小白日记之java方法(java复习)
java·学习
burning_maple3 小时前
redis笔记
数据库·redis·笔记
魔芋红茶3 小时前
Spring Security 学习笔记 4:用户/密码认证
笔记·学习·spring
googleccsdn3 小时前
ENSP Pro Lab笔记:配置BGP VXLAN双栈(3)
网络·笔记
海底星光3 小时前
c# 生产者消费者模式之内存/redis队列实现
redis·c#
ABin-阿斌3 小时前
通过 Redisson防止数据重复创建
redis
虹科网络安全3 小时前
艾体宝新闻 | Redis 月度更新速览:2025 年 12 月
数据库·redis·缓存
爱宁~3 小时前
UnityShader学习笔记[二百九十九]UGUI中的Mask遮罩半透明Shader
笔记·学习