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. rsync配置与应用(转)
  2. Windows 系统下Git安装图解
  3. python 自动输入_Python自动输入【新手必学】
  4. 老男孩爬虫实战密训课第一季,2018.6,初识爬虫训练-实战1-爬取汽车之家新闻数据...
  5. 用得最多的冒泡排序是不是少了个关键点?
  6. 4.kibana部署
  7. springmvc+druid+dataSource配置的两种方式
  8. css实现背景全透明样式
  9. toString方法和valueOf方法以及Symbol.toPrimitive方法的学习
  10. 计算机二进制技巧,计算机中十进制转二进制的相关技巧
  11. 计算机ram和rom的工作原理,RAM和ROM的作用与区别详细说明
  12. python hist函数_Python Pandas.DataFrame.hist()用法及代码示例
  13. Linux 上配置 SQL Server Always On Availability Group
  14. eclipse安装说明
  15. 推荐系统深度学习实战之Wide_Deep
  16. TiDB数据库要点及练习
  17. 学会如何管理和保护布线系统
  18. NSGA2 Matlab toolbox
  19. 2021年英文SEO外部链接该如何搭建?
  20. 跨链技术的分析和思考

热门文章

  1. 【实操演练】平民玩家借力AI生成美少女图片
  2. 干货分享|基于模型的系统工程(MBSE)介绍
  3. C语言中多种指针相关类型详解
  4. 微信小程序后台音乐播放注意事项
  5. 如何修改服务器cpu主频,服务器cpu参数怎么看【图文】
  6. 三星推出复联主题Galaxy S10保护套和配件
  7. 【ASE入门学习】ASE入门系列二十五——努努冰球材质复刻
  8. 有哪些“我爱你”的高级表达?
  9. 吴恩达-神经网络和深度学习课程-学习心得(一)
  10. 用星号输出一个等腰梯形