1.echo,打印一个特定的信息 message ,测试时使用
cluster.echo("你好,echo!")
2.ping,使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG ;通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值(注:集群不支持)
No way to dispatch this command to Redis Cluster.
3.quit,请求服务器关闭与当前客户端的连接;一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭。(注:集群不支持)
No way to dispatch this command to Redis Cluster.
4.select,切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值;默认使用 0 号数据库。(注:集群不支持)
切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值;默认使用 0 号数据库。
5.exists,检查给定 key 是否存在(注:在集群中一次只能判断一个key是否存在,单机模式支持多个);
127.0.0.1:7001> exists name
-> Redirected to slot [5798] located at 127.0.0.1:7005
(integer) 1
6.del,删除给定的一个或多个 key ,不存在的 key 会被忽略(注:集群删除一次只支持一个key,单机模式支持多个)
127.0.0.1:7005> del hello
-> Redirected to slot [866] located at 127.0.0.1:7001
(integer) 1
7.dump,序列化给定 key ,并返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为 Redis 键(注:所谓的序列化其实就是将内存中的数据持久化到硬盘上,反序列化就是将硬盘上的文件加载到内存中)
127.0.0.1:7006> dump username
"\x00\adsdsdsf\a\x00I\x1ff\x18\xab\xfe%<"
8.expire,为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除,在 Redis 中,带有生存时间的 key 被称为『易失的』(volatile);
127.0.0.1:7006> set username nihao
OK
127.0.0.1:7006> get username
"nihao"
127.0.0.1:7006> ttl username
(integer) -1
127.0.0.1:7006> EXPIRE username 30
(integer) 1
127.0.0.1:7006> ttl username
(integer) 25
9.ttl,以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live),例子如上
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
否则,以秒为单位,返回 key 的剩余生存时间。
10.pttl,这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间,而不是像 TTL 命令那样,以秒为单位。
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
否则,以毫秒为单位,返回 key 的剩余生存时间。
127.0.0.1:7006> EXPIRE username 60
(integer) 1
127.0.0.1:7006> ttl username
(integer) 56
127.0.0.1:7006> pttl username
(integer) 50991
11.mget,返回所有(一个或多个)给定 key 的值,如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败(注:在集群之中如果所要查询的key对应的槽点(slot)在同一个节点之上可以一次查询多个键)。
127.0.0.1:7005> MGET stock_code stock_name
(error) CROSSSLOT Keys in request don't hash to the same slot
12.move,将当前数据库的 key 移动到给定的数据库 db 当中,如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果,因此,也可以利用这一特性,将 MOVE 当作锁(locking)原语(primitive)。
# key 存在于当前数据库
redis> SELECT 0 # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
OK
redis> SET song "secret base - Zone"
OK
redis> MOVE song 1 # 将 song 移动到数据库 1
(integer) 1
redis> EXISTS song # song 已经被移走
(integer) 0
redis> SELECT 1 # 使用数据库 1
OK
redis:1> EXISTS song # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)
(integer) 1
# 当 key 不存在的时候
redis:1> EXISTS fake_key
(integer) 0
redis:1> MOVE fake_key 0 # 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败
(integer) 0
redis:1> select 0 # 使用数据库0
OK
redis> EXISTS fake_key # 证实 fake_key 不存在
(integer) 0
# 当源数据库和目标数据库有相同的 key 时
redis> SELECT 0 # 使用数据库0
OK
redis> SET favorite_fruit "banana"
OK
redis> SELECT 1 # 使用数据库1
OK
redis:1> SET favorite_fruit "apple"
OK
redis:1> SELECT 0 # 使用数据库0,并试图将 favorite_fruit 移动到数据库 1
OK
redis> MOVE favorite_fruit 1 # 因为两个数据库有相同的 key,MOVE 失败
(integer) 0
redis> GET favorite_fruit # 数据库 0 的 favorite_fruit 没变
"banana"
redis> SELECT 1
OK
redis:1> GET favorite_fruit # 数据库 1 的 favorite_fruit 也是
"apple"
13.incr,将 key 中储存的数字值增一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作,如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误;
127.0.0.1:7001> set num 1
OK
127.0.0.1:7001> INCR num
(integer) 2
127.0.0.1:7001> get num
"2"
127.0.0.1:7001> INCR num
(integer) 3
127.0.0.1:7001> get num
"3"
127.0.0.1:7001> INCR number
-> Redirected to slot [7743] located at 127.0.0.1:7005
(integer) 1
127.0.0.1:7005> get number
"1"
14.incrby,将 key 所储存的值加上增量 increment
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
关于递增(increment) / 递减(decrement)操作的更多信息,参见 INCR 命令。
127.0.0.1:7005> INCRBY num 34
-> Redirected to slot [2765] located at 127.0.0.1:7001
(integer) 37
127.0.0.1:7001> get num
"37"
未完待续...