Redis 資料備份與恢複
備份資料
Redis SAVE 指令用于建立目前資料庫的備份。
redis 127.0.0.1:6379> SAVE
OK
該指令将在 redis 安裝目錄中建立dump.rdb檔案。
Redis BGSAVE 在背景執行指令建立目前資料庫的備份。
127.0.0.1:6379> BGSAVE
Background saving started
建立 redis 備份檔案也可以使用指令 BGSAVE,該指令在背景執行。
恢複資料
如果需要恢複資料,隻需将備份檔案 (dump.rdb) 移動到 redis 安裝目錄并啟動服務即可。擷取 redis 目錄可以使用 CONFIG 指令。
redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis/bin"
Redis 安全
通過 redis 的配置檔案設定密碼參數,這樣用戶端連接配接到 redis 服務就需要密碼驗證,這樣 redis 服務更安全。
檢視是否設定了密碼驗證:
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
預設情況下 requirepass 參數是空的,無需通過密碼驗證就可以連接配接到 redis 服務。
修改該參數:
127.0.0.1:6379> CONFIG set requirepass "password"
OK
127.0.0.1:6379> AUTH "password"
ok
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "password"
設定密碼後,用戶端連接配接 redis 服務就需要密碼驗證,否則無法執行指令。
執行個體
127.0.0.1:6379> AUTH "password"
OK
127.0.0.1:6379> SET mykey "value"
OK
127.0.0.1:6379> GET mykey
"value"
Redis 性能測試
redis 性能測試的基本指令:
redis-benchmark [option] [option value]
redis 性能測試工具可選參數:
序号 | 選項 | 描述 | 預設值 |
---|---|---|---|
1 | -h | 指定伺服器主機名 | 127.0.0.1 |
2 | -p | 指定伺服器端口 | 6379 |
3 | -s | 指定伺服器 socket | |
4 | -c | 指定并發連接配接數 | 50 |
5 | -n | 指定請求數 | 10000 |
6 | -d | 以位元組的形式指定 SET/GET 值的資料大小 | 2 |
7 | -k | 1=keep alive 0=reconnect | 1 |
8 | -r | SET/GET/INCR 使用随機 key, SADD 使用随機值 | |
9 | -P | 通過管道傳輸 <numreq> 請求 | 1 |
10 | -q | 強制退出 redis。僅顯示 query/sec 值 | |
11 | --csv | 以 CSV 格式輸出 | |
12 | -l | 生成循環,永久執行測試 | |
13 | -t | 僅運作以逗号分隔的測試指令清單。 | |
14 | -I | Idle 模式。僅打開 N 個 idle 連接配接并等待。 |
以下執行個體同時執行 10000 個請求來檢測性能:
使用多個參數來測試 redis 性能:
Redis 用戶端連接配接
Redis 通過監聽一個 TCP 端口或者 Unix socket 的方式來接收來自用戶端的連接配接,當一個連接配接建立後,Redis 内部會進行以下一些操作:
- 首先,用戶端 socket 會被設定為非阻塞模式。
- 然後為這個 socket 設定 TCP_NODELAY 屬性。
- 最後建立一個可讀的檔案事件用于監聽這個用戶端 socket 的資料發送。
在服務啟動時設定最大連接配接數為 100000:
redis-server --maxclients 100000
用戶端指令:
S.N. | 指令 | 描述 |
---|---|---|
1 | CLIENT LIST | 傳回連接配接到 redis 服務的用戶端清單 |
2 | CLIENT SETNAME | 設定目前連接配接的名稱 |
3 | CLIENT GETNAME | 擷取通過 CLIENT SETNAME 指令設定的服務名稱 |
4 | CLIENT PAUSE | 挂起用戶端連接配接,指定挂起的時間以毫秒計 |
5 | CLIENT KILL | 關閉用戶端連接配接 |