目录
介绍
命令行模式
增
查
删
改
交集
并集
应用场景
Redis支持五种数据类型:String, Hash, List, Set, ZSet,这个系列介绍一下如何使用这些数据类型,本篇介绍使用命令行模式以及python客户端对redis进行操作,实际项目的过程中也大多是一模一样的用法。
相关内容:
Redis系列(一)、CentOS7下安装Redis6.0.3稳定版
Redis系列(二)、数据类型之字符串String
Redis系列(三)、数据类型之哈希Hash
Redis系列(四)、数据类型之列表List
Redis系列(五)、数据类型之无序集合Set
------------------------Redis有序集合类型----------------------
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。
进入命令行模式:
redis-cli -a password_value
redis-cli -a password_value --raw
--raw 避免中文显示乱码
使用下面的命令查看手册:
help @sorted_set
往有序集合中新增成员,需要指定该成员的分数,分数可以是整形或浮点型,当分数相同时候,索引下标按照字典排序:
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
获取有序集合的成员数:
ZCARD key
从有序集合内获取指定分数区间内的成员数:
ZCOUNT key min max
根据字典排序返回min ,max之间的数据量,具体lex的介绍请参考下面的ZRANGEBYLEX部分:
ZLEXCOUNT key min max
返回有序集中,成员的分数值,不存在的成员返回空:
ZSCORE key member
用于迭代有序集合中的元素(包括元素成员和元素分值)并将匹配到的值返回:
ZSCAN key cursor [MATCH pattern] [COUNT count]
根据下标查看集合内所有成员(及分数),[start,stop]:
ZRANGE key start stop [WITHSCORES]
通过字典区间返回有序集合的成员:
min:字典中排序位置较小的成员,必须以"[" 或者以"("开头,可使用"-"代替, "["代表闭区间,"("代表开区间
max:字典中排序位置较大的成员,必须以"[" 或者以"("开头,可使用"+"代替, "["代表闭区间,"("代表开区间
不要在分数不一致的SortSet集合中去使用 ZRANGEBYLEX 指令,因为获取的结果并不准确。
limit offset count: 分片查询,limit为关键字,offset表示从结果集的哪个下标开始分片,count表示分片的数据量。
ZRANGEBYLEX key min max [LIMIT offset count]
根据分数查看集合内所有成员(及分数),[start,stop]:
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
返回有序集合中指定成员的索引(下标):
ZRANK key member
与zrange功能类似,不同的是zrevrange会将集合先反序[reverse]之后再执行zrange返回:
ZREVRANGE key start stop [WITHSCORES]
结合zrangebylex和zrevrange功能。反序通过字典区间返回有序集合的成员:
ZREVRANGEBYLEX key max min [LIMIT offset count]
结合zrangebyscore和zrevrange功能。反序通过分数区间返回有序集合的成员:
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
结合zrank和zrevrange功能。反序返回有序集合中指定成员的索引(下标):
ZREVRANK key member
redis5版本之后的新功能。从集合中弹出分数最高的成员,返回该成员和分值,然后从集合中将其移出:
ZPOPMAX key [count]
redis5版本之后的新功能。与zpopmax相反,从集合中弹出分数最低的成员,返回该成员和分值,然后从集合中将其移出:
ZPOPMIN key [count]
redis5版本之后的新功能。在参数中的所有有序集合均为空的情况下,阻塞连接。参数中包含多个有序集合时,按照参数中key的顺序,返回第一个非空key中分数最大的成员和对应的分数。参数 timeout
可以理解为客户端被阻塞的最大秒数值,0 表示永久阻塞。
BZPOPMAX key [key ...] timeout
redis5版本之后的新功能。与bzpopmax相反。在参数中的所有有序集合均为空的情况下,阻塞连接。参数中包含多个有序集合时,按照参数中key的顺序,返回第一个非空key中分数最小的成员和对应的分数。参数 timeout
可以理解为客户端被阻塞的最大秒数值,0 表示永久阻塞。
BZPOPMIN key [key ...] timeout
从集合中移除指定的成员:
ZREM key member [member ...]
结合zrem和zrangebylex功能:将zrangebylex匹配的结果从有序集合中删除:
ZREMRANGEBYLEX key min max
结合zrem和zrank功能:将zrank匹配的结果从有序集合中删除:
ZREMRANGEBYRANK key start stop
结合zrem和zrangebyscore功能:将zrangebyscore匹配的结果从有序集合中删除:
ZREMRANGEBYSCORE key min max
修改有序集合内成员的分数,将有序集合内成员的分数增加increment分值,increment可以为浮点型整型也可以为负数或正数:
ZINCRBY key increment member
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中,给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination ,默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和,可以使用aggregate参数指定将相同成员的分数取最小值或最大值:
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
计算给定的一个或多个有序集的并集,并存储在新的 key 中:
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
Python客户端与命令行函数基本上完全一致,篇幅太长因此不再过多的展示。
希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!