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
相关推荐
sulikey1 小时前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习
正儿八经的少年1 小时前
redis 的大 key 和热 key 详解
数据库·redis·缓存
治愈系贝壳2 小时前
ARM --- day 6 时钟
linux·arm开发·学习
依然范特东2 小时前
强化学习笔记2--bellman equation
人工智能·笔记
X-⃢_⃢-X2 小时前
十、Redis之布隆过滤器
数据库·redis·缓存
minglie12 小时前
zynq高频小数据量PS闭环的三个实验-第0课:目的和目标
学习
乐观勇敢坚强的老彭2 小时前
信奥C++一维数组笔记
开发语言·c++·笔记
昕光xg3 小时前
Istio笔记04-基于Jaeger的分布式链路追踪
笔记·分布式·istio
劈星斩月3 小时前
监督学习算法 之 决策树
学习·算法·决策树
学计算机的计算基3 小时前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法