您的位置:首页 > 数据库 > Redis

[Redis学习笔记]-Redis命令

2017-11-07 19:07 411 查看

Redis 命令

Redis 命令用于在 redis 服务上执行操作。

要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。

本地客户端连接

$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG


该命令用于检测 redis 服务是否启动。

在远程服务上执行命令

$redis-cli -h 127.0.0.1 -p 6379 -a "abc123"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING

PONG


key命令

key命令用于管理 redis 的键。

语法

Redis 键命令的基本语法如下:

COMMAND KEY_NAME


实例

127.0.0.1:6379> SET msg helloworld
OK
127.0.0.1:6379> GET msg
"helloworld"
127.0.0.1:6379> del msg
(integer) 1


DEL key

该命令用于在 key 存在时删除 key

127.0.0.1:6379> SET msg helloworld
OK
127.0.0.1:6379> GET msg
"helloworld"
127.0.0.1:6379> del msg
(integer) 1


DUMP key

序列化给定 key ,并返回被序列化的值。

127.0.0.1:6379> SET msg helloworld
OK
127.0.0.1:6379> DUMP msg
"\x00\nhelloworld\x06\x00'$'\x1c\xb3\xf7\bJ"


EXISTS key

检查给定 key 是否存在。

127.0.0.1:6379> EXISTS msg
(integer) 1


返回1,表示存在

EXPIRE key seconds

为给定 key 设置过期时间,单位秒。

127.0.0.1:6379> EXPIRE msg 10
(integer) 1
127.0.0.1:6379> TTL msg
(integer) 1
127.0.0.1:6379> TTL msg
(integer) 0
127.0.0.1:6379> TTL msg
(integer) -2
127.0.0.1:6379> GET msg
(nil)


TTL用于检查指定key有效时间,返回-2负数表示过期。

EXPIREAT key timestamp

EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。

127.0.0.1:6379> EXPIREAT msg 1000000
(integer) 1


PEXPIRE key milliseconds

设置 key 的过期时间以毫秒计

127.0.0.1:6379> PEXPIRE msg 1000
(integer) 1
127.0.0.1:6379> PTTL msg
(integer) 66
127.0.0.1:6379> PTTL msg
(integer) -2


PTTL命令用于检查指定key的有效期,单位毫秒,返回-2表示已过期。

KEYS pattern

查找所有符合给定模式( pattern)的 key 。

127.0.0.1:6379> SET name1 zhangsan
OK
127.0.0.1:6379> set name2 lisi
OK
127.0.0.1:6379> set name3 wangwu
OK
127.0.0.1:6379> KEYS *
1) "name2"
2) "name1"
3) "name3"
127.0.0.1:6379> KEYS n*
1) "name2"
2) "name1"
3) "name3"


MOVE key db

将当前数据库的 key 移动到给定的数据库 db 当中。

127.0.0.1:6379> KEYS *
1) "name2"
2) "name1"
3) "name3"
127.0.0.1:6379> MOVE name1 1
(integer) 1
127.0.0.1:6379> KEYS *
1) "name2"
2) "name3"
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> KEYS *
1) "name1"


上面示例中的SELECT 指令用于选择要操作的redis db(redis默认有16个db,索引为0-15)

PERSIST key

移除 key 的过期时间,key 将持久保持。

127.0.0.1:6379> PERSIST User:0
(integer) 0


PTTL key

以毫秒为单位返回 key 的剩余的过期时间,返回-1表示永久有效。

127.0.0.1:6379> PTTL name3
(integer) -1


TTL key

以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live),返回-1 表示永久有效。

127.0.0.1:6379> TTL name3
(integer) -1


RANDOMKEY

从当前数据库中随机返回一个 key 。

127.0.0.1:6379> RANDOMKEY
"name3"


RENAME key newkey

修改 key 的名称,neweky 存在则覆盖

127.0.0.1:6379> SET name1 zhangsan
OK
127.0.0.1:6379> SET name2 lisi
OK
127.0.0.1:6379> KEYS *
1) "name2"
2) "name1"
127.0.0.1:6379> GET name1
"zhangsan"
127.0.0.1:6379> GET name2
"lisi"
127.0.0.1:6379> RENAME name2 name1
OK
127.0.0.1:6379> GET name1
"lisi"
127.0.0.1:6379> GET name2
(nil)


上面的操作可以看到修改key为name2为name1后,name1被覆盖,name2则被删除掉了。

RENAMENX key newkey

仅当 newkey 不存在时,将 key 改名为 newkey 。

127.0.0.1:6379> SET name1 zhangsan
OK
127.0.0.1:6379> set name2 lisi
OK
127.0.0.1:6379> KEYS *
1) "name2"
2) "name1"
127.0.0.1:6379> GET name1
"zhangsan"
127.0.0.1:6379> GET name2
"lisi"
127.0.0.1:6379> RENAMENX name2 name1
(integer) 0
127.0.0.1:6379> RENAMENX name2 name3
(integer) 1
127.0.0.1:6379> KEYS *
1) "name1"
2) "name3"


上面的例子可以看到,修改name2位name1时,name1已存在,则无法修改,修改为name3时,name3不存在,修改成功!

TYPE key

返回 key 所储存的值的类型。

127.0.0.1:6379> SET strTest hello
OK
127.0.0.1:6379> HMSET hashTest name zhangsan age 20
OK
127.0.0.1:6379> LPUSH listTest element1
(integer) 1
127.0.0.1:6379> SADD setTest element1
(integer) 1
127.0.0.1:6379> ZADD zsetTest 0 element1
(integer) 1
127.0.0.1:6379> TYPE strTest
string
127.0.0.1:6379> TYPE hashTest
hash
127.0.0.1:6379> TYPE listTest
list
127.0.0.1:6379> TYPE setTest
set
127.0.0.1:6379> TYPE zsetTest
zset


Redis 字符串命令

SET key value

设置指定 key 的值

127.0.0.1:6379> SET msg helloworld
OK


GET key

获取指定 key 的值

127.0.0.1:6379> GET msg
"helloworld"


GETRANGE key start end

返回 key 中字符串值的子字符

127.0.0.1:6379> GETRANGE msg 0 4
"hello"


GETSET key value

将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

127.0.0.1:6379> GETSET msg hellozhangsan
"helloworld"
127.0.0.1:6379> GET msg
"hellozhangsan"


SETBIT key offset value

对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

127.0.0.1:6379> SET msg hello
OK
127.0.0.1:6379> GET msg
"hello"
127.0.0.1:6379> GETBIT msg 1
(integer) 1
127.0.0.1:6379> SETBIT msg 1 0
(integer) 1
127.0.0.1:6379> GETBIT msg 1
(integer) 0
127.0.0.1:6379> GET msg
"(ello"


GETBIT key offset

对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

当 offset 比字符串值的长度大,或者 key 不存在时,返回 0 。

127.0.0.1:6379> SET msg hello
OK
127.0.0.1:6379> GET msg
"hello"
127.0.0.1:6379> GETBIT msg 1
(integer) 1
127.0.0.1:6379> SETBIT msg 1 0
(integer) 1
127.0.0.1:6379> GETBIT msg 1
(integer) 0
127.0.0.1:6379> GET msg
"(ello"


MGET key1 [key2..]

获取所有(一个或多个)给定 key 的值。

127.0.0.1:6379> SET name1 zhangsan
OK
127.0.0.1:6379> SET name2 lisi
OK
127.0.0.1:6379> SET name3 wang
OK
127.0.0.1:6379> MGET name1 name2 name3
1) "zhangsan"
2) "lisi"
3) "wang"


SETEX key seconds value

将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

127.0.0.1:6379> SETEX msg 10 helloworld
OK
127.0.0.1:6379> GET msg "helloworld"127.0.0.1:6379> TTL msg
(integer) 4


SETNX key value

只有在 key 不存在时设置 key 的值。

127.0.0.1:6379> KEYS *
(empty list or set)
127.0.0.1:6379> SET msg1 helloworld
OK
127.0.0.1:6379> SETNX msg1 hellozhangsan
(integer) 0
127.0.0.1:6379> SETNX msg2 hellozhangsan
(integer) 1
127.0.0.1:6379> KEYS *
1) "msg2"
2) "msg1"
127.0.0.1:6379> GET msg1
"helloworld"
127.0.0.1:6379> GET msg2
"hellozhangsan"


SETRANGE key offset value

用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

127.0.0.1:6379> set msg helloworld
OK
127.0.0.1:6379> GET msg "helloworld"127.0.0.1:6379> SETRANGE msg 6 zhangsan
(integer) 14
127.0.0.1:6379> GET msg
"hellowzhangsan"


STRLEN key

返回 key 所储存的字符串值的长度

127.0.0.1:6379> SET msg helloworld
OK127.0.0.1:6379> STRLEN msg
(integer) 10


MSET key value [key value …]

同时设置一个或多个 key-value 对。

127.0.0.1:6379> MSET name1 zhangsan name2 lisi name3 wang
OK
127.0.0.1:6379> KEYS name*
1) "name2"
2) "name1"
3) "name3"


MSETNX key value [key value …]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

127.0.0.1:6379> MSETNX name1 zhangsan name2 lisi name3 wang
(integer) 0
127.0.0.1:6379> MSETNX name4 zhangsan name5 lisi name6 wang
(integer) 1
127.0.0.1:6379> KEYS name*
1) "name5"
2) "name4"
3) "name3"
4) "name2"
5) "name6"
6) "name1"


PSETEX key milliseconds value

这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。

127.0.0.1:6379> PSETEX msg 12345 helloworld
OK
127.0.0.1:6379> PTTL msg
(integer) 6708


INCR key

将 key 中储存的数字值增一。

127.0.0.1:6379> SET num 1
OK
127.0.0.1:6379> INCR num
(integer) 2
127.0.0.1:6379> INCR num
(integer) 3
127.0.0.1:6379> GET num
"3"


DECR key

将 key 中储存的数字值减一。

127.0.0.1:6379> GET num
"3"
127.0.0.1:6379> DECR num
(integer) 2
127.0.0.1:6379> DECR num
(integer) 1
127.0.0.1:6379> GET num
"1"


DECRBY key decrement

key 所储存的值减去给定的减量值(decrement) 。

127.0.0.1:6379> SET num 10
OK
127.0.0.1:6379> GET num
"10"
127.0.0.1:6379> DECRBY num 5
(integer) 5
127.0.0.1:6379> GET num
"5"


APPEND key value

如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

127.0.0.1:6379> SET msg hello
OK
127.0.0.1:6379> GET msg
"hello"
127.0.0.1:6379> APPEND msg world
(integer) 10
127.0.0.1:6379> GET msg
"helloworld"


Redis hash 命令

HDEL key field1 [field2]

删除一个或多个哈希表字段

127.0.0.1:6379> HMSET user name zhagsan age 20
OK
127.0.0.1:6379> HGETALL user
1) "name"
2) "zhagsan"
3) "age"
4) "20"
127.0.0.1:6379> HDEL user age
(integer) 1
127.0.0.1:6379> HGETALL user
1) "name"
2) "zhagsan"


HEXISTS key field

查看哈希表 key 中,指定的字段是否存在。

127.0.0.1:6379> HEXISTS user name
(integer) 1
127.0.0.1:6379> HGET user name
"zhagsan"


HGET key field

获取存储在哈希表中指定字段的值。

127.0.0.1:6379> HGET user name
"zhagsan"


HGETALL key

获取在哈希表中指定 key 的所有字段和值

127.0.0.1:6379> HGETALL user
1) "name"
2) "zhagsan"
3) "age"
4) "20"


HKEYS key

获取所有哈希表中的字段

127.0.0.1:6379> HKEYS user
1) "name"
2) "age"


HLEN key

获取哈希表中字段的数量

127.0.0.1:6379> HLEN user
(integer) 2


HMGET key field1 [field2]

获取所有给定字段的值

127.0.0.1:6379> HMGET user name age
1) "zhagsan"
2) "20"


HMSET key field1 value1 [field2 value2 ]

同时将多个 field-value (域-值)对设置到哈希表 key 中。

127.0.0.1:6379> HMSET user name lisi age 30
OK
127.0.0.1:6379> HGETALL user
1) "name"
2) "lisi"
3) "age"
4) "30"


HSET key field value

将哈希表 key 中的字段 field 的值设为 value 。

127.0.0.1:6379> HGETALL user
1) "name"
2) "lisi"
3) "age"
4) "30"
127.0.0.1:6379> HSET user age 20
(integer) 0
127.0.0.1:6379> HGETALL user
1) "name"
2) "lisi"
3) "age"
4) "20"


HVALS key

获取哈希表中所有值

127.0.0.1:6379> HVALS user
1) "lisi"
2) "20"


Redis 列表命令

LINDEX key index

通过索引获取列表中的元素

127.0.0.1:6379> LRANGE names1 0 5
1) "lisi"
2) "zhaoliu"
3) "wang"
127.0.0.1:6379> LINDEX names1 1
"zhaoliu"


LLEN key

获取列表长度

127.0.0.1:6379> LLEN names
(integer) 3


LPOP key

移出并获取列表的第一个元素

127.0.0.1:6379> LPOP names
"wang"
127.0.0.1:6379> LLEN names
(integer) 2


LPUSH key value1 [value2]

将一个或多个值插入到列表头部

127.0.0.1:6379> LPUSH names zhangsan lisi wang
(integer) 3


LPUSHX key value

将一个值插入到已存在的列表头部

127.0.0.1:6379> LPUSHX names zhaoliu
(integer) 3


LRANGE key start stop

获取列表指定范围内的元素

127.0.0.1:6379> LRANGE names 0 5
1) "zhaoliu"
2) "lisi"
3) "zhangsan"


LREM key count value

移除列表元素

LSET key index value

通过索引设置列表元素的值

127.0.0.1:6379> LRANGE names1 0 5
1) "lisi"
2) "zhangsan"
3) "wang"
127.0.0.1:6379> LSET names1 1 zhaoliu
OK
127.0.0.1:6379> LRANGE names1 0 5
1) "lisi"
2) "zhaoliu"
3) "wang"


LTRIM key start stop

对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

127.0.0.1:6379> LRANGE names2 0 5
1) "zhangsan"
2) "xiaoming"
3) "xiaobai"
4) "xiaohei"
127.0.0.1:6379> LTRIM names2 3 5
OK
127.0.0.1:6379> LRANGE names2 0 5
1) "xiaohei"


RPOP key

移除并获取列表最后一个元素

127.0.0.1:6379> RPOP names1
"lisi"


RPOPLPUSH source destination

移除列表的最后一个元素,并将该元素添加到另一个列表并返回

127.0.0.1:6379> LRANGE names1 0 5
1) "wang"
2) "lisi"
3) "zhangsan"
127.0.0.1:6379> LRANGE names2 0 5
1) "xiaoming"
2) "xiaobai"
3) "xiaohei"
127.0.0.1:6379> RPOPLPUSH names1 names2
"zhangsan"
127.0.0.1:6379> LRANGE names1 0 5
1) "wang"
2) "lisi"
127.0.0.1:6379> LRANGE names2 0 5
1) "zhangsan"
2) "xiaoming"
3) "xiaobai"
4) "xiaohei"


RPUSH key value1 [value2]

在列表中添加一个或多个值

127.0.0.1:6379> RPUSH names xiaoming xiaobai
(integer) 6


RPUSHX key value

为已存在的列表添加值

127.0.0.1:6379> RPUSHX names wangwu
(integer) 4
127.0.0.1:6379> LRANGE names 0 5 1) "zhaoliu" 2) "lisi" 3) "zhangsan"
4) "wangwu"


Redis 集合命令

SADD key member1 [member2]

向集合添加一个或多个成员

127.0.0.1:6379> SADD color red blue green
(integer) 3


SCARD key

获取集合的成员数

127.0.0.1:6379> SCARD color
(integer) 3


SDIFF key1 [key2]

返回给定所有集合的差集

127.0.0.1:6379> SDIFF color1
1) "red"
2) "green"
3) "blue"
127.0.0.1:6379> SDIFF color2
1) "red"
2) "orange"
3) "yellow"
127.0.0.1:6379> SDIFF color1 color2
1) "green"
2) "blue"


SINTER key1 [key2]

返回给定所有集合的交集

127.0.0.1:6379> SINTER color1
1) "red"
2) "green"
3) "blue"
127.0.0.1:6379> SINTER color2
1) "orange"
2) "red"
3) "yellow"
127.0.0.1:6379> SINTER color1 color2
1) "red"


SISMEMBER key member

判断 member 元素是否是集合 key 的成员,如果是返回1,反之0

127.0.0.1:6379> SISMEMBER color1 red
(integer) 1
127.0.0.1:6379> SISMEMBER color1 yellow
(integer) 0


SMEMBERS key

返回集合中的所有成员

127.0.0.1:6379> SMEMBERS color1
1) "red"
2) "green"
3) "blue"


SMOVE source destination member

将 member 元素从 source 集合移动到 destination 集合

127.0.0.1:6379> SMOVE color1 color2 blue
(integer) 1
127.0.0.1:6379> SMEMBERS color1
1) "red"
2) "green"
127.0.0.1:6379> SMEMBERS color2
1) "orange"
2) "red"
3) "yellow"
4) "blue"


SPOP key

移除并返回集合中的一个随机元素

127.0.0.1:6379> SPOP color1
"red"


SRANDMEMBER key [count]

返回集合中一个或多个随机数

127.0.0.1:6379> SRANDMEMBER color2 2
1) "red"
2) "orange"


SREM key member1 [member2]

移除集合中一个或多个成员

127.0.0.1:6379> SMEMBERS color2
1) "orange"
2) "red"
3) "yellow"
4) "blue"
127.0.0.1:6379> SREM color2 red blue
(integer) 2
127.0.0.1:6379> SMEMBERS color2
1) "orange"
2) "yellow"


SUNION key1 [key2]

返回所有给定集合的并集

127.0.0.1:6379> SMEMBERS color1
1) "green"
127.0.0.1:6379> SMEMBERS color2
1) "orange"
2) "yellow"
127.0.0.1:6379> SUNION color1 color2
1) "orange"
2) "yellow"
3) "green"


Redis 有序集合命令

ZADD key score1 member1 [score2 member2]

向有序集合添加一个或多个成员,或者更新已存在成员的分数

127.0.0.1:6379> ZADD color 0 red 0 blue 0 green
(integer) 3


ZCARD key

获取有序集合的成员数

127.0.0.1:6379> ZCARD color
(integer) 3


ZCOUNT key min max

计算在有序集合中指定区间分数的成员数

127.0.0.1:6379> ZCOUNT color 0 2
(integer) 3


ZINCRBY key increment member

有序集合中对指定成员的分数加上增量 increment

127.0.0.1:6379> ZINCRBY color 1 red
"1"


ZLEXCOUNT key min max

在有序集合中计算指定字典区间内成员数量

127.0.0.1:6379> ZLEXCOUNT color - +
(integer) 3


ZRANGE key start stop [WITHSCORES]

通过索引区间返回有序集合成指定区间内的成员

127.0.0.1:6379> ZRANGE color 0 3
1) "blue"
2) "green"
3) "red"
127.0.0.1:6379> ZRANGE color 0 3 withscores
1) "blue"
2) "0"
3) "green"
4) "0"
5) "red"
6) "0"


ZRANGEBYLEX key min max [LIMIT offset count]

通过字典区间返回有序集合的成员

127.0.0.1:6379> ZRANGEBYLEX color - + limit 0 2
1) "blue"
2) "green"


ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]

通过分数返回有序集合指定区间内的成员

127.0.0.1:6379> ZRANGEBYSCORE color 0 7
1) "blue"
2) "green"
3) "red"
127.0.0.1:6379> ZRANGEBYSCORE color 0 7 withscores
1) "blue"
2) "0"
3) "green"
4) "0"
5) "red"
6) "0"
127.0.0.1:6379> ZRANGEBYSCORE color 0 7 withscores limit 0 2
1) "blue"
2) "0"
3) "green"
4) "0"


ZRANK key member

返回有序集合中指定成员的索引

127.0.0.1:6379> ZRANK color green
(integer) 1


ZREM key member [member …]

移除有序集合中的一个或多个成员

127.0.0.1:6379> ZREM color blue
(integer) 1


ZREMRANGEBYLEX key min max

移除有序集合中给定的字典区间的所有成员

127.0.0.1:6379> ZREMRANGEBYLEX color - +
(integer) 2


ZREMRANGEBYRANK key start stop

移除有序集合中给定的排名区间的所有成员

127.0.0.1:6379> ZREMRANGEBYRANK color 1 3
(integer) 0


ZREMRANGEBYSCORE key min max

移除有序集合中给定的分数区间的所有成员

127.0.0.1:6379> ZREMRANGEBYSCORE color 0 2
(integer) 3


ZREVRANGE key start stop [WITHSCORES]

返回有序集中指定区间内的成员,通过索引,分数从高到底

127.0.0.1:6379> ZREVRANGE color 0 2
1) "red"
2) "green"
3) "blue"


ZREVRANGEBYSCORE key max min [WITHSCORES]

返回有序集中指定分数区间内的成员,分数从高到低排序



ZREVRANK key member

返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

127.0.0.1:6379> ZREVRANK color blue
(integer) 2


ZSCORE key member

返回有序集中,成员的分数值

127.0.0.1:6379> ZSCORE color blue
"0"


ZSCAN key cursor [MATCH pattern] [COUNT count]

迭代有序集合中的元素(包括元素成员和元素分值)

127.0.0.1:6379> ZSCAN color 0
1) "0"
2) 1) "blue"
2) "0"
3) "green"
4) "0"
5) "red"
6) "1"
127.0.0.1:6379> ZSCAN color 0 Match b*
1) "0"
2) 1) "blue"
2) "0"
127.0.0.1:6379> ZSCAN color 0 Match b* Count 1
1) "0"
2) 1) "blue"
2) "0"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: