1.前言
今天是2022年10月5日已经是国庆的第6天了,不知道的各位读者朋友的假期时光是否愉快,在快活的同时各位读者朋友记得不要耽搁了学习,假期可是弯道超车的好机会,今天小编就带领大家一起复习一遍Redis中的五大数据类型之一的Set集合
的一些基础命令。
Redis中的五大类型
在开篇之前防止一些小傻蛋连Redis中的五大类型都不记得了,这里小编还是简单的介绍一下Redia中的五大类型,分别是 String类型
也就是字符串类型和 Hash类型
和 List类型
, Setl类型
,zset类型
,不知道觉得生涩的小伙伴们是否回忆起了与它们的点滴。
2.Set集合
Redis set对外提供的功能与list类似是一个列表的功能,但是不同于List
的地方在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表。
3.常用命令
1. sadd {key} {value} {value} {value}…
使用 sadd <key><value1><value2> ..... 命令 将一个或者多个元素添加到集合中
如果集合中原本就是存在要储存的元素 则该元素将会被忽略 因为 Set集合中的元素是不能重复的
假如执行 sadd set 1 2 3 4 5 6 数据库存储的格式是 1 2 3 4 5 6
2. smembers {key}
使用 smembers <key> 命令 取出对应set集合中的所有值
如果进行取值 如果取出上面命令存储的值的话 输出格式为 1 2 3 4 5 6
3. sismember {key} {value}
使用 sismember <key> <value> 命令 判断集合 <key> 中是否有 <value>
有的话返回 1 没有则返回 0
4. scard {key}
使用 scard <key> 命令 返回该集合中的元素个数
5. srem {key} {value1} {value2} …
使用 srem <key><value1><value2> .... 命令 可以删除集合中的一个或者多个元素
返回的是删除元素的个数
6. spop {key}
使用 spop <key> 命令 随机从对应集合中吐出一个值
吐出的值将不会存储在集合中 如果值取完了集合将自动删除
7. srandmember {key} {n}
使用 srandmember <key> <n> 命令 随机从集合中取出 n 个值
取出的元素不会从集合中删除
8. smove {source} {destination} value
使用 smove <source> <destination> value 命令 把集合中的一个值移动到另一个集合中
将 value 从 {source} 集合中移动到 {destination} 集合中
移动的元素将不会继续存储在原集合中
如果移动过去元素该集合中原本就有 则该操作被忽略 但移动的元素还是会被原集合删除
9. sinter {key1} {key2}
使用 sinter <key1> <key2> 命令 返回两个集合的交集元素
就是取出两个集合中相同的元素
10. sunion {key1} {key2}
使用 sunion <key1> <key2> 命令 返回两个集合中的并集
可以理解为 将两个集合的元素整合在一起 但是set集合元素是不能重复的 则相同的元素都会变成一个元素
然后返回
11. sdiff {key1} {key2}
使用 sdiff <key1> <key2> 命令 返回两个集合元素的 差集
返回 key1 中不包含在 key2 中的元素
4.底层数据结构
Set数据结构是dict字典,字典是用哈希表实现的。
Java中HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象。Redis的set结构也是一样,它的内部也使用hash结构,所有的value都指向同一个内部值。
5.结尾
本篇博客就写到这里了,感谢各位读者的阅读,Redis中的基本类型已经介绍三个了,后续专栏将继续介绍Redis中的 Hash类型
和 zset类型
感兴趣的小伙伴可以给小编的专栏点个关注,后续将会更新更多优质内容,已经是国庆假期的第六天了,各位小伙伴可以尽快恢复状态开始卷了。