Redis基本数据类型

String字符串#

Redis 字符串是字节序列。Redis 字符串是二进制安全的,意味着他们有一个已知的长度没有任何特殊字符终止,所以可以存储任何东西,512M 为上限,主要的还是操作键值对。String的数据结构是简单的 Key-Value模型,Value可以是字符串,也可以是数字。

set key value#

普通添加

127.0.0.1:6379  set name wangpengliang
OK
127.0.0.1:6379  get name
"wangpengliang"

setex key seconds value#

添加时设置过期时间

127.0.0.1:6379  setex name 30 wangpengliang
OK
127.0.0.1:6379  get name
"wangpengliang"

ttl#

检查key还有多少秒过期

127.0.0.1:6379  setex  name 30 wangpengliang
OK
127.0.0.1:6379  get name
"wangpengliang"
# 查看距离过期时间还有多少秒
127.0.0.1:6379 ttl name
(integer) 18
127.0.0.1:6379 >

setnx key value#

如果key不存在,则创建一个key,如果key存在,则创建失败并返回0;setnx 在分布式锁中经常使用到

# 设置key=name value=wangpengliang
127.0.0.1:6379 set name wangpengliang
OK
# 检查是否设置成功
127.0.0.1:6379 get name
"wangpengliang"
# 使用setnx设置key=name:因为已存在所以创建失败返回0
127.0.0.1:6379 setnx name wangpengliang
(integer) 0
# 清空数据库
127.0.0.1:6379 FLUSHDB
OK
# 重新使用setnx设置key=name:返回1说明创建成功
127.0.0.1:6379 setnx name wangpengliang
(integer) 1
# 检查是否设置成功
127.0.0.1:6379 get name
"wangpengliang"

get key#

获取指定key的value

127.0.0.1:6379 set name wangpengliang
OK
127.0.0.1:6379 get name
"wangpengliang"

mset/mget#

用于同时设置/获取一个或多个键值对,批量操作。同时设置多个值,如果其中有一个存在,那么就都创建失败;要么一起成功,要么一起失败,这是一个原子性操作

# 使用mset同时设置多个k-v
127.0.0.1:6379 mset name1 wangpengliang name2 lizimeng name3 shijiangtao
OK
# 使用met同时读取多个k-v
127.0.0.1:6379 mget name1 name2 name3
1) "wangpengliang"
2) "lizimeng"
3) "shijiangtao"

incr#

让当前键值以 1 的数量递增,并返回递增后的值。相当于C#中的 i++

# 设置key=num value=10
127.0.0.1:6379 set num 10
OK
127.0.0.1:6379 get num
"10"
# 设置key=num value=value+1
127.0.0.1:6379 incr num
(integer) 11

incrby#

可以指定参数一次增加的数值,并返回递增后的值。设置步长的方式递增

# 设置key=num value=10
127.0.0.1:6379 set num 10
OK
127.0.0.1:6379 get num
"10"
# 设置key=num value=value+2(2是步长)
127.0.0.1:6379 incrby num 2
(integer) 12

decr#

让当前键值以 1 的数量递减,并返回递减后的值。相当于C#中的 i--

# 设置key=num value=10
127.0.0.1:6379 set num 10
OK
127.0.0.1:6379 get num
"10"
# 设置key=num value=value-1
127.0.0.1:6379 decr num
(integer) 9

decrby#

可以指定参数一次减少的数值,并返回递减后的值。设置步长的方式递减

# 设置key=num value=10

OK
127.0.0.1:6379 get num
"10"
# 设置key=num value=value-2(2是步长)
127.0.0.1:6379 incrby num 2
(integer) 8

append#

向键值的末尾追加 value。如果键不存在则将该键的值设置为 value。返回值是追加后字符串的总长度

127.0.0.1:6379 append name wang
(integer) 4
127.0.0.1:6379 get name
"wang"
127.0.0.1:6379 set name wang
OK
127.0.0.1:6379 get name
"wang"
127.0.0.1:6379 append name pengliang
(integer) 13
127.0.0.1:6379 get name
"wangpengliang"

strlen#

获取字符串长度

127.0.0.1:6379 set name wangpengliang
OK
127.0.0.1:6379 strlen name
(integer) 13

getrange#

截取指定索引的字符串,相当于 Substring

127.0.0.1:6379 set name wangpengliang
OK
127.0.0.1:6379 get name
"wangpengliang"
127.0.0.1:6379 getrange name 0 3
"wang"

setrange#

从指定索引开始替换字符串

127.0.0.1:6379 set name hello
OK
127.0.0.1:6379 get name
"hello"
127.0.0.1:6379 setrange name 0 world
(integer) 5
127.0.0.1:6379 get name
"world"
127.0.0.1:6379 set name "hello java"
OK
127.0.0.1:6379 get name
"hello java"
127.0.0.1:6379 setrange name 6 "csharp"
(integer) 12
127.0.0.1:6379 get name
"hello csharp"
127.0.0.1:6379 set name "hello csharp"
OK
127.0.0.1:6379 get name
"hello csharp"
127.0.0.1:6379 setrange name 6 "java"
(integer) 12
127.0.0.1:6379 get name
"hello javarp"

注意:命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小。比如:字符串只有 5 个字符长,但你设置的 offset10 ,那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充。

del#

根据key删除一个或者多个元素

127.0.0.1:6379 set name wangpengliang
OK
127.0.0.1:6379 get name
"wangpengliang"
127.0.0.1:6379 del name
(integer) 1
127.0.0.1:6379 get name
(nil)
127.0.0.1:6379 mset k1 wangpengliang k2 lizimeng
OK
127.0.0.1:6379 mget k1 k2
1) "wangpengliang"
2) "lizimeng"
127.0.0.1:6379 del k1 k2
(integer) 2
127.0.0.1:6379 mget k1 k2
1) (nil)
2) (nil)

对象方式设置#

设置一个user:1对象,值为Json字符串来保存一个对象;set user:1 {name:zhangsan,age:3}

# 设置key=num value=10
127.0.0.1:6379 set num 10
OK
127.0.0.1:6379 get num
"10"
# 设置key=num value=value-1
127.0.0.1:6379 decr num
(integer) 9
127.0.0.1:6379 mset user:1:name wangpengliang user:1:age 25
OK
127.0.0.1:6379 mget user:1:name user:1:age
1) "wangpengliang"
2) "25"

getset#

get 然后再 set 如果设置的键不存在值 => 则设置值,并且返回 nil 如果设置的键存在值,则返回该值,并设置新的值

127.0.0.1:6379 getset name wangpengliang
(nil)
127.0.0.1:6379 get name
"wangpengliang"
127.0.0.1:6379 getset name lizimeng
"wangpengliang"
127.0.0.1:63

应用场景#

  • 计数器—点赞,视频播放量,每播放一次就+1
  • 统计多单位的数量
  • 粉丝数
  • 对象缓存存储

Hash散列表#

Redis 的哈希是键值对的集合。Redis 的哈希值是字符串字段和字符串值之间的映射,因此它们被用来表示对象,还有用户信息之类的,经常变动的信息。

hset#

存储一个哈希键值对的集合。格式:hset key field value

127.0.0.1:6379 hset user name wangpengliang age 25
(integer) 2
127.0.0.1:6379 hget user name
"wangpengliang"
127.0.0.1:6379 hget user age
"25"

hget#

获取一个哈希键的值。格式:hget key field

127.0.0.1:6379 hset user name wangpengliang age 25
(integer) 2
127.0.0.1:6379 hget user name
"wangpengliang"

hmset#

存储一个或多个哈希是键值对的集合。格式:hmset key field1 value1 …fieldN keyN

127.0.0.1:6379 hmset user1 name wangpengliang age 25 address beijing
OK
127.0.0.1:6379 hmget user1 name age address
1) "wangpengliang"
2) "25"
3) "beijing"

hmget#

获取多个指定的键的值。格式:hmget key field1 … fieldN

127.0.0.1:6379 hset user name wangpengliang age 25
(integer) 2
127.0.0.1:6379 hget user name
"wangpengliang"

hexists#

判断哈希表中的字段名是否存在 如果存在返回 1 否则返回 0。格式:hexists key field

127.0.0.1:6379 hmset user1 name wangpengliang age 25 address beijing
OK
127.0.0.1:6379 hmget user1 name age address
1) "wangpengliang"
2) "25"
3) "beijing"
127.0.0.1:6379 hexists user1 name
(integer) 1
127.0.0.1:6379 hexists user1 aa
(integer) 0

hdel#

删除一个或多个字段。格式:hdel key field

127.0.0.1:6379 hmset user name wangpengliang age 25
OK
127.0.0.1:6379 hmget user name age
1) "wangpengliang"
2) "25"
127.0.0.1:6379 hdel user name
(integer) 1
127.0.0.1:6379 hmget user name age
1) (nil)
2) "25"

hgetall#

获取一个哈希是键值对的集合。 格式:hgetall key

127.0.0.1:6379 hmset user name wangpengliang age 25
OK
127.0.0.1:6379 hgetall user
1) "age"
2) "25"
3) "name"
4) "wangpengliang"

hvals#

只返回字段值。 格式:hvals key

127.0.0.1:6379 hmset user name wangpengliang age 25
OK
127.0.0.1:6379 hvals user
1) "25"
2) "wangpengliang"

hkeys#

只返回字段名。 格式:hkeys key

127.0.0.1:6379 hmset user name wangpengliang age 25
OK
127.0.0.1:6379 hkeys user
1) "age"
2) "name"

hlen#

返回 key 的 hash 的元素个数

127.0.0.1:6379 hmset user name wangpengliang age 25
OK
127.0.0.1:6379 hlen user
(integer) 2

hincrby key field value#

指定增量value

127.0.0.1:6379 hset test num 10
(integer) 1
127.0.0.1:6379 hget test num
"10"
127.0.0.1:6379 hincrby test num 2
(integer) 12

hsetnx key field value#

如果该键不存在就创建,如果该键存在就创建失败

127.0.0.1:6379 hsetnx test num 10
(integer) 1
127.0.0.1:6379 hsetnx test num 20
(integer) 0

应用场景#

  • 主要用于存储部分变更数据,比如存储用户信息等等

List链表#

Redis 的链表是简单的字符串列表,可以添加元素到 Redis 列表的头部或尾部。 Lpush:表示向链表的左添加,也就是向链表的头添加 Rpush:表示向链表的右添加,也就是向链表的尾添加

lpush key value#

向链表左侧添加(头插法)

127.0.0.1:6379 lpush keys one
(integer) 1
127.0.0.1:6379 lpush keys two
(integer) 2
127.0.0.1:6379 lpush keys three
(integer) 3
127.0.0.1:6379 lrange keys 0 -1
1) "three"
2) "two"
3) "one"

rpush key value#

向链表右侧添加(尾插法)

127.0.0.1:6379 rpush keys one
(integer) 1
127.0.0.1:6379 rpush keys two
(integer) 2
127.0.0.1:6379 rpush keys three
(integer) 3
127.0.0.1:6379 lrange keys 0 -1
1) "one"
2) "two"
3) "three"

lpop key#

从左边移出一个元素

127.0.0.1:6379 rpush keys one
(integer) 1
127.0.0.1:6379 rpush keys two
(integer) 2
127.0.0.1:6379 rpush keys three
(integer) 3
127.0.0.1:6379 lrange keys 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379 lpop keys
"one"
127.0.0.1:6379 lrange keys 0 -1
1) "two"
2) "three"

rpop key#

从右边移出一个元素

127.0.0.1:6379 rpush keys one
(integer) 1
127.0.0.1:6379 rpush keys two
(integer) 2
127.0.0.1:6379 rpush keys three
(integer) 3
127.0.0.1:6379 rpop keys
"three"
127.0.0.1:6379 lrange keys 0 -1
1) "one"
2) "two"

lrange key start end#

命令将返回索引从 startstop 之间的所有元素。Redis 的列表起始索引为 0。如果要获取全部的元素:lrange key 0 -1

127.0.0.1:6379 rpush keys one
(integer) 1
127.0.0.1:6379 rpush keys two
(integer) 2
127.0.0.1:6379 lrange keys 0 -1
1) "one"
2) "two"

llen key#

返回链表中元素的个数 相当于关系型数据库中 select count(*)

127.0.0.1:6379 rpush keys one
(integer) 1
127.0.0.1:6379 rpush keys two
(integer) 2
127.0.0.1:6379 lrange keys 0 -1
1) "one"
2) "two"
127.0.0.1:6379 llen keys
(integer) 2

lindex key indexnumber#

lindex 命令用来返回指定索引的元素,索引从 0 开始,如果是负数表示从右边开始计算的索引,最右边元素的索引是-1。如果要将列表类型当做数组来用,lindex 命令是必不可少的

127.0.0.1:6379 rpush keys one
(integer) 1
127.0.0.1:6379 rpush keys two
(integer) 2
127.0.0.1:6379 rpush keys three
(integer) 3
127.0.0.1:6379 lrange keys 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379 lindex keys 2
"three"

lset key indexnumber value#

它会将索引为 index的元素赋值为 value,原来的值会被覆盖。如果该列表不存在就会报错。所以使用这个命令之前先使用exists判断一下

127.0.0.1:6379 rpush keys one
(integer) 1
127.0.0.1:6379 rpush keys two
(integer) 2
127.0.0.1:6379 rpush keys three
(integer) 3
127.0.0.1:6379 lrange keys 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379 lset keys 2 twotwo
OK
127.0.0.1:6379 lrange keys 0 -1
1) "one"
2) "two"
3) "twotwo"
127.0.0.1:6379 lset keys 10  twotwo
(error) ERR index out of range

lrem key count value#

移除key链表中``count` 个元素的value值,精确匹配,如果链表中有多个重复的值,这里的count指的是可以删除多个相同key的值

127.0.0.1:6379 rpush keys a
(integer) 1
127.0.0.1:6379 rpush keys b
(integer) 2
127.0.0.1:6379 rpush keys c
(integer) 3
127.0.0.1:6379 lrange keys 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379 rpush keys d
(integer) 4
127.0.0.1:6379 rpush keys a
(integer) 5
127.0.0.1:6379 lrange keys 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "a"
127.0.0.1:6379 lrem keys 2 a
(integer) 2
127.0.0.1:6379 lrange keys 0 -1
1) "b"
2) "c"
3) "d"

ltrim list startIndex endIndex#

通过下标截取指定的长度,这个时候List已经改变了,只剩下截断的元素

127.0.0.1:6379 clear
127.0.0.1:6379 rpush keys a
(integer) 1
127.0.0.1:6379 rpush keys b
(integer) 2
127.0.0.1:6379 rpush keys c
(integer) 3
127.0.0.1:6379 rpush keys d
(integer) 4
127.0.0.1:6379 lrange keys 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379 ltrim keys 2 3
OK
127.0.0.1:6379 lrange keys 0 -1
1) "c"
2) "d"

rpoplpush source destination#

移除当前的source链表中的最后一个元素,并且将该元素移动到destination链表当中

127.0.0.1:6379 rpush keys1 a
(integer) 1
127.0.0.1:6379 rpush keys1 b
(integer) 2
127.0.0.1:6379 rpush keys1 c
(integer) 3
127.0.0.1:6379 rpoplpush keys1 keys2
"c"
127.0.0.1:6379 lrange keys1 0 -1
1) "a"
2) "b"
127.0.0.1:6379 lrange keys2 0 -1
1) "c"

linsert key BEFORE|AFTER pivot value#

在Key列表的指定元素的前/后面插入元素value

127.0.0.1:6379 rpush keys1 a
(integer) 1
127.0.0.1:6379 rpush keys1 b
(integer) 2
127.0.0.1:6379 rpush keys1 c
(integer) 3
127.0.0.1:6379 linsert keys1 before b a1
(integer) 4
127.0.0.1:6379 lrange keys 0 -1
(empty array)
127.0.0.1:6379 lrange keys1 0 -1
1) "a"
2) "a1"
3) "b"
4) "c"
127.0.0.1:6379 linsert keys1 after b b1
(integer) 5
127.0.0.1:6379 lrange keys1 0 -1
1) "a"
2) "a1"
3) "b"
4) "b1"
5) "c"
  • List是一个链表,before node after,left ,right都可以插入值
  • 如果key不存在,就创建新的链表
  • 如果key存在就创建新的值
  • 如果移除了所有的值,空链表,也就代表不存在
  • 在两边插入或者改动值,效率最高,中间元素相对来说效率会低一点

应用场景#

  • 消息队列:利用 ListPush 操作,将任务存在 List 中,然后工作线程再用POP 操作将任务取出进行执行。Redis还提供了操作List中某一段的API,可以直接查询,删除 List 中某一段的元素。
  • 消息排队:消息队列(Lpush、Rpop)、栈(Lpush、Lpop)使用 List 可以构建队列系统,使用 sorted set 甚至可以构建有优先级的队列系统。

Set集合#

Redis 的集合是字符串的无序集合。但在Set集合当中,是不允许有重复的。Set是通过hash table实现的,可以进行添加、删除和查找。对集合可以取 并集交集差集

sadd key value#

添加一个 string 元素到key对应的 set 集合中, 成功返回 1,如果元素已经在集合中返回 0

127.0.0.1:6379 sadd keys a
(integer) 1
127.0.0.1:6379 sadd keys b
(integer) 1
127.0.0.1:6379 sadd keys a
(integer) 0
127.0.0.1:6379 sadd keys c
(integer) 1
127.0.0.1:6379 smembers keys
1) "c"
2) "a"
3) "b"

scard key#

返回 set 的元素个数,如果 set 是空或者key不存在返回 0

127.0.0.1:6379 sadd keys a
(integer) 1
127.0.0.1:6379 sadd keys b
(integer) 1
127.0.0.1:6379 sadd keys c
(integer) 1
127.0.0.1:6379 smembers keys
1) "c"
2) "a"
3) "b"
127.0.0.1:6379 scard keys
(integer) 3

smembers key#

返回 key 对应 set 的所有元素,结果是无序的

127.0.0.1:6379 sadd keys a
(integer) 1
127.0.0.1:6379 sadd keys b
(integer) 1
127.0.0.1:6379 sadd keys c
(integer) 1
127.0.0.1:6379 smembers keys
1) "c"
2) "a"
3) "b"

sismember key value#

判断 value 是否在 set 中,存在返回1,0表示不存在或者key不存在

127.0.0.1:6379 sadd keys a
(integer) 1
127.0.0.1:6379 sadd keys b
(integer) 1
127.0.0.1:6379 sadd keys c
(integer) 1
127.0.0.1:6379 smembers keys
1) "c"
2) "a"
3) "b"
127.0.0.1:6379 sismember keys a
(integer) 1
127.0.0.1:6379 sismember keys d
(integer) 0

srem key value#

从 key 对应 set 中移除给定元素,成功返回1,如果 value 在集合中不存在或者key不存在返回 0

127.0.0.1:6379 sadd keys a
(integer) 1
127.0.0.1:6379 sadd keys b
(integer) 1
127.0.0.1:6379 sadd keys c
(integer) 1
127.0.0.1:6379 smembers keys
1) "c"
2) "a"
3) "b"
127.0.0.1:6379 srem keys a
(integer) 1
127.0.0.1:6379 smembers keys
1) "c"
2) "b"
127.0.0.1:6379 srem keys g
(integer) 0

srandmember key nums#

从key集合中随机抽取nums个元素

127.0.0.1:6379 sadd keys a
(integer) 1
127.0.0.1:6379 sadd keys b
(integer) 1
127.0.0.1:6379 sadd keys c
(integer) 1
127.0.0.1:6379 srandmember keys 2
1) "a"
2) "c"

spop key#

随机删除一些key集合中的元素

127.0.0.1:6379 sadd keys a
(integer) 1
127.0.0.1:6379 sadd keys b
(integer) 1
127.0.0.1:6379 sadd keys c
(integer) 1
127.0.0.1:6379 spop keys
"a"
127.0.0.1:6379 smembers keys
1) "c"
2) "b"

smove source destination member#

将原集合source中的member元素移动到destination集合中

127.0.0.1:6379 sadd keys a
(integer) 1
127.0.0.1:6379 sadd keys b
(integer) 1
127.0.0.1:6379 sadd keys c
(integer) 1
127.0.0.1:6379 smove keys keys2 a
(integer) 1
127.0.0.1:6379 smembers keys
1) "c"
2) "b"
127.0.0.1:6379 smembers keys2
1) "a"

sdiff key1 key2#

取出key1中与key2集合的不同元素,差集

127.0.0.1:6379 sadd keys1 a
(integer) 1
127.0.0.1:6379 sadd keys1 b
(integer) 1
127.0.0.1:6379 sadd keys1 c
(integer) 1
127.0.0.1:6379 sadd keys2 c
(integer) 1
127.0.0.1:6379 sadd keys2 g
(integer) 1
127.0.0.1:6379 sadd keys2 f
(integer) 1
127.0.0.1:6379 sdiff keys1 keys2
1) "a"
2) "b"

sinter key1 key2#

取key1与key2两个集合中相同的元素,交集

127.0.0.1:6379 sadd keys1 a
(integer) 1
127.0.0.1:6379 sadd keys1 b
(integer) 1
127.0.0.1:6379 sadd keys1 c
(integer) 1
127.0.0.1:6379 sadd keys2 c
(integer) 1
127.0.0.1:6379 sadd keys2 g
(integer) 1
127.0.0.1:6379 sadd keys2 f
(integer) 1
127.0.0.1:6379 sinter keys1 keys2
1) "c"

sunion key1 key2#

将key1与key2两个集合中的元素合在一起,并集

127.0.0.1:6379 sadd keys1 a
(integer) 1
127.0.0.1:6379 sadd keys1 b
(integer) 1
127.0.0.1:6379 sadd keys1 c
(integer) 1
127.0.0.1:6379 sadd keys2 c
(integer) 1
127.0.0.1:6379 sadd keys2 g
(integer) 1
127.0.0.1:6379 sadd keys2 f
(integer) 1
127.0.0.1:6379 sunion keys1 keys2
1) "a"
2) "c"
3) "g"
4) "b"
5) "f"

应用场景#

  • 微博、用户将所有关注的人都放入到一个set集合当中,将它的粉丝也放在一个集合中
  • 共同关注、共同爱好、二度好友、QQ的好友推荐(六度分割理论)

SortedSet( 有序集合) zset#

Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合;zset是一个有序集合,每一个成员有一个分数与之对应,成员不可以重复,但是分数是可以重复的,zset会自动用分数对成员进行排序。

zadd key score value#

将一个或多个 value 及其 socre 加入到 set 中

127.0.0.1:6379 zadd keys 1 a
(integer) 1
127.0.0.1:6379 zrange keys 0 -1
1) "a"

zrange key start end#

0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令相似)

127.0.0.1:6379 zadd keys 1 a
(integer) 1
127.0.0.1:6379 zrange keys 0 -1
1) "a"

zrange key 0 -1 withscores#

连同 score 一块输出,使用 WITHSCORES 参数

127.0.0.1:6379 zadd keys 1 a
(integer) 1
127.0.0.1:6379 zadd keys 2 b
(integer) 1
127.0.0.1:6379 zadd keys 3 c
(integer) 1
127.0.0.1:6379 zrange keys 0 -1 withscores
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"

zremrangebyscore key start end#

范围删除操作

127.0.0.1:6379 zadd keys 1 a
(integer) 1
127.0.0.1:6379 zadd keys 2 b
(integer) 1
127.0.0.1:6379 zadd keys 3 c
(integer) 1
127.0.0.1:6379 zrange keys 0 -1 withscores
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
127.0.0.1:6379 zremrangebyscore keys 0 2
(integer) 2
127.0.0.1:6379 zrange keys 0 -1 withscores
1) "c"
2) "3"

zrangebyscore key min max#

升序排序操作,将key按最小值到最大值进行输出

127.0.0.1:6379 zadd keys 1 a
(integer) 1
127.0.0.1:6379 zadd keys 2 b
(integer) 1
127.0.0.1:6379 zadd keys 3 c
(integer) 1
127.0.0.1:6379 zrangebyscore keys 1 3
1) "a"
2) "b"
3) "c"

srandmember key nums#

倒序排序操作,将key按照从大到小排序输出

127.0.0.1:6379 zadd keys 1 a
(integer) 1
127.0.0.1:6379 zadd keys 2 b
(integer) 1
127.0.0.1:6379 zadd keys 3 c
(integer) 1
127.0.0.1:6379 zrevrangebyscore keys 3 1
1) "c"
2) "b"
3) "a"

zrem key value#

删除指定的元素

127.0.0.1:6379 zadd keys 1 a
(integer) 1
127.0.0.1:6379 zadd keys 2 b
(integer) 1
127.0.0.1:6379 zadd keys 3 c
(integer) 1
127.0.0.1:6379 zrem keys b
(integer) 1
127.0.0.1:6379 zrange keys 0 -1
1) "a"
2) "c"
127.0.0.1:6379 zrem keys d
(integer) 0
127.0.0.1:6379 zrange keys 0 -1
1) "a"
2) "c"

zcard key#

获取有序集合中的个数

127.0.0.1:6379 zadd keys 1 a
(integer) 1
127.0.0.1:6379 zadd keys 2 b
(integer) 1
127.0.0.1:6379 zadd keys 3 c
(integer) 1
127.0.0.1:6379 zrem keys b
(integer) 1
127.0.0.1:6379 zrange keys 0 -1
1) "a"
2) "c"
127.0.0.1:6379 zrem keys d
(integer) 0
127.0.0.1:6379 zrange keys 0 -1
1) "a"
2) "c"
127.0.0.1:6379 zcard keys
(integer) 2

count key min max#

获取指定区间的成员数量

127.0.0.1:6379 zadd keys 1 a
(integer) 1
127.0.0.1:6379 zadd keys 2 b
(integer) 1
127.0.0.1:6379 zadd keys 3 c
(integer) 1
127.0.0.1:6379 zrem keys b
(integer) 1
127.0.0.1:6379 zrange keys 0 -1
1) "a"
2) "c"
127.0.0.1:6379 zrem keys d
(integer) 0
127.0.0.1:6379 zrange keys 0 -1
1) "a"
2) "c"
127.0.0.1:6379 zcard keys
(integer) 2
127.0.0.1:6379 zcount keys 0 2
(integer) 1

应用场景#

  • 存储班级成绩表、工资表排序

参考#

Redis中文命令手册