前言
redis 提供了set、 zset 区别在于有序和无序。 列举下常用命令
无序集合Set
set 无需不可重复集合,应用去重、抽奖、共同关注、好友推荐等
set 常用命令
- sadd: 存储一个或多个数据,不可重复
- smembers: 查看set集合的元素
- sismember: 判断某一个元素是否属于set集合
- scard: 集和元素个数
- srem:删除集和中某个元素
- srandmember: 集和中随机返回一个或多个元素, 可用作抽奖
- smove: 集和之间元素移动
- sdiff: 差值
- sinter: 交集
- sunion: 并集
应用
- 抽奖
- 共同关注
- 好友推荐
set 用法
127.0.0.1:6379>
127.0.0.1:6379> sadd myset a
1
127.0.0.1:6379> sadd myset b c d a
3
127.0.0.1:6379> smembers myset
a
c
d
b
127.0.0.1:6379> sismember myset e #元素是否存在
0
127.0.0.1:6379> sismember myset a
1
127.0.0.1:6379> scard myset # 元素长度
4
127.0.0.1:6379> srem myset e # 集和中移出某个元素,不存在返回0 成功1
0
127.0.0.1:6379> srem myset a
1
127.0.0.1:6379> smembers myset
c
d
b
127.0.0.1:6379> srandmember myset 2 # 集和中随机返回2个值,默认是1,
c
b
127.0.0.1:6379> sadd dset e f g h j a #新建一个dset 集和
6
127.0.0.1:6379> smembers dset
h
e
a
f
g
j
127.0.0.1:6379> smove myset dset a # 从一个集和移动元素到另一个集和,目的集和元素已存在移动失败
0
127.0.0.1:6379> smove myset dset b
1
127.0.0.1:6379> smembers myset
c
d
127.0.0.1:6379> sadd set1 1 2 3 4 6
5
127.0.0.1:6379> sadd set2 2 4 7 8 9
5
127.0.0.1:6379>
127.0.0.1:6379> smembers set1
1
2
3
4
6
127.0.0.1:6379> smembers set2
2
4
7
8
9
127.0.0.1:6379> sdiff set1 set2 # 只存在set1 差集, sdiff set2 set1 结果不一样
1
3
6
127.0.0.1:6379> sinter set1 set2 # 交集
2
4
127.0.0.1:6379> sunion set1 set2 # 并集
1
2
3
4
6
7
8
9
127.0.0.1:6379>
有序集和ZSet
zset 在set 集和基础上增加了一个分值(权重),用于排序、统计、区间查找
zset命令
- zadd: 添加元素
- zrange: 查看值
- zrangebyscore: 按照分值排序
- zrem: 移除有序集合中的一个或者多个元素
- zcard: 计算集合中的元素的数量
- zcount: 统计指定分区之间的成员数量
zset 测试
127.0.0.1:6379> zadd myzet 10 a 100 b 6 c 12 d 50 f
(integer) 5
127.0.0.1:6379> zrange myzet 0 10
1) "c"
2) "a"
3) "d"
4) "f"
5) "b"
127.0.0.1:6379> zrangebyscore myzet 0 100 withscores # 按照分值排序
1) "a"
2) "10"
3) "d"
4) "12"
5) "f"
6) "50"
7) "e"
8) "70"
127.0.0.1:6379> zrem myzet b c # 移出b c 两个元素
(integer) 2
127.0.0.1:6379> zcard myzet # 元素个数
(integer) 4
127.0.0.1:6379> zcount myzet 50 80 #区间按照分值统计
(integer) 2