Redis Set集合定义
Redis Set是存储String类型的无序集合,不存在重复的元素,最大存储数量2^32-1(40亿左右)。
Redis Set集合命令
Redis Set常用命令如下:
Redis Set常用命令 |
命令语法 |
添加值 |
sadd key values |
查看值 |
smembers key |
检查集合是否有值 |
sismember key value |
查看set集合里面的元素个数 |
scard key |
删除集合中的指定元素 |
srem key value |
随机弹出某个元素 |
srandmember key |
随机出栈 |
spop key |
把key1中的某个值赋值给key2 |
smove SourceSet destSet membe |
示例如下:
redis 127.0.0.1:6379> SADD name mikechen (integer) 1 redis 127.0.0.1:6379> SADD name mikechen (integer) 1 redis 127.0.0.1:6379> SADD name ada (integer) 1 redis 127.0.0.1:6379> SADD name ada (integer) 0 redis 127.0.0.1:6379> SMEMBERS name 1) "mikechen" 2) "ada"
Redis Set集合实现
Redis 中集合底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表。
当满足如下两个条件的时候,采用整数集合实现:
- Set 集合中的所有元素都为整数;
- Set 集合中的元素个数不大于 512;
整数集合实现原理图:
一旦有一个条件不满足时则采用哈希表来实现,如下图所示:
Redis Set集合应用
Set 类型比较适合用来数据去重和保障数据的唯一性,还可以用来统计多个集合的交集、错集和并集等,当我们存储的数据是无序并且需要去重的情况下,比较适合使用集合类型进行存储。
比如:
- 统计网站uv;
- 统计共同好友;
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》