(十)Redis集群(JedisCluster)Jedis客户端命令详解
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) 5099111.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 slot12.move,將當前數據庫的 key 移動到給定的數據庫 db 當中,如果當前數據庫(源數據庫)和給定數據庫(目標數據庫)有相同名字的給定 key ,或者 key 不存在于當前數據庫,那么 MOVE 沒有任何效果,因此,也可以利用這一特性,將 MOVE 當作鎖(locking)原語(primitive)。
?
# key 存在于當前數據庫redis> SELECT 0 # redis默認使用數據庫 0,為了清晰起見,這里再顯式指定一次。 OKredis> SET song "secret base - Zone" OKredis> MOVE song 1 # 將 song 移動到數據庫 1 (integer) 1redis> EXISTS song # song 已經被移走 (integer) 0redis> SELECT 1 # 使用數據庫 1 OKredis:1> EXISTS song # 證實 song 被移到了數據庫 1 (注意命令提示符變成了"redis:1",表明正在使用數據庫 1) (integer) 1# 當 key 不存在的時候redis:1> EXISTS fake_key (integer) 0redis:1> MOVE fake_key 0 # 試圖從數據庫 1 移動一個不存在的 key 到數據庫 0,失敗 (integer) 0redis:1> select 0 # 使用數據庫0 OKredis> EXISTS fake_key # 證實 fake_key 不存在 (integer) 0# 當源數據庫和目標數據庫有相同的 key 時redis> SELECT 0 # 使用數據庫0 OK redis> SET favorite_fruit "banana" OKredis> SELECT 1 # 使用數據庫1 OK redis:1> SET favorite_fruit "apple" OKredis:1> SELECT 0 # 使用數據庫0,并試圖將 favorite_fruit 移動到數據庫 1 OKredis> MOVE favorite_fruit 1 # 因為兩個數據庫有相同的 key,MOVE 失敗 (integer) 0redis> GET favorite_fruit # 數據庫 0 的 favorite_fruit 沒變 "banana"redis> SELECT 1 OKredis: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"?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
未完待續...
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的(十)Redis集群(JedisCluster)Jedis客户端命令详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用python PIL 模块合成图片
- 下一篇: Apollo代码学习(三)—车辆动力学模