(十)Redis集群(JedisCluster)Jedis客户端命令详解

2018-01-19 10:36:02来源:网络收集作者:咖啡不加糖人点击

分享

[var1]

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) 16.del,删除给定的一个或多个 key ,不存在的 key 会被忽略(注:集群删除一次只支持一个key,单机模式支持多个)127.0.0.1:7005> del hello
-> Redirected to slot [866] located at 127.0.0.1:7001
(integer) 17.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) 259.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.


未完待续...














最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台