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 {}
三、叢集形式批量刪除:不能直接使用上述形式,否則會報下列錯:
Error: CROSSSLOT 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