mget key1 key2 ...
127.0.0.1:6379> mget a b c d
1) "1"
2) "2"
3) "3"
4) "4"
用于对值做自增操作
值如果不是整数,返回错误
值是整数,返回自增后的结果
键不存在,按照值为 0 自增,返回结果 1
incr key
27.0.0.1:6379> exists key
(integer) 0
# 键不存在,按照值为 0 自增,返回结果 1
127.0.0.1:6379> incr key
(integer) 1
127.0.0.1:6379> incr key
(integer) 2
# 值不是整数,返回错误
127.0.0.1:6379> set hello world
127.0.0.1:6379> incr hello
(error) ERR value is not an integer or out of range
常用命令#
设置值#
# 键: key 、值: field value
hset key field value
127.0.0.1:6379> hset user name mingyu
(integer) 1
获取值#
# 如果键或 field 不存在,则会返回 nil
hget key field
127.0.0.1:6379> hget user name
"mingyu"
# field 不存在,返回 nil
127.0.0.1:6379> hget user age
(nil)
删除 field#
# 结果返回成功删除 field 的个数
hdel key field
127.0.0.1:6379> hdel user name
(integer) 1
127.0.0.1:6379> hdel user age
(integer) 0
计算 field 个数#
hlen key
127.0.0.1:6379> hset user name mingyu
(integer) 1
127.0.0.1:6379> hset user age 18
(integer) 1
# 键 user 含有 2 个 field: name、age
127.0.0.1:6379> hlen user
(integer) 2
判断 field 是否存在#
# 存在返回 1, 不存在返回 0
hexists key field
127.0.0.1:6379> hexists user name
(integer) 1
127.0.0.1:6379> hexists user city
(integer) 0
获取所有 field#
hkeys key
127.0.0.1:6379> hkeys user
1) "name"
2) "age"
获取所有 value#
hvals key
127.0.0.1:6379> hvals user
1) "mingyu"
2) "18"
列表是用于存储多个有序的字符串
在 Redis 中,不仅可以对列表两端进行插入(push)和弹出(pop)的操作,还可以进行获取指定范围的元素列表、获取指定索引下标的元素等操作。列表是一种比较灵活的数据结构,可以充当栈和队列。
列表的特点:
元素是有序的(可以获取某个范围的元素列表)
列表中的元素可以是重复的
常用命令#
添加操作#
# 从右边插入元素
rpush key value [value ...]
# 从左边插入元素
lpush key value [value ...]
127.0.0.1:6379> lpush listkey b a c
(integer) 3
127.0.0.1:6379> lrange listkey 0 -1
1) "c"
2) "a"
3) "b"
获取指定范围内的元素列表#
列表下标从左到右是 0 ~ n - 1,从右到左是 -1 ~ - n
lrange key start end
# 可以获取从左到右所有列表元素
lrange listkey 0 -1
获取指定下标的元素#
lindex key index
127.0.0.1:6379> lindex listkey -1
获取列表长度#
llen key
127.0.0.1:6379> llen listkey
(integer) 3
从列表弹出元素#
# 从列表左侧弹出元素
lpop key
# 从列表右侧弹出元素
rpop key
127.0.0.1:6379> lpop listkey
127.0.0.1:6379> lrange listkey 0 -1
1) "a"
2) "b"
删除指定的元素#
这个命令会有 3 种情况:
count > 0 从左到右删除最多 count 个元素
count < 0 从右到左删除最多 count 绝对值个元素
count = 0 删除所有元素
lrem key count value
127.0.0.1:6379> lpush listkey a a a a a java b a
(integer) 8
127.0.0.1:6379> lrange listkey 0 -1
1) "a"
2) "b"
3) "java"
4) "a"
5) "a"
6) "a"
7) "a"
8) "a"
127.0.0.1:6379> lrem listkey 4 a
(integer) 4
127.0.0.1:6379> lrange listkey 0 -1
1) "b"
2) "java"
3) "a"
4) "a"
127.0.0.1:6379>
按照索引范围修剪列表#
ltrim key start end
# 会保留列表 listkey 第 2 ~ 4 个元素
127.0.0.1:6379> ltrim listkey 1 3
127.0.0.1:6379> lrange listkey 0 -1
1) "java"
2) "a"
3) "a"
# 修改指定索引下标的元素
lset key index newValue
127.0.0.1:6379> lrange listkey 0 -1
1) "java"
2) "a"
3) "a"
127.0.0.1:6379> lset listkey 0 a
127.0.0.1:6379> lrange listkey 0 -1
1) "a"
2) "a"
3) "a"
集合与列表类型类似,不允许有重复元素,且集合中元素是无序的
集合内常用命令#
添加元素#
sadd key element [element...]
127.0.0.1:6379> sadd myset a b c
(integer) 3
# 集合中已经有a b, 所以此次添加成功元素为 0 个
127.0.0.1:6379> sadd myset a b
(integer) 0
删除元素#
srem key element [element...]
127.0.0.1:6379> srem myset a b
(integer) 2
# 集合中并没有 hello 元素,所以删除元素个数为 0
127.0.0.1:6379> srem myset hello
(integer) 0
计算元素个数#
scard key
127.0.0.1:6379> scard myset
(integer) 1
判断元素是否在集合中#
sismember key element
127.0.0.1:6379> sismember myset c
(integer) 1
127.0.0.1:6379> sismember myset hello
(integer) 0
从集合中随机弹出元素#
# 弹出元素会将元素从集合中删除
spop key
127.0.0.1:6379> spop myset
127.0.0.1:6379> exists myset
(integer) 0
获取所有元素#
# 返回结果是无序的
smembers key
127.0.0.1:6379> smembers myset
(empty array)
127.0.0.1:6379> sadd myset a b c
(integer) 3
127.0.0.1:6379> smembers myset
1) "c"
2) "a"
3) "b"
有序集合#
与集合类似,不同的是集合中的元素是有序的
集合内常用命令#
添加成员#
zadd key score member [score member ...]
# 向有序集合 user:ranking 添加用户
127.0.0.1:6379> zadd user:ranking 251 mingyu 100 jack
(integer) 2
计算成员个数#
zcard key
127.0.0.1:6379> zcard user:ranking
(integer) 2
计算某个成员的分数#
zscore key member
127.0.0.1:6379> zscore user:ranking mingyu
"251"
127.0.0.1:6379> zscore user:ranking jack
"100"
127.0.0.1:6379> zscore user:ranking tom
(nil)
计算成员排名#
排名从 0 开始
# 从低到高排名
zrank key member
# 从高到低排名
zrevrank key member
127.0.0.1:6379> zrank user:ranking mingyu
(integer) 1
127.0.0.1:6379> zrevrank user:ranking mingyu
(integer) 0
删除成员#
zrem key member
127.0.0.1:6379> zrem user:ranking jack
(integer) 1
127.0.0.1:6379> zcard user:ranking
(integer) 1
增加成员分数#
zincrby key increment member
127.0.0.1:6379> zincrby user:ranking 9 mingyu
"260"
参考资料#