redis数据类型-set/zset

前言

redis 提供了set、 zset 区别在于有序和无序。 列举下常用命令

无序集合Set

set 无需不可重复集合,应用去重、抽奖、共同关注、好友推荐等

set 常用命令

  • sadd: 存储一个或多个数据,不可重复
  • smembers: 查看set集合的元素
  • sismember: 判断某一个元素是否属于set集合
  • scard: 集和元素个数
  • srem:删除集和中某个元素
  • srandmember: 集和中随机返回一个或多个元素, 可用作抽奖
  • smove: 集和之间元素移动
  • sdiff: 差值
  • sinter: 交集
  • sunion: 并集

应用

  1. 抽奖
  2. 共同关注
  3. 好友推荐

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

版权声明:本文为u010519674原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。