redis中set的常用操作,功能类似于java中的set
- 向一个set集合中加值
sadd [key] [value1] [value2] ...
# 一系列value中,重复的value不会被重复添加
- 遍历set中的所有元素
smembers [key]
- 检查set中是否有这个元素
sismember [key] [value]
# 检查这个set中是否有value这个元素
- 获取set集合中有是多少个元素
scard [key]
# 没什么好说的额
- 删除集合里的某个元素
srem [key] [value]
# 将set中的value元素删除掉
- 随机从一个set集合中抽取n个元素
srandmember [key] [number]
# 从set集合中随机抽取number个元素
- 随机出栈
spop [key] [可选number]
# 随机从set集合选取一个值提取删除
# 如果输入number就是随机提取number个元素并删除
- 将set1中的某个值移到set2中
smove [set1] [set2] [value]
# 将set1中的value移动到set2中
数学集合
- 差集
sdiff [key] [key1] [key2] [key3] ....
# 将key所代表的set集合中所特有的元素罗列出来
# 对比是key1,key2,key3等
# 也就是说如果key中的元素在后面的那些set集合中没有,则罗列出来
- 交集
sinter [key1] [key2] [key3] [key4] ...
# 必须所有这些set集合都共有的元素,才会被罗列出来
- 并集
sunion [key1] [key2] [key3] [key4] ...
# 所有集合的元素都会被去重后罗列
- 存值的时候,貌似保存进这个set的顺序是无法保证的,可能和java的hashset的算法一样,是无序的,排序顺序可能和hash值的算法有关. 目前set的数据结构还不清楚