Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

sadd set value..:向set集合中添加一个或者多个元素
127.0.0.1:6379> sadd myset zhangsan
(integer) 1
127.0.0.1:6379> sadd myset lisi wangwu
(integer) 2
************************************************************************
scard set:获取set集合中元素的个数
127.0.0.1:6379> scard myset
(integer) 3
************************************************************************
sdiff set1 set2:返回第一个集合中和第二个集合不同的元素
127.0.0.1:6379> sadd myset1 zhangsan
(integer) 1
127.0.0.1:6379> sadd myset1 zhangliu
(integer) 1
127.0.0.1:6379> sadd myset1 lijiu
(integer) 1
127.0.0.1:6379> sdiff myset myset1
1) "wangwu"
2) "lisi"
127.0.0.1:6379> sdiff myset1 myset
1) "zhangliu"
2) "lijiu"
************************************************************************
sdiffstore destinate set1 set2:返回第一个和第二个集合的差集保存在destinate中。
127.0.0.1:6379> sdiffstore myset2 myset1 myset
(integer) 2
127.0.0.1:6379> smembers myset
1) "wangwu"
2) "lisi"
3) "zhangsan"
127.0.0.1:6379> smembers myset1
1) "lijiu"
2) "zhangliu"
3) "zhangsan"
127.0.0.1:6379> smembers myset2
1) "zhangliu"
2) "lijiu"
127.0.0.1:6379> sdiffstore myset2 myset1
(integer) 3
127.0.0.1:6379> smembers myset2
1) "zhangliu"
2) "lijiu"
3) "zhangsan"
************************************************************************
可以指定与多个集合的差集
127.0.0.1:6379> sadd set1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd set2 4 5 6  7
(integer) 4
127.0.0.1:6379> sadd set3 7 8 9 10
(integer) 4
127.0.0.1:6379> sdiffstore set4 set1 set2 set3
(integer) 3
127.0.0.1:6379> smembers set4
1) "1"
2) "2"
3) "3"
************************************************************************
sinter set1 set2 set3 :返回所有集合的交集
127.0.0.1:6379> sinter set1 set2
1) "4"
************************************************************************
sinterstore des set..:把set的交集放在des中
127.0.0.1:6379> sinterstore set5 set1 set2
(integer) 1
127.0.0.1:6379> smembers set5
1) "4"
************************************************************************
sismember set value:查看value是不是set中的元素
127.0.0.1:6379> sismember set1 4
(integer) 1
127.0.0.1:6379> sismember set1 5
(integer) 0
127.0.0.1:6379> sismember set1 2
(integer) 1
************************************************************************
smove source dest member:把集合中的元素移动到另一个集合中
127.0.0.1:6379> smembers set1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> smembers set2
1) "4"
2) "6"
3) "7"
127.0.0.1:6379> smove set1 set2 2
(integer) 1
127.0.0.1:6379> SMEMBERS set1
1) "1"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379> SMEMBERS set2
1) "2"
2) "4"
3) "6"
4) "7"
************************************************************************
spop set num:弹出set集合中指定数量的元素
127.0.0.1:6379> spop set1 5
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> smembers set1
(empty array)
127.0.0.1:6379> sadd set1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> spop set1 1
1) "4"
127.0.0.1:6379> spop set1 1
1) "2"
************************************************************************
srandmember set num:从set中随机返回num个元素
127.0.0.1:6379> srandmember set1
"3"
127.0.0.1:6379> srandmember set1 2
1) "3"
2) "1"
127.0.0.1:6379> srandmember set1 2
1) "3"
2) "5"
************************************************************************
srem set value..:删除集合中指定的元素(一个或多个)
127.0.0.1:6379> srem set1 1
(integer) 1
127.0.0.1:6379> smembers set1
1) "3"
2) "5"
127.0.0.1:6379> srem set1 3
(integer) 1
127.0.0.1:6379> smembers set1
1) "5"
************************************************************************
flushdb:删除这个表中的所有数据
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty array)
************************************************************************
sunion set1 set2:返回所有给定集合的并集
127.0.0.1:6379> sadd set1 1 2 3
(integer) 3
127.0.0.1:6379> sadd set2 4 5 6
(integer) 3
127.0.0.1:6379> sunion set1 set2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
************************************************************************
sunionstore dest set1 set2 ..:将后面集合的并集放入dest中
127.0.0.1:6379> sunionstore set3 set1 set2
(integer) 6
127.0.0.1:6379> smembers set3
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
************************************************************************
sscan set cursor:迭代集合中的元素
127.0.0.1:6379> sscan set1 0
1) "0"
2) 1) "1"2) "2"3) "3"
127.0.0.1:6379> sscan set3 0
1) "0"
2) 1) "1"2) "2"3) "3"4) "4"5) "5"6) "6"
127.0.0.1:6379> sscan set3 0
1) "0"

Redis 有序集合(sorted set)(zset)
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

************************************************************************
zadd zset1 score1 value1 score2 value2..:向zset中添加元素
127.0.0.1:6379> zadd key1 2 zhangsan 1 lisi
(integer) 2
127.0.0.1:6379> zadd key1 2 wangwu
(integer) 1
************************************************************************
zcard zset:获取集合中的元素个数
127.0.0.1:6379> zcard key1
(integer) 3
************************************************************************
zcount zset min max:获取分数在指定区间的元素个数
127.0.0.1:6379> zcount key1 1 2
(integer) 3
127.0.0.1:6379> zcount key1 1 1
(integer) 1
************************************************************************
zincrby zset increment member:向zset集合中增加指定元素的分数
127.0.0.1:6379> zincrby key1 2 lisi
"3"
************************************************************************
zinterstore dest num zset1 zset2 :将num个zset中的对应相同的key的score相加存在dest中。
127.0.0.1:6379> zadd set1 23 lisi 25 mike
(integer) 2
127.0.0.1:6379> zadd set2 45 lisi 55 mike
(integer) 2
127.0.0.1:6379> zinterstore set3 2 set1 set2
(integer) 2
127.0.0.1:6379> zrange set3 0 -1 withscores
1) "lisi"
2) "68"
3) "mike"
4) "80"
************************************************************************
zrange zset min max withscores:返回zset中的元素
127.0.0.1:6379> zrange set3 0 -1
1) "lisi"
2) "mike"
127.0.0.1:6379> zrange set3 0 -1 withscores
1) "lisi"
2) "68"
3) "mike"
4) "80"
************************************************************************
zrange zset min max withscores:查看指定区间内zet集合中的元素,包括scores
127.0.0.1:6379> zrange set3 0 -1 withscores
1) "lisi"
2) "68"
3) "mike"
4) "80
************************************************************************
zrangebuscore zset min max withscores:返回指定分数区间内的元素
127.0.0.1:6379> zrangebyscore set3 68 80 withscores
1) "lisi"
2) "68"
3) "mike"
4) "80"
127.0.0.1:6379> zrangebyscore set3 68 70 withscores
1) "lisi"
2) "68"
************************************************************************
zrak zset member:返回指定成员的索引
127.0.0.1:6379> zrank set3 mike
(integer) 1
127.0.0.1:6379> zrank set3 lisi
(integer) 0
************************************************************************
zrem zset member:删除zset中指定的成员
127.0.0.1:6379> zrem set3 lisi
(integer) 1
127.0.0.1:6379> zrange set3 0 -1 withscores
1) "mike"
2) "80"
************************************************************************
zremrangebyrank zset minscore maxascore:删除指定排名区间的元素
127.0.0.1:6379> zrange set3 0 -1 withscores
1) "mike"
2) "80"
127.0.0.1:6379> zremrangebyrank set3 0 100
(integer) 1
127.0.0.1:6379> zrange set3 0 -1 withscores
(empty array)
************************************************************************
zrangebyscore zset min max:删除指定分数区间的元素
127.0.0.1:6379> zrevrange set3 0 -1 withscores
1) "lisi1"
2) "66"
3) "lisi"
4) "55"
5) "lisi2"
6) "53"
127.0.0.1:6379> zremrangebyscore set3 52 54
(integer) 1
127.0.0.1:6379> zrevrange set3 0 -1 withscores
1) "lisi1"
2) "66"
3) "lisi"
4) "55
************************************************************************
zrevrangebyscore zset max min withscores:倒序返回指定分数区间的元素
127.0.0.1:6379> zrevrangebyscore set3 1000 9 withscores
1) "lisi1"
2) "66"
3) "lisi"
4) "55"
************************************************************************
zrank zset member:返回指定成员在zset中的正序的索引
zrevrank zset member:返回指定成员在zset中的正序的索引
127.0.0.1:6379> zrank set3 lisi
(integer) 0
127.0.0.1:6379> zrank set3 lisi1
(integer) 1
127.0.0.1:6379> zrevrank set3 lisi1
(integer) 0
127.0.0.1:6379> zrevrank set3 lisi
(integer) 1
************************************************************************
zscore zset member:返回集合中指定成员的分数
127.0.0.1:6379> zscore set3 lisi
"55"
127.0.0.1:6379> zscore set3 lisi1
"66"
************************************************************************
迭代有序集合中的元素
127.0.0.1:6379> zscan set3 0
1) "0"
2) 1) "lisi"2) "55"3) "lisi1"4) "66"
************************************************************************

Redis关于Set及Zset集合命令的学习相关推荐

  1. Redis 常用数据类型之 zset(有序集合)

    Redis 常用数据类型之 zset(有序集合) 有序集合 zset(sorted-set)相关特性 redis 有序集合 zset 与 无序 set 类型的一样,都是 string 类型的集合元素, ...

  2. Redis有序集合命令ZREMRANGEBYLEX详解与应用

    Redis有序集合命令ZREMRANGEBYLEX详解与应用 本文是我在Redis中文网翻译团队翻译redis命令的相关内容,也是取得翻译团队同意后在CSDN同步发表 redis.cn翻译团队 也欢迎 ...

  3. Redis有序集合命令ZRANGEBYLEX详解与应用

    Redis有序集合命令ZRANGEBYLEX详解与应用 1 简介 ZRANGEBYLEX 返回指定成员区间内的成员 此指令适用于分数相同的有序集合中 LEX结尾的指令是要求分数必须相同 2 语法 2. ...

  4. Redis中的数据结构与常用命令

    开发系统:Ubuntu 17.04 Redis驱动:StackExchange.Redis 1.2.3 Redis版本:3.2.1 开发平台:.NET Core 对于Redis的介绍这里只写一句:Re ...

  5. Redis数据库的部署及常用命令

    Redis数据库的部署及常用命令 一.关系数据库和非关系数据库 1.1 关系型数据库 1.2 非关系型数据库 1.2.1 非关系型数据库的产生背景 1.2.2 关系型数据库和非关系型数据库区别 1)数 ...

  6. Java中使用redis的完整实例及常用命令

    一.server端安装 1.下载 https://github.com/MSOpenTech/redis 可看到当前可下载版本:redis2.6 下载windows平台文件: 解压后,选择当前64位w ...

  7. Redis的list,set,zset类型应用及排行榜的实现

    Redis数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等 List类型 简介 ​ Lis ...

  8. Redis 常用命令的学习

    Redis 常用命令的学习 文章目录 Redis 常用命令的学习 1. 介绍 2. Redis 的五种数据类型以及操作命令 1. 连接 2. Redis的key的操作命令 3.字符串类型:string ...

  9. java获取zset_Redis Set和ZSet常用命令

    Redis Set和ZSet常用命令 Set 1. SADD :添加多个元素到集合中 127.0.0.1:6379> sadd goodfood "potato" " ...

最新文章

  1. 2020中国Ray技术峰会丨取代Spark,Michael Jordan和Ion Stoica提出下一代分布式实时机器学习框架...
  2. SAP系统未清账和已清账的区分
  3. springboot学习笔记(五)
  4. asp.net 跨页面传值(一)
  5. mysql日期格式转换
  6. 浮点数比较大小的时候不能直接用等号
  7. SQL中 NVL()函数的使用
  8. Pandownload作者被抓后,我决定用docker搭建一款私有网盘
  9. 阿里云在安全方面有哪些防护措施
  10. echarts 文本标签配置、label文字样式
  11. 【渝粤题库】陕西师范大学202141规制经济学 作业(高起专)
  12. 从苹果封杀Epic与特斯拉硬刚拼多多看新时代的渠道产品战
  13. zookeeper报错Have smaller server identifier, so dropping the connection
  14. 拉普拉斯金字塔图像融合原理
  15. 【408计算机考研】|【2018统考真题-41】| 给定一个含 n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数
  16. 编程中的匈牙利命名法
  17. ZUCC_计算机系统原理实验_实验五 位运算
  18. 每周全球科技十大新闻(2021.1.18-1.24)
  19. 服务器esxi虚拟机升级,ESXi 服务器安装升级补丁
  20. 电磁兼容入门篇之基础知识

热门文章

  1. [FineReport]重复与冻结设置
  2. Excel筛选后数据如何汇总计算?
  3. 案例 | 即刻智能助力合肥燃气集团迈入“燃气大数据时代”
  4. 台式计算机cpu是什么,台式电脑CPU怎么看好坏?台式电脑处理器好坏从这几个方面判断...
  5. 惠普暗影精灵 8 台式机 评测
  6. 最全的豆丁网使用常见问题帮助手册
  7. java-net-php-python-jsp卫浴网站管理系统演示录像2019计算机毕业设计程序
  8. 怎么压缩pdf文件?选对方法其实很简单!
  9. 国赛论文解读(二)-国赛选手是如何读论文的?
  10. git 为单个项目设置用户名与邮箱