1. 程式人生 > >Linux下redis 叢集 批量刪除 鍵 以及一些其他日常管理操作

Linux下redis 叢集 批量刪除 鍵 以及一些其他日常管理操作

命令大全:http://doc.redisfans.com/

一、操作環境:CentOS-7,redis-4.0.8,雙機主備叢集,

10.190.104.11:6378/6379/6380;(主)

10.190.104.11:6378/6379/6380;(備)

欲刪除以user開頭的全部鍵;

二、單機形式批量刪除可使用xargs指令如下操作:

redis-cli -h 10.190.104.11 -p 6379  keys "user*" | xargs -i redis-cli -h 10.190.104.11 -p 6379  del  {}

如需密碼加上-a 引數即可,如需指定某個庫加上-n引數即可,例如:

redis-cli -a 密碼 -h 10.190.104.11 -p 6379  -n 庫號 keys "user*" | xargs -i redis-cli -a 密碼 -h 10.190.104.11 -p 6379  -n 庫號 del  {}

三、叢集形式批量刪除:不能直接使用上述形式,否則會報下列錯:

ErrorCROSSSLOT Keys in request don’t hash to the same slot

需要編輯shell指令碼進行刪除如下:

vim  redis_del.sh

#!/bin/bash
#命令最好寫絕對路徑
REDIS_COMM=/usr/local/redis/bin/redis-cli
#伺服器引數需要通過redis-cli -c -h 10.190.104.11 -p 7000 cluster nodes|grep master找到主伺服器即可,從伺服器不用管。
REDIS_SER01=192.168.0.11#本次只查到了一個主伺服器10.190.104.11 ,只需寫一個
PORT1=6378
PORT2=6379
PORT3=6380

#redis庫未加密碼,不需要使用-a,不指定庫,不需要使用-n引數

$REDIS_COMM -c -h $REDIS_SER01 -p $PORT1 keys $1 | xargs -i $REDIS_COMM -h $REDIS_SER01 -p $PORT1 del {}
$REDIS_COMM -c -h $REDIS_SER01 -p $PORT2 keys $1 | xargs -i $REDIS_COMM -h $REDIS_SER01 -p $PORT2 del {}
$REDIS_COMM -c -h $REDIS_SER01 -p $PORT3 keys $1 | xargs -i $REDIS_COMM -h $REDIS_SER01 -p $PORT3 del {}

儲存並增加可執行許可權:chmod +x  redis_del.sh

執行指令碼:後面加上引數

./redis_del.sh   user*

返回值為數量則為正確的,返回值為0 則可能發生錯誤。

四、一些其他的簡單操作記錄


1、檢視所有鍵 keys *
2、獲取鍵總數:dbsize
3、檢查鍵是否存在 exists 如果存在返回1,不存在返回0

4、刪除鍵  del key [key ……]
正常情況下返回結果為刪除鍵的個數,假如刪除了一個不存在的鍵,就返回0
同時del命令可以支援同時刪除多個鍵

5、鍵過期expire key second
當redis的鍵超過過期時間之後,會自動刪除
Ttl命令可以檢視上的過期時間:
返回-1:鍵沒有設定過期時間
返回-2:鍵不存在
返回大於或者等於0的整數 :鍵剩餘的過期時間

6、獲取鍵的資料結構型別:
type key
如果鍵不存在,就返回none