Redis的集合以无序的方式来存储多个各不相同的元素,用户可以快速地对集合执行添加、移除元素操作以及检查一个元素是否存在于集合里。...Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。...当集合 key 不是集合类型时,返回一个错误。注意:在Redis2.4版本以前, SADD 只接受单个成员值。...SMOVE 是原子性操作。如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。...该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 Srandmember 则仅仅返回随机元素,而不对集合进行任何改动 SREM key member1 [member2] 用于移除集合中的一个或多个成员元素
接口 redisTemplate.opsForSet() 增加元素 redisTemplate.opsForSet().add(key, value); 删除元...
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。...redis正是通过分数来为集合中的成员进行从小到大的排序 另外有序集合和散列存储着键与值之间的映射类似,有序集合也存储着成员与分值之间的映射,并且提供了分值处理命令,这些分值在Reids中以IEEE754...如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。...注意: 在 Redis 2.4 版本以前, ZADD 每次只能添加一个元素。...注意: 在 Redis 2.4 版本以前, ZREM 每次只能删除一个元素。
文章目录 一、有序集合 Zset 二、查询操作 1、查询 Zset 所有数据 2、查询 Zset 所有数据和评分 3、查询指定评分范围的 Zset 数据 4、查询指定评分范围的 Zset 数据并从大到小排序...5、统计指定评分范围的 Zset 数据个数 6、查询指定元素在 Zset 有序集合中的排名 三、增加操作 1、向 Redis 中插入 Zset 有序集合 四、删除操作 1、删除指定元素 五、修改操作...1、修改元素评分 一、有序集合 Zset ---- 有序集合 Zset 与 普通集合 Set 类似 , 都是 没有重复元素的集合 ; 有序集合 Zset 中的 元素排序 , 是 根据 评分 进行排序...1、查询 Zset 所有数据 执行 zrange student 0 -1 命令 , 可以 从 Redis 中查询 student 键对应的 Zset 有序集合中的所有元素 ; 代码示例 : 127.0.0.1...---- 1、向 Redis 中插入 Zset 有序集合 执行 zadd student 60 Tom 72 Jerry 49 Jack 81 Bill 命令 , 可以 向 Redis 的 student
文章目录 一、哈希 Hash 键值对集合 二、查询操作 1、Redis 中查询 Hash 键值对数据 2、查询 Hash 键是否存在 3、查询 Hash 中所有的键 Field 4、查询 Hash...中所有的值 三、增加操作 1、Redis 中插入 Hash 键值对数据 2、批量插入 Hash 键值对数据 四、修改操作 1、Hash 中 Field 键对应值增减值 2、设置 Hash 中 Field...键对应值 一、哈希 Hash 键值对集合 ---- Redis 中的 Hash 数据 是一个 键值对集合 , 类似于 Java 中的 Map 集合 ; Hash 数据底层数据结构是 : 压缩列表 ZipList...; 键值对区分 : Redis 中的键值对 一般称为 Key=Value , 在 Hash 中的键值对 一般称为 Field=Value ; 二、查询操作 ---- 1、Redis 中查询 Hash...127.0.0.1:6379> hget student age "18" 127.0.0.1:6379> hget student name "Tom" 127.0.0.1:6379> 四、修改操作
集合的性质 唯一性,无序性,确定性(其实和数学中的集合性质一样) 注意,在string和link类型中,可以通过range来访问某个元素,因为集合是无序的,所以无法通过下标索引来访问元素。...a是存在的元素 3:spop key 随机返回集合中的一个元素并且删除该元素 spop members 如果members 为空,则返回空 4:srandmember key 随机返回集合中的一个元素...5:sismember key value 判断value是否在键名为key的集合中 6:smembers key 返回键名为key的集合中的所有元素 7:scard key...10:sinterstore result key1 key2 key3…… 求多个集合的交集,并且赋值给result 11:sunion key1 key2 key3…… 求多个集合的并集...,并返回 12:sdiff key1 key2 key3…… 求多个集合的差集,并返回 感觉redis集合这块没什么好说的,数学里面的集合只要理解了,这块一看就懂,把命令记下来就行
三、集合集合(Set)是Redis提供的一种无序、不重复的数据结构,常用于存储多个元素之间的关系,如朋友列表、标签等。集合可以进行交、并、差等集合运算,也可以判断某个元素是否存在于集合中。...SADDSADD命令用于向集合中添加一个或多个新元素,语法为:SADD key member [member ...]其中,key为集合的键名,member为要添加到集合中的新元素。...SCARDSCARD命令用于返回集合中元素的数量,语法为:SCARD key其中,key为集合的键名。例如,要查询键名为set的集合中元素的数量,可以使用以下命令:SCARD set3.3....SMEMBERSSMEMBERS命令用于返回集合中的所有元素,语法为:SMEMBERS key其中,key为集合的键名。...SPOPSPOP命令用于随机弹出集合中的一个元素,并返回该元素的值,语法为:SPOP key其中,key为集合的键名。
#coding:utf8 import redis r =redis.Redis(host="23.226.74.190",port=63279,password="66666666666") 1.Zadd...如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。 当 key 存在但不是有序集类型时,返回一个错误。...dest集合,如果遇到相同值不同分数,则按照aggregate进行操作 # aggregate的值为: SUM MIN MAX print r.zinterstore("43",("42","41"...当有序集合的所有成员都具有相同的分值时,有序集合的元素会根据成员的 值 (lexicographical ordering)来进行排序,而这个命令则可以返回给定的有序集合键 key 中, 元素的值介于...20.Zscan Zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)返回的每个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成。
Sort Set 排序集合类型: sorted set 排序集合,也就是有序集合 和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个权。...Sort Set 排序集合操作: 启动redis ajy1knz363.png 选择数据库: 微信图片_20211122151634.png 下面我们来看一下sorted set 排序类型的操作: 创建一个排序集合...(权值由小到大排序) 我们把剩下的值也操作一下: 1.png 2.png 可以直接进行添加删除操作: 7.png zrank key member: 返回指定元素在集合中的排名(下标),集合中元素按权由小到大排序...上图可见,共5个元素,13最小,16第二, 所以16的下标为1,18下标为4. 3.png zrevrank key member: 返回指定元素在集合中的排名(下标) 跟上面的zrank操作相同...member是值,score是权,在这里权就是值对应的回复量 基本操作就介绍到这里。 ps关于重复元素: set类型:没有 list链表类型: 有 sort set: 没有
给有序集合key添加元素 zadd class 1 lily 2 lucy 3 david 4 jim 添加之后的结果为 key(score) lily 1 lucy 2 david 3 jim...4 查找相关命令 2:zcard key 返回集合个数 比如上述例子 返回的结果就为4 3:zrank key member 查看member在key中的排名(升序0名开始) zrank...withscores] 跟上面命令一样,唯一的区别就在于,这个是降序排序 7:zrangebyscore key min max [withscores] limit offset n 作用:集合...前面无非就是限制一下score的范围 注意,取出全部 可以用 zrangebyscore key –inf(无穷小) +inf(无穷大) 8:zcount key min max 取出有序集合中
Set集合类型: 所谓的集合好比一个乾坤袋,什么东西都可以放进去,但是每个集合中的各个元素不能重复。...redis的set是string类型的无序集合 set元素最大可以包含(2的32次方-1)个元素 关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection...通过这些操作可以很容易的实现好友推荐功能: 下图所示: 我们用集合把两个人的朋友圈表示出来: Set集合类型操作: 首先我们还是先看一下set类型的操作: sadd key member:...而是取在前面集合中后面集合没有的元素 如下图: 只有tom没有link的 只有link没有tom的 取差集的时候,两个集合的顺序是有区别的!...smove p1 p2 member: 把集合1的元素移动到集合2中、 srem key member: 从集合中删除指定的元素出去 这就是set集合类型的基本操作使用。
文章目录 一、Zset 有序集合数据结构 二、跳跃表 1、普通链表 2、跳跃表 一、Zset 有序集合数据结构 ---- 有序集合 Zset 的 底层 数据结构 类似于 Java 的 Map 数据结构...Map , Zset 中的 元素 是 Map 集合中的 键 ; 元素 关联 的 评分 是 Map 集合中的 值 , Zset 有序集合 底层 是由 Hash 和 跳跃表
命令 集合内操作 添加元素 SADD 自1.0.0可用。 **时间复杂度:**O(N), N 是被添加的元素的数量。...saddTest add3 add5 add7 (integer) 2 127.0.0.1:6379> SMEMBERS saddTest 1) "add4" 2) "add1" 3) "add2" # 执行该操作的不是集合元素...,而是直接使用 Redis 内部的变量来获取集合长度。...该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。...集合间操作 交集 SINTER 自1.0.0可用。 时间复杂度:最差情况:O(N * M), N 为给定集合当中基数最小的集合, M 为给定集合的个数。
文章目录 一、Set 集合数据 二、查询操作 1、获取集合的所有值 2、判断键是否包含值 3、获取集合元素个数 4、随机获取若干元素 5、获取两个集合的交集 6、获取两个集合的并集 7、获取两个集合的差集...三、增操作 1、插入值 四、删操作 1、删除元素 2、删除列表指定个数的指定值 五、修改操作 1、Set 集合之间移动值 一、Set 集合数据 ---- Redis 的 Set 集合数据 , 与...; Redis 的 Set 集合 内部也是由 Hash 实现 , 所有的 值 Value 都指向同一个值 ; 二、查询操作 ---- 1、获取集合的所有值 执行 smembers key 命令 , 可以...4) "16" 5) "Jerry" 6) "18" 127.0.0.1:6379> sdiff name age 1) "Jerry" 2) "Jack" 127.0.0.1:6379> 三、增操作...Jerry Jack (integer) 3 127.0.0.1:6379> smembers name 1) "Jerry" 2) "Tom" 3) "Jack" 127.0.0.1:6379> 四、删操作
Set集合是Redis中的无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据. 集合内元素操作 1....0 match a* 1) "0" 2) (empty list or set) 集合间操作 先准备第二个集合 127.0.0.1:6379> sadd key1 v2 (integer) 1 127.0.0.1...返回多个集合的交集并存储在指定集合中 127.0.0.1:6379> sinterstore key3 key key1 (integer) 1 127.0.0.1:6379> smembers key3...返回给定集合的并集存储在指定集合中 127.0.0.1:6379> sunionstore key4 key key1 (integer) 4 127.0.0.1:6379> smembers key4...将元素从某一集合中移动到目标集合中 127.0.0.1:6379> smove key1 key s1 (integer) 1 127.0.0.1:6379> smembers key1 1) "v2"
Redis有序集合的实现方式是跳表(Skip List),通过在链表建立多级索引,logn的时间复杂度定位到区间起点,然后往后遍历,找到对应的数据。...严格来说,redis的对象系统中的每种对象都是基于场景选择多种数据结构的,比如zset是基于压缩列表 或者 跳跃表+字典,这也体现了Redis对于性能的极致追求。
Redis 支持多种数据结构,比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 集合 相关的命令,也就是关于 Sets 相关的命令,如下图。 ?...上图中用红色圈中的部分,就是关于 集合 相关的命令。如果想要在 Redis 中查看相关的命令也可以使用 help 命令来进行查看,命令如下。...常用 Sets 相关命令 Sets 数据类型是 Key 对应的 Value 的类型,在 Redis 中所有的 Key 都是字符串,所谓的数据类型表示的是 Value 的类型。...,并将结果保存到一个 key 中 14、sdiffstore 获取两个集合的差集,并将结果保存到一个 key 中 总结 Redis 的集合类型提供的命令还是比较多的,它不但可以当作一个集合来用...Redis 常用的几种基本数据类型总结完成后,我会再逐步的梳理 Redis 的各种应用场景,希望大家可以喜欢。 ?
Redis 集合(Set) Redis 的Set是String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。...Redis 中集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是 O(1)。 集合中最大的成员数为2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。...实例 [root@localhost ~]# redis-cli 127.0.0.1:6379> SADD testkey redis (integer) 1 127.0.0.1:6379> SADD...127.0.0.1:6379> SADD testkey mysql (integer) 0 127.0.0.1:6379> SMEMBERS testkey 1) "mysql" 2) "mongodb" 3) "redis...Redis 集合命令 下表列出了Redis集合基本命令: 序号 命令及描述 1 SADD key member1 [member2]向集合添加一个或多个成员 2 SCARD key获取集合的成员数 3
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。 当 key 存在但不是有序集类型时,返回一个错误。 在 Redis 2.4 版本以前, ZADD 每次只能添加一个元素。...CH :返回此次操作后,有序集合元素和分数发生变化的个数 INCR :对 score 做增加,相当于后面介绍的ZINCRBY。...该选项自 Redis 2.0 版本起可用。...ZREMRANGEBYSCORE ztest 80 100 (integer) 3 coderknock> ZRANGE ztest 0 -1 WITHSCORES 1) "kotlin" 2) "120" ## 集合间操作...(默认64字节)时,Redis会用 ziplist 来作为有序集合的内部实现,ziplist 可以有效减少内存的使用。
今天我们了解一下Redis中的集合类型,也就是set集合。在Redis中set也是可以保存多个字符串的。那么set集合和list链表到底有什么不同呢?下面我们重点介绍一下它们之间的不同。...---- 命令 一、集合内操作 1.添加元素 sadd key member [member ...] ?...---- 二、集合间操作 1.集合的交集 sinter key [key ...] ? ---- 2.集合的并集 sunion key [key ...] ?...内部编码 intset(整数集合):当集合中的元素都是整数,并且集合中的元素个数小于512个时,Redis会选用intset作为底层内部实现。...上述命令就是Redis中的集合相关的知识,如有不正确的地方欢迎指出,谢谢。
领取专属 10元无门槛券
手把手带您无忧上云