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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis中的zset是有序集合,而set是无序集合。 在zset中,每个元素都有一个score字段,通过score和index来进行排序。zset的实现是使用了两种数据结构,分别是跳跃表和字典。跳跃表用于实现元素的有序排列,而字典用于实现元素的唯一性。zset的插入、删除和查找操作的时间复杂度都是O(logN)。 而set是一个无序的字符串集合,集合中的元素不可重复。在set中,元素的插入、删除和查找操作的时间复杂度都是O(1)。set的底层实现是通过哈希表来存储元素,类似于Java中的Hashtable集合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [9. redis 数据结构-set、zset](https://blog.csdn.net/wojiuguowei/article/details/81866600)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Redis学习笔记(九)---Redis数据类型Set 和 Zset](https://blog.csdn.net/TheWindOfSon/article/details/104169173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值