玩轉Redis-研發也應該知道的Connection命令

  《玩轉Redis》系列文章主要講述Redis的基礎及中高級應用,文章基於Redis5.0.4+。Redis的鏈接每每是由程序完成,多數程序員並不關心,但掌握鏈接命令能提高本身的綜合水平,真正瞭解整個Redis的使用過程。git

一、鏈接命令概述

1910RedisConnection.png

二、各命令詳解

2.一、AUTH認證命令

2.1.一、AUTH命令功能

  • AUTH命令用於密碼驗證,Redis的密碼明文配置在配置文件redis.conf(requirepass yourRedisPassword)中;
  • 因爲Redis高性能,建議使用複雜密碼避免被爆破;
  • 建議修改默認端口6379,避免被爆破;
# 查詢密碼
config get requirepass
# 在線設置密碼
config set requirepass abcdefg
# (生產環境應屏蔽config命令)
# rename-command CONFIG ""
複製代碼

2.1.二、示例

# 無密碼鏈接
[guest@xxx redis]$ ./redis-cli -h 127.0.0.1 -p 6378
# 輸入密碼驗證
127.0.0.1:6378> AUTH 123456
(error) ERR invalid password
127.0.0.1:6378> auth pwd123456
OK
複製代碼

2.二、ECHO命令

  • ECHO命令將返回參數自己,經常使用於腳本中;
  • 腳本中的ECHO支持引入變量;
PIDFILE=/var/run/redis_${REDISPORT}.pid
echo "$PIDFILE is 123"
複製代碼

2.三、PING命令

  • 測試Redis創建的鏈接是否可用(鏈接存在被其餘線程關閉的狀況);
  • 測試鏈接的延遲;
  • PING不帶參數將返回"PONG",帶參數將返回參數自己;
  • 若是訂閱了channel或pattern,PING第一次返回"PONG",後續返回空字符串。
127.0.0.1:6378> ping
PONG
127.0.0.1:6378> ping "hi @zxiaofan"
"hi @zxiaofan"
複製代碼

2.四、QUIT命令

  • 用於關閉鏈接,成功返回"OK";
  • 因爲Redis是單線程,故當有命令正在執行操做時,鏈接時沒法被關閉的;

2.五、SELECT命令

  • 用於選擇Redis數據庫;
  • Redis共有16個DB,DB索引從0開始,新鏈接老是使用DB0;
  • 不一樣的DB能夠有相同名字的key;
  • 須要指定DB的命令:FLUSHDB、SWAPDB、RANDOMKEY;
  • DB主要用於拆分屬於相同應用的不一樣key;
  • Redis Cluster只能使用DB0,不能使用SELECT命令;
  • index範圍超出[0,15]時,將提示(error) ERR DB index is out of range;

注意:
  Redis沒有提供命令查詢當前鏈接所選擇的DB,命令CLIENT LIST可展現全部鏈接選擇的DB(db=0);程序員

Redis如何查看當前鏈接操做的DB:github

  1. 控制檯查看:
127.0.0.1:6378> select 1
OK
# 注意在6378後有個「[1]」,這個就表示當前鏈接操做的DB;
127.0.0.1:6378[1]> select 0
OK
127.0.0.1:6378> 
複製代碼
  1. 三方API(如lettuce、jedis)
# lettuce 中查看DB的API:
/**
 * Returns the Redis database number. Databases are only available for Redis Standalone and Redis Master/Slave.
 *
 * @return
 */
public int getDatabase() {
    return database;
}
複製代碼

2.六、SWAPDB命令

2.6.一、SWAPDB命令功能及示例

  • 用於交換2個Redis的DB中的數據,交換成功返回"OK";
  • 交換DB中的數據,並非直接切換鏈接
  • SWAPDB 0 1後,先前訪問DB0的鏈接能當即訪問之前DB1中的數據,但實際上鍊接依舊是DB0;
  • index範圍超出[0,15]時,將提示(error) ERR DB index is out of range;
  • 若是發現Redis中始終沒有預期數據,能夠先確認DB是否正確;
127.0.0.1:6378> set db0 db0value
OK
127.0.0.1:6378> select 1
OK
127.0.0.1:6378[1]> set db1 db1value
OK
127.0.0.1:6378[1]> get db0
(nil)
127.0.0.1:6378[1]> swapdb 0 1
OK
127.0.0.1:6378[1]> get db0
"db0value"
127.0.0.1:6378[1]> swapdb 0 16
(error) ERR DB index is out of range
複製代碼

2.6.二、SWAPDB命令應用場景

  • 修正線上Redis數據:若是線上Redis數據有問題又不能直接處理,能夠考慮在新DB中構造正確數據,最後直接切換2個DB的數據(數據量較大慎用);

三、Redis鏈接命令總結

  • 除了SWAPDB命令是4.0.0版本可用,其餘命令均是1.0.0版本可用;
  • 除PING、ECHO命令外,其餘命令執行成功均返回"OK";
  • Redis的鏈接命令在開發中使用較少,但學習瞭解有備無患;

人生就像一隻儲蓄罐,你投入的每一分努力都會在將來的某一天,回饋於你。redis


祝君好運!
Life is all about choices!
未來的你必定會感激如今拼命的本身!
CSDN】【GitHub】【OSCHINA】【掘金】【微信公衆號
歡迎訂閱zxiaofan的微信公衆號,掃碼或直接搜索zxiaofan數據庫

相關文章
相關標籤/搜索