Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
官网命令大全
http://www.redis.cn/commands.html
1、RedisKey
(1)redis允许模糊查询key 有3个通配符 *、?、[]
(2)randomkey:返回随机key
(3)type key:返回key存储的类型
(4)exists key:判断某个key是否存在
(5)del key:删除key
(6)rename key newkey:改名
(7)renamenx key newkey:如果newkey不存在则修改成功
(8)move key 1:将key移动到1数据库
(9)ttl key:查询key的生命周期(秒)
(10)expire key 整数值:设置key的生命周期以秒为单位
(11)pexpire key 整数值:设置key的生命周期以毫秒为单位
(12)pttl key:查询key 的生命周期(毫秒)
(13)perisist key:把指定key设置为永久有效
2、String(字符串)
下表列出了常用的 redis 字符串命令:
序号 | 命令及描述 |
1 | SET key value 设置指定 key 的值 |
2 | GET key 获取指定 key 的值 |
3 | GETRANGE key start end 返回 key 中字符串值的子字符 【) GETRANGE key 0 -1 获取全部字符串=getKey |
4 | GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 |
5 | GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 |
6 | MGET 获取所有(一个或多个)给定 key 的值。mget k1 k2 k3 |
7 | SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 |
8 | SETEX (set with expire) 设置过期时间 |
9 | SETNX (SET if Not eXists) 只有在 key 不存在时设置 key 的值。 |
10 | SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。替换指定位置开始字符串 |
11 | STRLEN key 返回 key 所储存的字符串值的长度。string length |
12 | MSET 同时设置一个或多个 key-value 对。mset k1 v1 k2 v2 k3 v3 |
13 | MSETNX key value [key value …] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 |
14 | PSETEX key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。 |
15 | INCR key 将 key 中储存的数字值增一。 自增1 |
16 | INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。自增n eg:incrby 10 |
17 | INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。 |
18 | DECR key 将 key 中储存的数字值减一。 自减1 |
19 | DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。自减1 eg:decrby 10 |
20 | APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果key不存在,相当于是set key value |
1、SET key value 设置指定 key 的值
//设置用户1 为json字符串
set user:1 {name:pidan,age:10}
//获取用户1 的信息
get user:1
2、GET key 获取指定 key 的值
3、MSET 同时设置一个或多个 key-value 对
//批量设置用户的 姓名和年龄
mset user:2:name danzi user:2:age 10
//批量获取用户2 的信息
mget user:2:name user:2:age
4、阅读量案例
5、 SETNX (SET if Not eXists) 只有在 key 不存在时设置 key 的值
6、SETXX ,只有在 key 存在时才可修改 key 的值
7、APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果key不存在,相当于是set key value
8、GETRANGE key start end 返回 key 中字符串值的子字符
9、SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。替换指定位置开始字符串
10、strlen key,查看指定键的值的长度
11、type key 查看指定键的值的类型,值的类型共5种
12、GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)
13、help set 查询set命令
14、incr 、incrby、incrbyfloat 自增 1或n
15、decr、decrby 自减 1或n
16、object 查看类型
扩展:二进制安全
1、编码格式不同,汉字占的字节数不同
bitMap 知识点
二进制中1byte 有 8bit
命令1:setbit k1 1 1
命令分析:
setbit 命令
k1:键
第1个1:偏移量,下标从0开始计算,1代表第2个bit位
第2个1:value值设置为1
1字节8位变为: 0100 0000
offset:是二进制位的偏移量
命令2:setbit k1 7 1
命令分析:
setbit 命令
k1:键
第1个1:偏移量,下标从0开始计算,7代表第8个bit位,还属于第1个字节内
第2个1:value值设置为1
在原来的1字节8位的基础上,在第7个bit位设置了值为1
1字节8位变为: 0100 0001
16进制计算结果为41,根据ascii码查询得出,对应的16进制是大写A字母
注:redis 查询ascii码,查询命令:man ascii ,但需要Linux下安装Manual手册,才可以直接使用man ascii查看ASCII表
命令3:setbit k1 9 1
将键为k1的字节,下标从0开始计算,在下标为9,第10个bit位上,设置值为1
生成的2个字节的二进制位是:0100 0001 0100 0000
0100 0001 在ascii码中对应的16进制是 字母A
0100 0000 在ascii码中对应的16进制是 符号@
2、bitpos
2个字节的二进制位是:0100 0001 0100 0000
127.0.0.1:6379> BITPOS k1 1 0 0
(integer) 1
127.0.0.1:6379> BITPOS k1 1 1 1
(integer) 9
127.0.0.1:6379> BITPOS k1 1 0 1
(integer) 1
127.0.0.1:6379>
命令分析:BITPOS k1 1 0 0
BITPOS:查询命令
k1:指定键
1:bit位上是1
第1个0:开始以下标为0,第,1个字节
第2个0:结束以下标为0,第,1个字节
在两个字节的16个bit位范围内查询 bit位上的值是1,且字节内第一个出现的位置
3、bitcount
做二进制位 1 的统计
4、bitop
目标key是结果
参与的key会触发二进制位的逻辑操作 与或非
案例演示:
127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> clear #情况本数据库
127.0.0.1:6379> setbit k1 1 1 # 设置k1 下标为1,第2个bit位的值为1
(integer) 0 # 0100 0000
127.0.0.1:6379> setbit k1 7 1 # 设置k1 下标为7,第8个bit位的值为1
(integer) 0 # 0100 0001
127.0.0.1:6379> get k1 # 16进制为 41,对应ascii码是 A
"A"
127.0.0.1:6379> setbit k2 1 1 # 设置k2 下标为1,第2个bit位的值为1
(integer) 0 # 0100 0000
127.0.0.1:6379> setbit k2 6 1 # 设置k2 下标为6,第7个bit位的值为1
(integer) 0 # 0100 0010
127.0.0.1:6379> get k2 # 16进制为 42,对应ascii码是 B
"B"
127.0.0.1:6379> bitop and addkey k1 k2 # 计算 k1 和 k2 的 与运算
(integer) 1
127.0.0.1:6379> get addkey # and是与运算
"@"
127.0.0.1:6379> bitop or orkey k1 k2 # 计算 k1 和 k2 的 或运算
(integer) 1
127.0.0.1:6379> get orkey
"C"
127.0.0.1:6379>
什么是Jedis: 是Redis官方推荐的java连接开发工具!使用java操作Redis的中间件
3、List
shell命令查询list方法
127.0.0.1:6379> help @list
BLPOP key [key ...] timeout
summary: Remove and get the first element in a list, or block until one is available
since: 2.0.0
BRPOP key [key ...] timeout
summary: Remove and get the last element in a list, or block until one is available
since: 2.0.0
BRPOPLPUSH source destination timeout
summary: Pop an element from a list, push it to another list and return it; or block until one is available
since: 2.2.0
LINDEX key index
summary: Get an element from a list by its index
since: 1.0.0
LINSERT key BEFORE|AFTER pivot element
summary: Insert an element before or after another element in a list
since: 2.2.0
LLEN key
summary: Get the length of a list
since: 1.0.0
LPOP key
summary: Remove and get the first element in a list
since: 1.0.0
LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]
summary: Return the index of matching elements on a list
since: 6.0.6
LPUSH key element [element ...]
summary: Prepend one or multiple elements to a list
since: 1.0.0
LPUSHX key element [element ...]
summary: Prepend an element to a list, only if the list exists
since: 2.2.0
LRANGE key start stop
summary: Get a range of elements from a list
since: 1.0.0
LREM key count element
summary: Remove elements from a list
since: 1.0.0
LSET key index element
summary: Set the value of an element in a list by its index
since: 1.0.0
LTRIM key start stop
summary: Trim a list to the specified range
since: 1.0.0
RPOP key
summary: Remove and get the last element in a list
since: 1.0.0
RPOPLPUSH source destination
summary: Remove the last element in a list, prepend it to another list and return it
since: 1.2.0
RPUSH key element [element ...]
summary: Append one or multiple elements to a list
since: 1.0.0
RPUSHX key element [element ...]
summary: Append an element to a list, only if the list exists
since: 2.2.0
127.0.0.1:6379>
注意:list 所有的命令都是以 L 开头的,Redis不区分大小写
下表列出了列表相关的基本命令:可重复的
序号 | 命令及描述 |
1 | BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
2 | BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
3 | BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
4 | LINDEX key index 通过索引获取列表中的元素 |
5 | LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素 |
6 | LLEN key 获取列表长度 |
7 | LPOP key 移出并获取列表的第一个元素 |
8 | LPUSH key value1 [value2] 将一个或多个值插入到列表头部 |
9 | LPUSHX key value 将一个或多个值插入到已存在的列表头部 |
10 | LRANGE key start stop 获取列表指定范围内的元素 |
11 | LREM key count value 移除列表元素 |
12 | LSET key index value 通过索引设置列表元素的值 |
13 | LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 |
14 | RPOP key 移除并获取列表最后一个元素 |
15 | RPOPLPUSH source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
16 | RPUSH key value1 [value2] 在列表中添加一个或多个值 |
17 | RPUSHX key value 为已存在的列表添加值 |
在list里面,可以把list玩成 队列(先进先出)、阻塞队列、栈(后进先出)
案例:
1、lpush key value 将1个或多个放入列表中,默认加在列表左边
2、获取列表全部的值
3、Rpush key value 将1个或多个放入列表中,默认加在列表右边
4、从列表中移除元素
Lpop:从左边移除
Rpop:从右边移除
5、Lindex 通过下标获取列表中指定的值,L 代表list
6、Llen 获取列表的长度
7、移除list中n个值中的指定的值,列表不去重
8、裁剪list中下标n到m的部分值,通过下标截取指定的长度
9、rpoplpush 移除列表中的最后一个元素,并将此值添加到新的列表中
10、更新列表中的某个值,所以这个列表必须先存在,不存在就报错,将列表中指定下标的值替换为另外一个值
11、在列表的某个值的之前或之后,插入某个值
12、lset k value
13、Blpop 命令
1、node1
2、node2
3、node3
14、LTRIM 命令
小结
实际上是一个链表,before Node after,left,right都可以插入值
如果key不存在,创建新的链表
如果key存在,新增内容
如果移除了所有值,空链表,也代表不存在
在两边插入或者改动值,效率最高。中间元素,相对来说效率会低一点
消息队列(Lpush Rpop),栈(Lpush Lpop)
4、Set
注意:set 所有的命令都是以 S 开头的
127.0.0.1:6379> help @set
SADD key member [member ...]
summary: Add one or more members to a set
since: 1.0.0
SCARD key
summary: Get the number of members in a set
since: 1.0.0
SDIFF key [key ...]
summary: Subtract multiple sets
since: 1.0.0
SDIFFSTORE destination key [key ...]
summary: Subtract multiple sets and store the resulting set in a key
since: 1.0.0
SINTER key [key ...]
summary: Intersect multiple sets
since: 1.0.0
SINTERSTORE destination key [key ...]
summary: Intersect multiple sets and store the resulting set in a key
since: 1.0.0
SISMEMBER key member
summary: Determine if a given value is a member of a set
since: 1.0.0
SMEMBERS key
summary: Get all the members in a set
since: 1.0.0
SMOVE source destination member
summary: Move a member from one set to another
since: 1.0.0
SPOP key [count]
summary: Remove and return one or multiple random members from a set
since: 1.0.0
SRANDMEMBER key [count]
summary: Get one or multiple random members from a set
since: 1.0.0
SREM key member [member ...]
summary: Remove one or more members from a set
since: 1.0.0
SSCAN key cursor [MATCH pattern] [COUNT count]
summary: Incrementally iterate Set elements
since: 2.8.0
SUNION key [key ...]
summary: Add multiple sets
since: 1.0.0
SUNIONSTORE destination key [key ...]
summary: Add multiple sets and store the resulting set in a key
since: 1.0.0
127.0.0.1:6379>
Redis 集合(Set) 命令,不能重复的、无序的
命令 | 描述 |
返回所有给定集合的并集 | |
获取集合的成员数 | |
返回集合中一个或多个随机数 | |
返回集合中的所有成员 | |
返回给定所有集合的交集 | |
移除集合中一个或多个成员 | |
将 member 元素从 source 集合移动到 destination 集合 | |
向集合添加一个或多个成员 | |
判断 member 元素是否是集合 key 的成员 | |
返回给定所有集合的差集并存储在 destination 中 | |
返回给定所有集合的差集 | |
迭代集合中的元素 | |
返回给定所有集合的交集并存储在 destination 中 | |
所有给定集合的并集存储在 destination 集合中 | |
移除并返回集合中的一个随机元素 |
1、smembers key 查询集合中全部元素
127.0.0.1:6379> sadd k1 a b c a d e # 在集合中添加元素
(integer) 5
127.0.0.1:6379> smembers k1 #查看集合中的所有元素,已去重
1) "d"
2) "c"
3) "b"
4) "a"
5) "e"
127.0.0.1:6379>
2、判断集合中是否存在某个元素,存在返回1,不存在返回0
3、获取set集合的成员数量
4、移除集合的指定元素
127.0.0.1:6379> smembers k1
1) "d"
2) "c"
3) "b"
4) "a"
5) "e"
127.0.0.1:6379> srem k1 e #移除指定键的指定值
(integer) 1
127.0.0.1:6379> scard k1 #查询集合中的元素个数
(integer) 4
127.0.0.1:6379> smembers k1 #查询集合中的所有元素
1) "c"
2) "b"
3) "a"
4) "d"
127.0.0.1:6379>
5、随机从set集合中筛选出一个值
从键为 k1 的值中随机抽取3个数
127.0.0.1:6379> srandmember k1 3
1) "3"
2) "2"
3) "4"
127.0.0.1:6379> srandmember k1 3
1) "3"
2) "4"
3) "5"
127.0.0.1:6379> srandmember k1 3
1) "1"
2) "2"
3) "5"
127.0.0.1:6379>
6、随机从set集合中删除值
7、将一个指定的值,移动到另外一个set集合
8、计算两个集合的差集
127.0.0.1:6379> sdiff k1 k2
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> sdiff k2 k1
1) "6"
2) "7"
3) "8"
127.0.0.1:6379>
9、计算两个集合的交集
127.0.0.1:6379> sadd k1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> sadd k2 4 5 6 7 8
(integer) 5
127.0.0.1:6379> smembers k1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> smembers k2
1) "4"
2) "5"
3) "6"
4) "7"
5) "8"
127.0.0.1:6379> sinter k1 k2
1) "4"
2) "5"
127.0.0.1:6379> sinterstore dest k1 k2
(integer) 2
127.0.0.1:6379> smembers dest
1) "4"
2) "5"
127.0.0.1:6379>
10、计算两个集合的并集
127.0.0.1:6379> sunion k1 k2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
127.0.0.1:6379>
5、Hash
注意:hash命令都是以 H 开头的
127.0.0.1:6379> help @hash
HDEL key field [field ...]
summary: Delete one or more hash fields
since: 2.0.0
HEXISTS key field
summary: Determine if a hash field exists
since: 2.0.0
HGET key field
summary: Get the value of a hash field
since: 2.0.0
HGETALL key
summary: Get all the fields and values in a hash
since: 2.0.0
HINCRBY key field increment
summary: Increment the integer value of a hash field by the given number
since: 2.0.0
HINCRBYFLOAT key field increment
summary: Increment the float value of a hash field by the given amount
since: 2.6.0
HKEYS key
summary: Get all the fields in a hash
since: 2.0.0
HLEN key
summary: Get the number of fields in a hash
since: 2.0.0
HMGET key field [field ...]
summary: Get the values of all the given hash fields
since: 2.0.0
HMSET key field value [field value ...]
summary: Set multiple hash fields to multiple values
since: 2.0.0
HSCAN key cursor [MATCH pattern] [COUNT count]
summary: Incrementally iterate hash fields and associated values
since: 2.8.0
HSET key field value [field value ...]
summary: Set the string value of a hash field
since: 2.0.0
HSETNX key field value
summary: Set the value of a hash field, only if the field does not exist
since: 2.0.0
HSTRLEN key field
summary: Get the length of the value of a hash field
since: 3.2.0
HVALS key
summary: Get all the values in a hash
since: 2.0.0
127.0.0.1:6379>
Map集合,key-map,值是一个map集合
Redis 哈希(Hash) 命令
命令 | 描述 |
同时将多个 field-value (域-值)对设置到哈希表 key 中。 | |
获取所有给定字段的值 | |
将哈希表 key 中的字段 field 的值设为 value 。 | |
获取在哈希表中指定 key 的所有字段和值 | |
获取存储在哈希表中指定字段的值/td> | |
查看哈希表 key 中,指定的字段是否存在。 | |
为哈希表 key 中的指定字段的整数值加上增量 increment 。 | |
获取哈希表中字段的数量 | |
删除一个或多个哈希表字段 | |
获取哈希表中所有值 | |
为哈希表 key 中的指定字段的浮点数值加上增量 increment 。 | |
获取所有哈希表中的字段 | |
只有在字段 field 不存在时,设置哈希表字段的值。 |
1、修改和获取单个值
127.0.0.1:6379> hset k1 name pi age 10
(integer) 2
127.0.0.1:6379> hget k1 name
"pi"
2、批量修改和获取多个值
127.0.0.1:6379> hmset k1 name pi age 10
OK
127.0.0.1:6379> hmget k1 name age
1) "pi"
2) "10"
127.0.0.1:6379>
获取全部的数据,以键值对存在,{key:value}
127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "10"
127.0.0.1:6379>
3、删除指定key字段,对应的value值也会消失,此值就是map键值对 {key:value}
127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "10"
127.0.0.1:6379> hdel k1 name
(integer) 1
127.0.0.1:6379> hgetall k1
1) "age"
2) "10"
127.0.0.1:6379>
4、获取hash表的字段数量
5、判断hash中指定字段是否存在
127.0.0.1:6379> hgetall k1
1) "age"
2) "10"
3) "name"
4) "pi"
127.0.0.1:6379> hlen k1
(integer) 2
127.0.0.1:6379> hexists k1 name # 判断hash表中是否存在某个map
(integer) 1
127.0.0.1:6379>
6、只获得hash中map的所有字段
127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "10"
127.0.0.1:6379>
7、只获得hash中所有map的值
127.0.0.1:6379> hkeys k1 #只获取 指定键 中的所有map中的key
1) "name"
2) "age"
127.0.0.1:6379> hvals k1 #只获取 指定键 中的所有map中的value
1) "pi"
2) "10"
127.0.0.1:6379>
8、自增或自减 n
127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "10"
127.0.0.1:6379> hincrby k1 age 1 #自增1
(integer) 11
127.0.0.1:6379> hincrbyfloat k1 age 2.0 #浮点数自增2
"13"
127.0.0.1:6379> hincrby k1 age -2 #自减2
(integer) 11
127.0.0.1:6379> hincrbyfloat k1 age -2.0 #浮点数自减2
"9"
127.0.0.1:6379>
9、不存在即可设置,存在即不可设置
127.0.0.1:6379> hsetnx k1 name dan #当键name不存在时,设置成功
(integer) 0 #因为map中存在key name,所以不可设置
127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "11"
127.0.0.1:6379> hsetnx k1 sex male #因为键中不存在sex,所以添加成功
(integer) 1
127.0.0.1:6379> hgetall k1
1) "name"
2) "pi"
3) "age"
4) "11"
5) "sex"
6) "male"
127.0.0.1:6379>
10、hash存储对象
hash变更的数据 user、name、age,尤其是用户信息之类的,经常变动的信息。
hash更适合于对象的存储,string更适合于字符串的存储
# hash保存对象
127.0.0.1:6379> hset ai:1 name pi age 10 sex female
(integer) 3
127.0.0.1:6379> hget ai:1 name
"pi"
127.0.0.1:6379> hmget ai:1 name age sex
1) "pi"
2) "10"
3) "female"
127.0.0.1:6379>
6、Zset
注意:zset 所有的命令都是以 Z 开头的,有序集合
在set基础上,增加了一个值,set k1 v1
、 zset k1 score v1
list、set、zset的区别
1、在zset集合中添加元素
2、给添加元素后的zset集合,使用score进行排序,-inf:最小的值,+inf:最大的值
3、给集合元素进行指定范围内的排序
4、移除集合中指定的值
5、查询有序集合中的元素个数
6、对集合中的元素,从大到小排序
7、获取指定区间的成员数量
7、sorted_set
127.0.0.1:6379> help @sorted_set
BZPOPMAX key [key ...] timeout
summary: Remove and return the member with the highest score from one or more sorted sets, or block until one is available
since: 5.0.0
BZPOPMIN key [key ...] timeout
summary: Remove and return the member with the lowest score from one or more sorted sets, or block until one is available
since: 5.0.0
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
summary: Add one or more members to a sorted set, or update its score if it already exists
since: 1.2.0
ZCARD key
summary: Get the number of members in a sorted set
since: 1.2.0
ZCOUNT key min max
summary: Count the members in a sorted set with scores within the given values
since: 2.0.0
ZINCRBY key increment member
summary: Increment the score of a member in a sorted set
since: 1.2.0
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
summary: Intersect multiple sorted sets and store the resulting sorted set in a new key
since: 2.0.0
ZLEXCOUNT key min max
summary: Count the number of members in a sorted set between a given lexicographical range
since: 2.8.9
ZPOPMAX key [count]
summary: Remove and return members with the highest scores in a sorted set
since: 5.0.0
ZPOPMIN key [count]
summary: Remove and return members with the lowest scores in a sorted set
since: 5.0.0
ZRANGE key start stop [WITHSCORES]
summary: Return a range of members in a sorted set, by index
since: 1.2.0
ZRANGEBYLEX key min max [LIMIT offset count]
summary: Return a range of members in a sorted set, by lexicographical range
since: 2.8.9
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
summary: Return a range of members in a sorted set, by score
since: 1.0.5
ZRANK key member
summary: Determine the index of a member in a sorted set
since: 2.0.0
ZREM key member [member ...]
summary: Remove one or more members from a sorted set
since: 1.2.0
ZREMRANGEBYLEX key min max
summary: Remove all members in a sorted set between the given lexicographical range
since: 2.8.9
ZREMRANGEBYRANK key start stop
summary: Remove all members in a sorted set within the given indexes
since: 2.0.0
ZREMRANGEBYSCORE key min max
summary: Remove all members in a sorted set within the given scores
since: 1.2.0
ZREVRANGE key start stop [WITHSCORES]
summary: Return a range of members in a sorted set, by index, with scores ordered from high to low
since: 1.2.0
ZREVRANGEBYLEX key max min [LIMIT offset count]
summary: Return a range of members in a sorted set, by lexicographical range, ordered from higher to lower strings.
since: 2.8.9
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
summary: Return a range of members in a sorted set, by score, with scores ordered from high to low
since: 2.2.0
ZREVRANK key member
summary: Determine the index of a member in a sorted set, with scores ordered from high to low
since: 2.0.0
ZSCAN key cursor [MATCH pattern] [COUNT count]
summary: Incrementally iterate sorted sets elements and associated scores
since: 2.8.0
ZSCORE key member
summary: Get the score associated with the given member in a sorted set
since: 1.2.0
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
summary: Add multiple sorted sets and store the resulting sorted set in a new key
since: 2.0.0
127.0.0.1:6379>
1 在集合中添加元素
127.0.0.1:6379> zadd k1 8 banana 6 apple 2 orange #添加元素
(integer) 3
127.0.0.1:6379> zrange k1 0 -1 #查询集合中的全部元素,按照从小到大
1) "orange"
2) "apple"
3) "banana"
127.0.0.1:6379> zrange k1 0 -1 withscores #查询全部元素且带分值
1) "orange"
2) "2"
3) "apple"
4) "6"
5) "banana"
6) "8"
127.0.0.1:6379> zrangebyscore k1 2 7 #按照分值取出元素
1) "orange"
2) "apple"
127.0.0.1:6379> zrange k1 0 1 #按照从小到大取出前2个元素
1) "orange"
2) "apple"
127.0.0.1:6379> zrevrange k1 0 1 #按照从大到小取出前2个元素
1) "banana"
2) "apple"
127.0.0.1:6379> zscore k1 banana #查询元素的分值
"8"
127.0.0.1:6379> zrank k1 banana #查询元素的排名
(integer) 2
127.0.0.1:6379> zincrby k1 2.5 apple #给指定元素自增n
"8.5"
127.0.0.1:6379> zrange k1 0 -1 withscores
1) "orange"
2) "2"
3) "banana"
4) "8"
5) "apple"
6) "8.5"
127.0.0.1:6379>
2 zunionstore
127.0.0.1:6379> zadd k1 80 pi 60 dan 40 zi
(integer) 3
127.0.0.1:6379> zadd k2 50 pi 20 dan 30 xian
(integer) 3
127.0.0.1:6379> zunionstore unkey 2 k1 k2
(integer) 4
127.0.0.1:6379> zrange unkey 0 -1 withscores
1) "xian"
2) "30"
3) "zi"
4) "40"
5) "dan"
6) "80"
7) "pi"
8) "130"
127.0.0.1:6379> zunionstore unkey1 2 k1 k2 weights 1 0.5
(integer) 4
127.0.0.1:6379> zrange unkey1 0 -1 withscores
1) "xian"
2) "15"
3) "zi"
4) "40"
5) "dan"
6) "70"
7) "pi"
8) "105"
127.0.0.1:6379> zunionstore unkey1 2 k1 k2 aggregate max
(integer) 4
127.0.0.1:6379> zrange unkey1 0 -1
1) "xian"
2) "zi"
3) "dan"
4) "pi"
127.0.0.1:6379> zrange unkey1 0 -1 withscores
1) "xian"
2) "30"
3) "zi"
4) "40"
5) "dan"
6) "60"
7) "pi"
8) "80"
127.0.0.1:6379>