Redis 客户端命令总结

注意:括号里是参数,具体使用的时候不需要括号和逗号,直接使用空格分隔命令以及各个参数即可。

1、对Key操作的命令

exists(key):确认一个key是否存在。存在返回1,不存在返回0。

del(key):删除一个 key。key 存在返回1,不存在返回0。

expire(key, seconds):为给定 key 设置过期时间,以秒计。key 存在返回1,不存在返回0。

expireat(key, seconds-timestamp):为给定 key 设置过期时间。以秒计,时间参数是 unix  时间戳。key 存在返回1,不存在返回0。(不清楚)

pexpire(key, milliseconds):为给定 key 设置过期时间,以毫秒计。key 存在返回1,不存在返回0。

pexpireat(key, milliseconds-timestamp):为给定 key 设置过期时间。以毫秒计,时间参数是 unix  时间戳。key 存在返回1,不存在返回0。(不清楚)

ttl(key):以秒为单位返回 key 的剩余生存时间。永久 key 的返回-1。

pttl(key):以毫秒为单位返回 key 的剩余生存时间。永久 key 的返回-1。

persist(key):移除 key 的过期时间,key 将持久保持。

keys(pattern):返回所有符合给定模式( pattern)的 key 。

move(key, dbindex):将当前数据库中的 key 转移到 dbindex 数据库,dbindex 为0到15。

rename(oldname, newname):将 key 由 oldname 重命名为 newname。若 newname 的 key 存在则删除 newname 表示的 key,然后再将 key 由 oldname 重命名为 newname。

rnamenx(oldname, newname):将 key 由 oldname 重命名为 newname。若 newname 的 key 存在则不做操作。

type(key):返回 key 所储存的值的类型。

dump(key):序列化给定 key ,并返回被序列化的值。(不清楚)

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

2、对String操作的命令

set(key, value):给名称为 key 的 string 赋予值 value。

get(key):返回名称为 key 的 string 的 value。

substr(key, start, end):返回名称为 key 的 string 的子字符串(start 到 end 之间,包括 start 和 end),start 和 end 为字符索引,从0开始。

getrange(key, start, end):返回名称为 key 的 string 的子字符串(start 到 end 之间,包括 start 和 end),start 和 end 为字符索引,从0开始。

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

mset(key1, value1, key2, value2, …, keyN, valueN):同时给多个 string 赋值,名称为 key i 的 string 赋值 value i。

mget(key1, key2,…, keyN):返回名称为 key1 到 keyN 的 string 的 value。

setex(key, seconds, value):给名称为 key 的 string 赋予值 value。同时设定过期时间 seconds,以秒计。

psetex(key, milliseconds, value):给名称为 key 的 string 赋予值 value。同时设定过期时间 milliseconds,以毫秒计。

setnx(key, value):如果不存在名称为 key 的 string,则向库中添加 string,名称为 key,值为 value。key 存在则不添加。

msetnx(key1, value1, key2, value2, …, keyN, valueN):同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。只要有一个 key 存在,所有的 key 都不会设置。

strlen(key):返回 key 所储存的字符串值 value 的长度。

incr(key):名称为 key 的 value 增1操作。该 value 必须为整数,否则报错。

incrby(key, integer):名称为 key 的 value 增加 integer。该 value 必须为整数,否则报错。

incrbyfloat(key, float):名称为 key 的 value 增加 float。该 value 必须为数字,否则报错。这个主要是能添加浮点量。

decr(key):名称为 key 的 value 减1操作。该 value 必须为整数,否则报错。

decrby(key, integer):名称为 key 的 value 减少 integer。该 value 必须为整数,否则报错。

append(key, value):名称为 key 的 string 的值末尾附加 value。返回新 value 字符串的长度。

3、对List操作的命令

有序可重复

rpush(key, value1, ..., valueN):在名称为 key 的 list 尾添加值为 value1 到 valueN 的元素。

lpush(key, value1, ..., valueN):在名称为 key 的 list 头添加值为 value1 到 valueN 的元素。

rpushx(key, value):为已存在的列表 key 尾部添加 value,返回添加后列表的长度。不存在则不添加,返回0。

lpushx(key, value):为已存在的列表 key 头部添加 value,返回添加后列表的长度。不存在则不添加,返回0。

linsert(key, before|after, pivot, value):在名称为 key 的 list 指定元素 pivot 的前面或者后面插入元素 value。如果指定元素 pivot 不存在,则返回-1,存在则返回插入元素后列表的总元素个数。

llen(key):返回名称为 key 的 list 的长度。

lrange(key, start, end):返回名称为 key 的 list 中 start 至 end 之间的元素(包括 start 和 end,下标从0开始。下同)。

ltrim(key, start, end):截取名称为 key 的 list,保留 start 至 end 之间的元素,对原列表进行了修改。

lindex(key, index):返回名称为 key 的 list 中 index 位置的元素。

lset(key, index, value):给名称为 key 的 list 中 index 位置的元素赋值为 value,index 必须为列表中已有的下标。

lrem(key, count, value):在名称为 key 的 list 中 删除 count 个值为 value 的元素。count 为 0,删除所有值为value的元素,count > 0 从头至尾删除 count 个值为 value 的元素,count < 0 从尾到头删除 |count| 个值为 value 的元素。

lpop(key):返回并删除名称为 key 的 list 中的首元素。也就是将该列表中第一个元素返回,并且在列表中删除该元素。

rpop(key):返回并删除名称为 key 的 list 中的尾元素。也就是将该列表中最后一个元素返回,并且在列表中删除该元素。

blpop(key1, key2, …, keyN, timeout):lpop 命令的 block 版本。即当 timeout 为 0 时,若遇到名称为 key i 的 list 不存在或该 list 为空,则命令结束。如果 timeout > 0,则遇到上述情况时,等待 timeout 秒,如果问题没有解决,则对 key i+1 开始的 list 执行 lpop 操作。

brpop(key1, key2,… keyN, timeout):rpop 命令的 block 版本。参考上一命令。

rpoplpush(srckey, dstkey):返回并删除名称为 srckey 的 list 的尾元素,并将该元素添加到名称为 dstkey 的 list 的头部。

brpoplpush(srckey, dstkey, timeout):返回并删除名称为 srckey 的 list 的尾元素,并将该元素添加到名称为 dstkey 的 list 的头部。 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

4、对Set操作的命令

无序不可重复

sadd(key, member1, ..., memberN):向名称为 key 的 set 中添加元素 member1 到 memberN。

srem(key, member1, ..., memberN):删除名称为 key 的 set 中的元素 member1 到 memberN。

srandmember(key, count):随机返回名称为 key 的 set 的一个或多个(count)元素。不写 count 时默认为1。

spop(key):随机返回并删除名称为 key 的 set 中一个元素。

scard(key):返回名称为 key 的 set 的元素个数。

smembers(key):返回名称为 key 的 set 的所有元素。

smove(srckey, dstkey, member):将 member 元素从名称为 srckey 的 set 集合移到名称为 dstkey 的 set 集合。

sismember(key, member):测试 member 是否是名称为 key 的 set 的元素,是的话返回1,不是的话返回0。

sinter(key1, key2, …, keyN):返回名称为key1 到 keyN 的 set 集合的交集。

sinterstore(dstkey, key1, key2, …, keyN):求名称为key1 到 keyN 的 set 集合的交集并将交集保存到名称为 dstkey 的 set 集合。返回交集元素的个数。

sunion(key1, key2, …, keyN):返回名称为key1 到 keyN 的 set 集合的并集。

sunionstore(dstkey, key1, key2, …, keyN):求名称为key1 到 keyN 的 set 集合的并集并将并集保存到名称为 dstkey 的 set 集合。返回并集元素的个数。

sdiff(key1, key2, …, keyN):返回名称为key1 到 keyN 的 set 集合的差集。

sdiffstore(dstkey, key1, key2, …, keyN) :求名称为key1 到 keyN 的 set 集合的差集并将差集保存到名称为 dstkey 的 set 集合。返回差集元素的个数。

5、对Zset操作的命令

有序不可重复(sorted set)

zadd(key, score1, member1, ..., scoreN, memberN):向名称为 key 的 zset 中添加元素 member1 到 memberN。如果该元素已经存在,则该元素的 score 更新为新的score。(score用于排序,为数字),返回新加元素的个数。

zincrby(key, increment, member):向名称为 key 的 zset 中添加元素 member,其 score 值为 increment,返回 score。如果该元素已经存在,则该元素的 score 增加 increment,返回更新后的 score。

zrem(key, member1, ... memberN):删除名称为 key 的 zset 中的元素 member1 到 memberN。

zcard(key):返回名称为 key 的 zset 元素的个数。

zscore(key, element):返回名称为 key 的 zset 中元素 element 的 score。元素不存在返回 null。

zcount(key, min, max):计算名称为 key 的 zset 中 score >= min 且 score <= max 的所有元素的总数。

zrank(key, member):返回名称为 key 的 zset(元素已按 score 从小到大排序)中 member 元素的 rank(即 index,从0开始),若没有 member 元素,返回 null。

zrevrank(key, member):返回名称为 key 的 zset(元素已按 score 从大到小排序)中 member 元素的 rank(即 index,从0开始),若没有 member 元素,返回 null。

zrange(key, start, end):返回名称为 key 的 zset(元素已按 score 从小到大排序)中的 index 从 start 到 end 的所有元素。

zrevrange(key, start, end):返回名称为 key 的 zset(元素已按 score 从大到小排序)中的 index 从 start 到 end 的所有元素。

zrangebyscore(key, min, max):返回名称为 key 的 zset 中 score >= min 且 score <= max 的所有元素。

zremrangebyrank(key, min, max):删除名称为 key 的 zset(元素已按 score 从小到大排序) 中 rank >= min 且 rank <= max 的所有元素。

zremrangebyscore(key, min, max):删除名称为 key 的 zset 中 score >= min 且 score <= max 的所有元素。

zunionstore / zinterstore(dstkeyN, key1, …, keyN, WEIGHTS w1, …, wN, AGGREGATE SUM|MIN|MAX):对 N 个 zset 求并集/交集,并将最后的集合保存在 dstkeyN 中。对于集合中每一个元素的 score,在进行 AGGREGATE 运算前,都要乘以对应的 WEIGHTS 参数。如果没有提供WEIGHTS,默认为1。默认的 AGGREGATE 是 SUM,即结果集合中元素的 score 是所有集合对应元素进行 SUM 运算的值,而 MIN 和 MAX 是指结果集合中元素的 score 是所有集合对应元素中最小值和最大值。

6、对Hash操作的命令

hset(key, field, value):向名称为 key 的 hash 中添加元素 field<—>value。

hget(key, field):返回名称为 key 的 hash 中 field 对应的 value。

hsetnx(key, field, value):在名称为 key 的 hash 中如果不存指定的 field,则添加元素 field<—>value。反之不添加。

hmset(key, field1, value1, …, fieldN, valueN):向名称为 key 的 hash 中添加元素 field1<—>value1 到 fieldN<—>valueN。

hmget(key, field1, …, fieldN):返回名称为 key 的 hash 中 field1 到 findN 对应的value。

hincrby(key, field, integer):将名称为 key 的 hash 中 field 的 value 增加 integer,注意 value 类型必须为 integer。

hincrbyfloat(key, field, float):将名称为 key 的 hash 中 field 的 value 增加 float,注意 value 类型必须为数字。和上面的区别是能增加浮点量。

hexists(key, field):判断名称为 key 的 hash 中是否存在键为 field 的域,返回 0 或者 1。

hdel(key, field):删除名称为 key 的 hash 中键为 field 的域,返回删除的数量。

hlen(key):返回名称为 key 的 hash 中元素个数。

hkeys(key):返回名称为 key 的 hash 中所有键 field。

hvals(key):返回名称为 key 的 hash 中所有值 value。

hgetall(key):返回名称为 key 的 hash 中所有的键 field 及其对应的值 value。

7、对HyperLogLog操作的命令

描述

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

命令

pfadd(key, element1, ..., elementN):添加指定元素到 HyperLogLog 中。

l-zcgredis5:1>pfadd runoobkey "redis" "mongodb" "mysql"
"1"
l-zcgredis5:1>pfadd runoobkey1 "redis" "mongodb" "mysql" "mysql"
"1"

pfcount(key1, ..., keyN):返回给定的 HyperLogLog 的基数估算值。

l-zcgredis5:1>pfcount runoobkey1 runoobkey
"3"

pfmerge(destkey, sourcekey1, ..., sourcekeyN):将多个 HyperLogLog 合并为一个 HyperLogLog。

l-zcgredis5:1>pfmerge myhll runoobkey runoobkey1
"OK"

8、发布订阅命令

psubscribe(pattern1, ..., patternN):订阅一个或者多个给定模式的频道。

punsubscribe(pattern1, ..., patternN):退订所有给定模式的频道。

subscribe(channel1, ..., channelN):订阅给定的一个或多个频道。

unsubscribe(channel1, ..., channelN):退订给定的一个或多个频道。

pubsub(subcommand, argument):查看订阅与发布系统状态。

publish(channel, message):将信息发送到指定的频道。

9、事务命令

描述

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。

事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

命令

discard:取消事务,放弃执行事务块内的所有命令。

exec:执行所有事务块内的命令。

multi:标记一个事务块的开始。

unwatch:取消 WATCH 命令对所有 key 的监视。

watch(key1, ..., keyN):监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

示例

如果在 set b 处失败,set a 已成功不会回滚,set c 还会继续执行。

l-zcgredis5:1>multi
"OK"

l-zcgredis5:1>set a aaa
"QUEUED"

l-zcgredis5:1>set b bbb
"QUEUED"

l-zcgredis5:1>set c ccc
"QUEUED"

l-zcgredis5:1>exec
 1)  "OK"
 2)  "OK"
 3)  "OK"
l-zcgredis5:1>

10、脚本命令

描述

Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL

命令

eval(script, numkeys, key1, ..., keyN, arg1, ..., argN):执行Lua脚本。

evalsha(sha1, numkeys, key1, ..., keyN, arg1, ..., argN):执行 Lua 脚本。

script exists(script1, ..., scriptN):查看指定的脚本是否已经被保存在缓存当中。

script flush:从脚本缓存中移除所有脚本。

script kill:杀死当前正在运行的 Lua 脚本。

script load(script):将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。

示例

l-zcgredis5:1>EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
 1)  "key1"
 2)  "key2"
 3)  "first"
 4)  "second"
l-zcgredis5:1>

11、连接命令

quit:关闭当前连接

auth(password):验证密码是否正确。

echo(message):打印 message 字符串。

select(index):切换到指定的数据库。

ping:查看服务是否运行。

l-zcgredis5:1>ping
"PONG"

12、服务器命令

client kill(ip:port):关闭客户端连接。

client list:获取连接到服务器的客户端连接列表。

client setname(connection-name):设置当前连接的名称。

client getname:获取连接的名称。

client pause(timeout):在指定时间内终止运行来自客户端的命令。

cluster slots:获取集群节点的映射数组。

command:获取 Redis 命令详情数组。

command count:获取 Redis 命令总数。

command getkeys:获取给定命令的所有键。(不清楚)

command info(command-name1, ..., command-nameN):获取指定Redis命令描述的数组。

time:返回当前服务器时间。一个包含两个字符串的列表: 第一个字符串是当前时间(以 UNIX 时间戳格式表示),而第二个字符串是当前这一秒钟已经逝去的微秒数。

config get(parameter):获取指定配置参数的值,parameyer 为 * 的时候,获取所有配置信息。

config rewrite:对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写。

config set(parameter, value):修改 redis 配置参数,无需重启。

config resetstat:重置 INFO 命令中的某些统计数据。

dbsize:返回当前数据库中 key 的数量。

debug object(key):获取 key 的调试信息。

debug segfault:执行一个非法的内存访问从而让 Redis 崩溃,仅在开发时用于 BUG 调试。

flushdb:删除当前数据库中的所有 key。

flushall:删除所有数据库中的所有key。

info(section):获取Redis服务器的各种信息和统计数值。section 为空的话会显示所有信息,section 值为 Server、Clients、Memory、Persistence、Stats、Replication、CPU、Keyspace。

save:将数据同步保存到磁盘。

lastsave:返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示。

bgsave:将数据异步保存到磁盘。

bgrewriteaof:异步执行一个 AOF(AppendOnly File) 文件重写操作。

monitor:实时打印出 Redis 服务器接收到的命令,调试用。实时转储收到的请求。

role:返回主从实例所属的角色。

shutdown:将数据同步保存到磁盘,然后关闭服务。

slaveof(ip:port):改变复制策略设置。将当前服务器转变为指定服务器的从属服务器(slave server)。如果当前服务器已经是某个主服务器(master server)的从属服务器,那么执行 SLAVEOF host port 将使当前服务器停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步。

slave no one:对一个从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。利用『 SLAVEOF NO ONE 不会丢弃同步所得数据集』这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行。

slowlog :管理 redis 的慢日志。

sync:用于复制功能(replication)的内部命令。用于同步主从服务器。

 

posted @ 2016-12-22 14:09  一线大码  Views(5972)  Comments(0Edit  收藏  举报