Redis 数据库基础知识
1 基本命令
# 进入Redis 安装目录
# 本地启动:
redis-server.exe redis.windows.conf
# 使用CLI:
redis-cli.exe -h 127.0.0.1 -p 6379
2 数据类型
- Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zset (sorted set:有序集合)。
String:
一个 key 对应一个 value。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据,比如jpg图片或者序列化的对象。string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB(一个键最大能存储 512MB)。
Hash:
Redis hash 是一个键值对(key=>value)的集合。Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。每个 hash 可以存储 232 -1 键值对(40多亿)
List:
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表最多可存储 232 - 1 元素 (40多亿)。
Set:
Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1(40多亿)。
Zset:
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
3 常用命令
3.1 键命令 Key
COMMAND KEY_NAME
# DEL 命令用于删除已存在的键。不存在的 key 会被忽略。返回被删除 key 的数量。
DEL KEY_NAME
# DUMP 命令用于序列化给定 key ,并返回被序列化的值。如果 key 不存在,那么返回 nil 。一般需要进行“跨平台存储”和”网络传输”的数据,需要进行序列化。
DUMP KEY_NAME
# EXISTS 命令用于检查给定 key 是否存在。若 key 存在返回 1 ,否则返回 0 。
EXISTS KEY_NAME
# Expire 命令用于设置 key 的过期时间,key 过期后将不再可用。单位以秒计。设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时返回 0 。
Expire KEY_NAME TIME_IN_SECONDS
# 毫秒
PEXPIRE KEY_NAME milliseconds
# Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时返回 0 。
Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP
# 毫秒时间戳
PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP
# Keys 命令用于查找所有符合给定模式 pattern 的 key 。返回符合给定模式的 key 列表 (Array)。
KEYS PATTERN
# 获取 redis 中所有的 key
keys *
# MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。移动成功返回 1 ,失败则返回 0 。
MOVE KEY_NAME DESTINATION_DATABASE
# PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。成功时返回 1 。 如果 key 不存在或 key 没有设置过期时间,返回 0 。
PERSIST KEY_NAME
# PTTL 命令以毫秒为单位返回 key 的剩余过期时间。当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。
PTTL KEY_NAME
# TTL 命令以秒为单位返回 key 的剩余过期时间。当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。
TTL KEY_NAME
# RANDOMKEY 命令从当前数据库中随机返回一个 key 。当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil (windows 系统返回 null)
RANDOMKEY
# Rename 命令用于修改 key 的名称 。改名成功时提示 OK ,失败时候返回一个错误。
RENAME OLD_KEY_NAME NEW_KEY_NAME
# Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。修改成功时,返回 1 。 如果 NEW_KEY_NAME 已经存在,返回 0 。
RENAMENX OLD_KEY_NAME NEW_KEY_NAME
# Type 命令用于返回 key 所储存的值的类型。数据类型有:none (key不存在)、string (字符串、list (列表)、set (集合)、zset (有序集)、hash (哈希表)
TYPE KEY_NAME
3.2 字符串 String
- Redis 字符串数据类型的相关命令用于管理 redis 字符串值
COMMAND KEY_NAME
# SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。 SET 在设置操作成功完成时返回 OK 。
SET KEY_NAME VALUE
# Get 命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。
GET KEY_NAME
# Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
GETRANGE KEY_NAME start end
# Getset 命令用于设置指定 key 的值,并返回 key 的旧值。返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。当 key 存在但不是字符串类型时,返回一个错误。
GETSET KEY_NAME VALUE
# Mget 命令返回一个包含所有给定 key 的值的列表。。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。
MGET KEY1 KEY2 .. KEYN
# Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。设置成功时返回 OK 。
SETEX KEY_NAME TIMEOUT VALUE
#Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。
SETNX KEY_NAME VALUE
# Strlen 命令用于获取指定 key 所储存的字符串值的长度。 当 key 不存在时,返回 0。当 key 储存的不是字符串值时,返回一个错误。
STRLEN KEY_NAME
# Mset 命令用于同时设置一个或多个 key-value 对。总是返回 OK 。
MSET key1 value1 key2 value2 .. keyN valueN
# Msetnx 命令用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对。当所有 key 都成功设置,返回 1 。 如果所有给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。
MSETNX key1 value1 key2 value2 .. keyN valueN
# Psetex 命令以毫秒为单位设置 key 的生存时间。设置成功时返回 OK 。
PSETEX key1 EXPIRY_IN_MILLISECONDS value1
# Incr 命令将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。返回执行 INCR 命令之后 key 的值。
INCR KEY_NAME
# Incrby 命令将 key 中储存的数字加上指定的增量值。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。返回加上指定的增量值之后 key 的值。
INCRBY KEY_NAME INCR_AMOUNT
# Incrbyfloat 命令为 key 中所储存的值加上指定的浮点数增量值。如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。返回执行命令之后 key 的值。
INCRBYFLOAT KEY_NAME INCR_AMOUNT
# Decr 命令将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。返回执行命令之后 key 的值。
DECR KEY_NAME
# Decrby 命令将 key 所储存的值减去指定的减量值。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。返回减去指定减量值之后 key 的值。
DECRBY KEY_NAME DECREMENT_AMOUNT
# Append 命令用于为指定的 key 追加值。如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。返回追加指定值之后 key 中字符串的长度。
APPEND KEY_NAME NEW_VALUE
3.3 哈希 Hash
COMMAND KEY_NAME
# Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。返回被成功删除字段的数量,不包括被忽略的字段。
HDEL KEY_NAME FIELD1.. FIELDN
# Hexists 命令用于查看哈希表的指定字段是否存在。如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。
HEXISTS KEY_NAME FIELD_NAME
# Hget 命令用于返回哈希表中指定字段的值。如果给定的字段或 key 不存在时,返回 nil 。
HGET KEY_NAME FIELD_NAME
# Hgetall 命令用于返回哈希表中,所有的字段和值。在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。
HGETALL KEY_NAME
# Hincrby 命令用于为哈希表中的字段值加上指定增量值。增量也可以为负数,相当于对指定字段进行减法操作。如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。返回执行 HINCRBY 命令之后,哈希表中字段的值。
HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER
# Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。返回执行 Hincrbyfloat 命令之后,哈希表中字段的值。
HINCRBYFLOAT key field increment
# Hkeys 命令用于获取哈希表中的所有域(field)。当 key 不存在时,返回一个空列表。
HKEYS key
# Hlen 命令用于获取哈希表中字段的数量。当 key 不存在时,返回 0 。
HLEN KEY_NAME
# Hmget 命令用于返回哈希表中,一个或多个给定字段的值。如果指定的字段不存在于哈希表,那么返回一个 nil 值。表值的排列顺序和指定字段的请求顺序一样。
HMGET KEY_NAME FIELD1...FIELDN
# Hset 命令用于为哈希表中的字段赋值 。如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。如果字段已经存在于哈希表中,旧值将被覆盖。如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
HSET KEY_NAME FIELD VALUE
# Hsetnx 命令用于为哈希表中不存在的的字段赋值 。如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。如果字段已经存在于哈希表中,操作无效。设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。
HSETNX KEY_NAME FIELD VALUE
# Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。此命令会覆盖哈希表中已存在的字段。如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。如果命令执行成功,返回 OK 。
HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN
# Hvals 命令返回一个包含哈希表中所有值的列表。 当 key 不存在时,返回一个空表。
HVALS key
3.4 列表 List
- Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
COMMAND KEY_NAME
# Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。如果列表为空,返回一个 nil 。 否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
BLPOP LIST1 LIST2 .. LISTN TIMEOUT
# Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
BRPOP LIST1 LIST2 .. LISTN TIMEOUT
# Brpoplpush 命令从列表中取出最后一个元素,并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。
BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT
# Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。如果指定索引值不在列表的区间范围内,返回 nil 。
LINDEX KEY_NAME INDEX_POSITION
# Linsert 命令用于在列表的元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作。当列表不存在时,被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到指定元素 ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。
LINSERT key BEFORE|AFTER pivot value
# Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。
LLEN KEY_NAME
# LPOP 命令用于移除并返回列表的第一个元素。当列表 key 不存在时,返回 nil 。
LPOP KEY_NAME
# Lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。返回执行 LPUSH 命令后,列表的长度。
LPUSH KEY_NAME VALUE1.. VALUEN
# Lpushx 将一个值插入到已存在的列表头部,列表不存在时操作无效。返回 LPUSHX 命令执行之后,列表的长度。
LPUSHX KEY_NAME VALUE1.. VALUEN
# Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
LRANGE KEY_NAME START END
# Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。返回被移除元素的数量,列表不存在时返回 0 。COUNT 的值可以是以下几种:
# count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
# count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
# count = 0 : 移除表中所有与 VALUE 相等的值。
LREM key count VALUE
# Lset 通过索引来设置元素的值。当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。操作成功返回 ok ,否则返回错误信息。
LSET KEY_NAME INDEX VALUE
# Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
LTRIM KEY_NAME START STOP
# Rpop 命令用于移除列表的最后一个元素,返回值为移除的元素。当列表不存在时,返回 nil 。
RPOP KEY_NAME
# Rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME
# Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。返回执行 RPUSH 操作后,列表的长度。
RPUSH KEY_NAME VALUE1..VALUEN
# Rpushx 命令用于将一个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效。返回执行 Rpushx 操作后,列表的长度。
RPUSHX KEY_NAME VALUE1..VALUEN
3.5 集合 Set
- Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
COMMAND KEY_NAME
# Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。当集合 key 不是集合类型时,返回一个错误。返回被添加到集合中的新元素的数量,不包括被忽略的元素。
SADD KEY_NAME VALUE1..VALUEN
# Scard 命令返回集合中元素的数量。当集合 key 不存在时,返回 0 。
SCARD KEY_NAME
# Sdiff 命令返回第一个集合与其他集合之间的差异,也可以认为说第一个集合中独有的元素。不存在的集合 key 将视为空集。差集的结果来自前面的 FIRST_KEY
SDIFF FIRST_KEY OTHER_KEY1..OTHER_KEYN
# Sdiffstore 命令将给定集合之间的差集存储在指定的集合中。如果指定的集合 key 已存在,则会被覆盖。返回结果集中的元素数量。
SDIFFSTORE DESTINATION_KEY KEY1..KEYN
# Sinter 命令返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集。返回交集成员的列表。
SINTER KEY KEY1..KEYN
# Sinterstore 命令将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。返回存储交集的集合的元素数量。
SINTERSTORE DESTINATION_KEY KEY KEY1..KEYN
# Sismember 命令判断成员元素是否是集合的成员。如果成员元素是集合的成员,返回 1 。 如果成员元素不是集合的成员,或 key 不存在,返回 0 。
SISMEMBER KEY VALUE
# Smembers 命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。
SMEMBERS key
# Smove 命令将指定成员 member 元素从 source 集合移动到 destination 集合返回 1。SMOVE 是原子性操作。如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。当 source 或 destination 不是集合类型时,返回一个错误。
SMOVE SOURCE DESTINATION MEMBER
# Spop 命令用于移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素。当集合不存在或是空集时,返回 nil 。
SPOP key [count]
# Srandmember 命令用于返回集合中的一个或多个随机元素。只提供集合 key 参数时,返回一个元素;如果集合为空,返回 nil 。 如果提供了 count 参数,那么返回一个数组;如果集合为空,返回空数组。Srandmember 命令接受可选的 count 参数:
# 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
# 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
SRANDMEMBER KEY [count]
# Srem 命令用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。返回被成功移除的元素的数量,不包括被忽略的元素。当 key 不是集合类型,返回一个错误。
SREM KEY MEMBER1..MEMBERN
# Sunion 命令返回给定集合的并集。不存在的集合 key 被视为空集。
SUNION KEY KEY1..KEYN
# Sunionstore 命令将给定集合的并集存储在指定的集合 destination 中。如果 destination 已经存在,则将其覆盖。返回结果集中的元素数量。
SUNIONSTORE destination key [key ...]
3.6 有序集合 Sorted set
- Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。
# Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。分数值可以是整数值或双精度浮点数。如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。返回被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。
ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN
# Zcard 命令用于计算集合中元素的数量。当 key 存在且是有序集类型时,返回有序集的基数。 当 key 不存在时,返回 0
ZCARD KEY_NAME
# Zcount 命令用于计算有序集合中指定分数区间的成员数量。返回分数值在 min 和 max 之间的成员的数量。
ZCOUNT key min max
# Redis Zincrby 命令对有序集合中指定成员的分数加上增量 increment,可以通过传递一个负数值 increment ,让分数减去相应的值。返回member 成员的新分数值,以字符串形式表示。
ZINCRBY key increment member
# 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination 中,返回结果集中的成员数
ZINTERSTORE destination numkeys key1 ... keyn
# Zrange 返回有序集中,指定区间内的成员。其中成员的位置按分数值递增(从小到大)来排序。具有相同分数值的成员按字典序(lexicographical order )来排列。
ZRANGE key start stop [WITHSCORES]
# Redis Zrangebyscore 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
# Zrank 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。如果成员是有序集 key 的成员,返回 member 的排名。 如果成员不是有序集 key 的成员,返回 nil 。
ZRANK key member
# Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。返回被成功移除的成员的数量,不包括被忽略的成员
ZREM key member [member ...]
# Zremrangebyrank 命令用于移除有序集中,指定排名(rank)区间内的所有成员。返回被移除成员的数量。
ZREMRANGEBYRANK key start stop
# Zremrangebyscore 命令用于移除有序集中,指定分数(score)区间内的所有成员。返回被移除成员的数量。
ZREMRANGEBYSCORE key min max
# Zrevrange 命令返回有序集中,指定区间内的成员。其中成员的位置按分数值递减(从大到小)来排列。具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。
ZREVRANGE key start stop [WITHSCORES]
# Zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
# Zrevrank 命令返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。如果成员是有序集 key 的成员,返回成员的排名。 如果成员不是有序集 key 的成员,返回 nil 。
ZREVRANK key member
# Zscore 命令返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
ZSCORE key member
# Zunionstore 命令计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和 。返回保存到 destination 的结果集的成员数量。
ZUNIONSTORE destination numkeys key1 ... keyn