redis 入門學習筆記

redis 是什麼?

  • redis 是 "Remote Dictionary Server" 的縮寫,它以字典的結構存儲數據
  • redis 的全部數據都存儲在內存中,在性能上相對其它硬盤存儲的數據庫有很大的優點
  • redis 能夠對內存中的數據進行持久化
  • redis 支持主從複製功能,實現高可用
  • redis 鍵值支持的數據類型有:字符串類型、散列類型、列表類型、集合類型、有序集合類型
  • redis 的主要用於實現緩存、隊列、消息訂閱等功能
  • redis 提供了以下一些可執行程序:
redis-server:redis 服務端,用於啓動 redis 服務
redis-cli:redis 命令行客戶端,能夠直接鏈接到 redis 服務,提供了豐富的鍵值操做的命令
redis-benchmark: redis 提供的性能測試工具
redis-check-aof:aof 文件修復工具
redis-check-dump:adb 文件檢查工具
redis-sentinel:哨兵服務器,能夠啓動哨兵用於監控 redis 服務的運行狀況
複製代碼
  • 一個 redis 能夠配置多個數據庫:
redis 默認支持 16 個數據庫,能夠經過啓動參數 databases 來修改該值
數據庫編號從 0 開始,不支持自定義名稱
在客戶端能夠經過 select 來隨時切換數據庫
數據庫之間的數據不是徹底隔離的,咱們能夠經過 flushAll 命令清空一個實例下全部數據庫的數據
這些數據庫更像一個命名空間,不適合存放不一樣應用下的數據
複製代碼

redis-cli 中經常使用的命令

  • 字符串類型

字符串類型的鍵容許存放的最大數據類型爲 512 M,經常使用命令以下:php

SET key value                    # 設置鍵值
GET key                          # 獲取鍵值
INCR numKey                      # 讓鍵值遞增,返回遞增後的數值,鍵值非數字會報錯,不存在時默認爲 0
INCRBY numKey num                # 和 INCR 相似,支持每次動態加指定數值的數據
DECR numKey                      # 自減
DECRBY numKey num                # 減小指定數值
INCRBYFLOAT numKey num           # 增長指定的浮點數值
APPEND key value                 # 向尾部追加值,返回追加後的字符長度
STRLEN key                       # 返回鍵值的字符串長度
MSET/MGET                        # 和 GET/SET 相似,批量設置和獲取
GETBIT key offset                # 獲取一個字符串指定位置的二進制值
SETBIT key offset value          # 設置指定位置的二進制的值
BITCOUNT key                     # 統計鍵值對應的二進制位數
BITOP operation destkey key1...  # 對多個鍵 key1,key2... 對應的值進行位運算,並存儲在 destkey 鍵對應的值中
複製代碼
  • 散列類型

散列類型的鍵值是也是一種字典類型,存儲了字段和字段值的映射關係,字段值只支持字符串,散列類型適合存儲對象,能夠每次獲取或者更新某個屬性的值,減小解析整個對象的時間,經常使用命令以下:mysql

HSET key field value             # 設置散列類型 key 對應的對象的某個屬性
HGET key field                   # 獲取散列類型 key 對應的對象的某個屬性
HMSET key field value ...        # 批量設置散列類型 key 對應的多個屬性的值
HMGET key field ...              # 批量獲取散列類型 key 對應的多個屬性的值
HGETALL key                      # 獲取散列類型中某個 key 對應的全部屬性及值,也就是整個對象
HEXISTS key field                # 判斷散列類型中某個字段是否存在
HSETNX key field value           # 判斷散列類型中某個字段是否存在,不存在則賦值
HDEL key field ...               # 刪除散列類型中對象裏的一個或者多個字段
HKEYS key                        # 獲取散列類型中對象裏的全部字段屬性名
HVALS key                        # 獲取散列類型中對象裏的全部字段屬性對應的值
HLEN                             # 獲取散列類型中對象裏的字段數量
複製代碼
  • 列表類型

列表類型能夠存儲一個有序的字符串列表,經常使用的操做是向列表兩頭添加元素或者列表某個片斷,列表類型使用雙向鏈表實現,訪問首尾元素的速度很是快,經常使用命令以下:redis

LPUSH key value1 value2...              # 向列表左邊增長多個元素
RPUSH key value1 value2...              # 向列表右邊增長多個元素
LPOP key                                # 從列表左邊彈出一個元素
RPOP key                                # 從列表右邊彈出一個元素
BRPOP key                               # 與 RPOP 相似,只是若是列表中沒有元素時會一直等待直到新元素加入,能夠接受多個 key 值,優先使用第一個 key
BLPOP key...                            # 與 BRPOP 相似
LLEN key                                # 獲取列表中元素個數,時間複雜度爲O(1)
LRANGE key start stop                   # 獲取列表中從 start 到 stop 之間的元素,從 0 開始索引
LREM key count value                    # 刪除列表中前 count 個值爲 value 的元素,count>0 從左邊刪除,count<0 從右邊刪除,count=0 所有刪除
LINDEX key index                        # 獲取列表中指定索引的元素
LSET key index value                    # 設置列表中指定索引的元素
LTRIM key start end                     # 刪除列表中指定範圍之外的全部元素
LINSERT key BEFORE/AFTER pivot value    # 從列表中查找值等於 pivot 的第一個元素,而後在其前面或者後面插入 value 元素
RPOPLPUSH source destination            # 從 source 列表右邊彈出一個元素,插入到 destination 列表左邊
複製代碼
  • 集合類型

集合類型的元素是無序的、惟一的,經常使用的操做是向集合中加入某個元素或者刪除某個元素、判斷某個元素是否存在,大部分操做的時間複雜度基本都爲 O(1),經常使用命令以下:算法

SADD key value1 value2...           # 向集合中加入多個元素
SREM key value1 value2...           # 從集合中刪除多個元素
SMEMBERS key                        # 獲取集合中的全部元素
SISMEMBER key value                 # 判斷元素是否存在集合中
SDIFF key1 key2...                  # 對多個集合求差集運算
SDIFFSTORE destination key1 key2... # 對多個集合求差集運算,並將結果存儲在 destination 集合中
SINTER key1 key2...                 # 對多個集合求交集運算
SINTERSTORE destination key1 key2...# 對多個集合交差集運算,並將結果存儲在 destination 集合中
SUNION key1 key2...                 # 對多個集合求並集運算
SUNIONSTORE destination key1 key2...# 對多個集合並差集運算,並將結果存儲在 destination 集合中
SCARD key                           # 獲取集合中的元素個數
SRANDMEMBER key count               # 隨機從集合中獲取 count 個不相同的元素
SPOP key                            # 隨機從集合中彈出一個元素
複製代碼
  • 有序集合類型

有序集合類型使用散列表和跳躍表實現的,比列表類型更消耗內存,有序集合經過給每一個元素存放一個 score 進行排序,對於須要排序分頁的場景很是適用,經常使用命令以下:sql

ZADD key score member ...        # 向有序集合中添加元素,若是存在則更新元素對應的 score
ZSCORE key member                # 獲取有序集合中某個元素的分數
ZRANGE key start stop            # 獲取有序集合中排名在某個範圍的元素,結果集從小到大排序
ZREVRANGE key start stop         # 獲取有序集合中排名在某個範圍的元素,結果集從大到小排序
 # 獲取有序集合中分數在某個範圍的元素,WITHSCORES 表示是否把分數返回,LIMIT 表示是否須要分頁
# 默認狀況下是包含最大值和最小值,若是想不包好最大值最小值,能夠加個左括號:ZRANGEBYSCORE hello 3 (5
# -inf 和 +inf 表示無窮小和無窮大
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 
 # ZREVRANGEBYSCORE 和 ZRANGEBYSCORE 類似,只是從大到小排序
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 

ZINCBY key increment member      # 增長有序集合中某個元素的分數
ZCARD key                        # 獲取有序集合中元素的數量
ZCOUNT key min max               # 指定分數範圍內元素的個數
ZREM key member...               # 刪除有序集合中一個或者多個元素
ZREMRANGEBYRANK key start stop   # 刪除有序集合中某個排名範圍的元素
ZREMRANGEBYSCORE key min max     # 刪除有序集合中某個score範圍的元素
ZRANK key member                 # 獲取某個元素的排名
 # 計算有序集合的交集,能夠經過 AGGREGATE 指定聚合類型,默認是求和,最終將key1,key2 集合中的元素經過不一樣的聚合方式放入 destinationKey 集合中
ZINTERSTORE destinationKey numkeys key1 key2...  [AGGREGATE SUM | MIN | MAX]
複製代碼
  • 通用的命令
CONFIG set loglevel warning      # 動態修改 redis 的部分配置
CONFIG get loglevel              # 獲取 redis 的部分配置
SELECT 1                         # 更改數據庫編號,默認從 0 開始
KEYS pattern                     # 獲取知足 glob 風格的全部鍵值,當鍵值較多時會影響性能,生產不建議這樣作
EXISTS key                       # 判斷某個鍵值是否存在,存在返回 1, 不然返回 0
DEL key1 key2                    # 能夠刪除一個或者多個鍵,返回刪除的個數
KEYS "user*" | xargs | del       # 實現通配符匹配刪除多個鍵值
TYPE key                         # 獲取鍵值的數據類型,string | hash | list | set | zset(有序集合)
複製代碼

redis 中事務

  • redis 中事務是一組命令的集合
  • 事務以 MULTI 命令開始,以 EXEC 命令結束
  • 事務的原理是先將屬於一個事務的全部命令暫時存起來,等到 EXEC 命令再以此執行
  • redis 的事務沒有提供關係型數據庫事務的回滾功能
  • redis 中的事務的執行結果是一塊兒返回的,所以沒法將前一個命令的結果做爲下一個命令的參數
  • WATCH 命令用於監控一個或者多個鍵,一旦其中一個鍵被修改,以後的事務就不會執行,監控一直持續到 EXEC 命令
  • WATCH 命令主要用於防止競態條件,保證一個事物執行前某些鍵值不被修改
> MULTI
> SADD "user:1" 2
> SADD "user:2" 1
> EXEC
複製代碼

redis 中的過時時間

  • EXPIRE key seconds 用於設置鍵的過時時間,單位爲秒
  • PEXPIRE key milliSeconds 單位爲毫秒
  • TTL key 用於獲取鍵的過時時間,返回 -1 表示過時時間爲永久,-2 表示鍵值不存在
  • PTTL key 獲取過時時間,單位爲毫秒
  • PERSIST key 用於清空過時時間,設爲永久
  • SET 命令一樣會清空過時時間

排序

  • SORT 命令能夠對列表類型,集合類型和有序集合類型鍵進行排序
  • 利用排序能夠完成與關係型數據庫中鏈接查詢相相似的任務
  • SORT 命令默認是對鍵值爲數字的序列進行排序,非數字的排序會報錯
  • ALPHA 參數,能夠按照字典順序排序字符串類型的鍵值
  • DESC 參數,實現元素從大到小排序
  • LIMIT offset count 參數,實現排序分頁
  • 「BY 參考值」 參數,參考值能夠是字符串類型的鍵,也能夠是散列類型的某個鍵對應的字段
# 經過 BY 咱們能夠實現使用其餘參考鍵值進行排序
# 使用列表中的每一個元素替換參考值中的第一個 *,並獲取對應的散列類型的 time 字段進行排序
SORT tag:ruby:posts BY post:*-> time DESC  
複製代碼
  • GET 參數,經過給 SORT 命令加 GET 參數,返回再也不是元素自身的值,而是 GET 參數中指定的鍵值
# 經過 post:* 中 time 字段進行排序,並返回 post:* 中的 title 字段,同時返回原始列表中的信息(#)
# 同一個 SORT 命令能夠返回使用多個 GET 參數
SORT tag:ruby:posts BY post:*-> time DESC GET post:*->title GET #
複製代碼
  • STORE 參數,排序後的結果不直接返回排序結果,存儲在對應的鍵中(列表類型)
  • 使用 SORT 命令,關於性能方面注意的幾點:
- 儘可能減小排序鍵中元素的個數
- 使用 LIMIT 參數獲取必要的數據
- 若是排序結果較大,使用 STORE 參數進行緩存,以避免屢次排序
複製代碼

redis 中的消息通知

  • 使用列表類型實現任務隊列(LPUSH/RPOP/BRPOP)
  • 使用 BLPOP/BRPOP 實現優先級隊列
  • 實現發佈訂閱機制(PUBLISH/SUBSCRIBE/UNSUBSCRIBE/PSUBSCRIBE/PUNSUBSCIBE)

redis 中編碼存儲優化

redis 對不一樣的數據類型都提供了多種編碼方式,以節省空間和加快查詢效率,經過命令 OBJECT ENCODING key 命令能夠查看某個鍵值對應的編碼方式shell

如下是每種數據類型可能才用的內部編碼方式:數據庫

數據類型 內部編碼方式 OBJECT ENCODING 命令結果
字符串類型 REDIS_ENCODING_RAW "raw"
REDIS_ENCODING_INT "int"
REDIS_ENCODING_EMBSTR "embstr"
散列類型 REDIS_ENCODING_HT(散列表) "hashtable"
REDIS_ENCODING_ZIPLIST(緊湊順序表) "ziplist"
列表類型 REDIS_ENCODING_LINKEDLIST(雙向鏈表) "linkedlist"
REDIS_ENCODING_ZIPLIST "hashtable"
集合類型 REDIS_ENCODING_HT "hashtable"
REDIS_ENCODING_INTSET "intset"
有序集合類型 REDIS_ENCODING_ZIPLIST "ziplist"
REDIS_ENCODING_SKIPLIST(跳躍表) 「skiplist」
  • 每種類型的內部編碼方式通常至少有兩種以上
  • 當元素較少時,redis 通常會採用一種更爲緊湊但性能較差的編碼方式
  • redis 啓動後會預先創建一個 0 到 9999 這些數字的共享對象,所以若是要設置的鍵值在這些數字範圍內時,redis 就直接引用他們不須要再創建對象
  • 當字符串的鍵值內容不超過 39 字節時,redis 採用 REDIS_ENCODING_EMBSTR 編碼方式
  • 當散列類型鍵的字段個數少於 hash-max-ziplist-entries 參數值且每一個字段名和字段值的長度都小於 hash-max-ziplist-value 參數值時,採用 REDIS_ENCODING_ZIPLIST 編碼方式,不然使用 REDIS_ENCODING_HT 編碼
  • 當列表類型鍵的元素個數少於 list-max-ziplist-entries 參數值且每一個元素的長度都小於 list-max-ziplist-value 參數值時,採用 REDIS_ENCODING_ZIPLIST 編碼方式,不然使用 REDIS_ENCODING_LINKEDLIST 編碼
  • 當集合類型中的全部元素爲整數且元素的個數小於配置 set-max-insert-entries 時,採用 REDIS_ENCODING_INTSET 編碼方式,不然採用 REDIS_ENCODING_HT 編碼方式
  • 一樣有序集合類型能夠經過參數 zset-max-ziplist-value 和 zset-max-ziplist-entries 來控制使用 REDIS_ENCODING_ZIPLIST 編碼方式仍是 REDIS_ENCODING_SKIPLIST 編碼方式

redis 與 Lua 腳本

  • 在 Lua 腳本中能夠經過 redis.call('get', 'foo') 的方式調用 redis 命令
  • redis.pcall 和 redis.call 相似,不一樣之處是執行失敗時記錄失敗消息並繼續執行
  • 在 redis 中使用 Lua 腳本時禁止使用全局變量和文件系統調用相關函數,爲了保持狀態安全一致性
  • 經過 eval 命令可讓開發者像調用其它 redis 命令同樣調用 Lua 腳本
# 第一個參數是要執行的腳本,第二個參數表示後面傳入 key 的數量,後面是 key 和 arg 傳入的參數,能夠在腳本里直接使用
eval 腳本內容  key參數數量  [key...] [arg...]
複製代碼
  • evalsha 命令
- 和 eval 同樣是執行 Lua 腳本,只不過每次執行時是將腳本的摘要傳遞給 redis 服務端
- redis 服務端會檢查緩存是否存在該摘要的腳本並執行,不存在則拋出異常
- 由於 eval 命令每次都會將腳本發到遠端,帶寬消耗大,因此通常 evalsha 命令執行失敗時再使用 eval 命令並設置緩存
複製代碼
  • SCRIPT lOAD:將腳本的 SHA1 摘要加入到腳本緩存中
  • SCRIPT EXSITS: 判斷某個腳本的 SHA1 摘要是否被緩存
  • SCRIPT FLUSH:清除 SHA1 腳本本地緩存
  • SCRIPT KILL: 中止腳本的執行
  • 使用腳本開發的優勢:
- 減小網絡開銷
- 原子操做
- 代碼的複用
複製代碼

持久化

redis 提供兩種持久化的方式,一種是 RDB 方式,一種是 AOF 方式:緩存

  • RDB 的方式是定時將內存中的數據存儲到磁盤,如下幾種狀況會進行數據快照:
- 配置指定規則自動同步,好比 save 300 10, 表示每 300 內至少有 10 條數據被修改則進行快照
- 用戶執行 SAVE 或者 BGSAVE 命令,SAVE 命令同步執行會阻塞其它客戶端的請求,BGSAVE 異步同步數據
- 執行 FLUSHALL 命令
- 主從複製時
複製代碼
  • AOF 的方式是每次將更新數據的命令記錄到磁盤
- 經過參數 appendonly 開啓 AOF 數據備份
- 經過參數 appendfsync 設置磁盤緩存刷新機制
- 由於每條更新數據的命令都會被記錄到磁盤,因此磁盤數據會愈來愈大,所以 redis 提供了重寫 AOF 的功能
- 經過 auto-aof-rewrite-percentage 參數和 auto-aof-rewrite-min-size 參數能夠設置自動重寫 AOF 文件策略
複製代碼

主從複製

  • 經過在啓動 redis 服務端時加入 slaveof 參數設置爲其它服務器的從數據庫
  • 默認狀況下,從數據庫是隻讀的
  • 經過 info replication 命令查看 redis 的主從狀態
  • 能夠經過參數 slave-read-only 參數設置爲可寫,可是不建議這樣設置會致使數據錯亂
  • 一個主數據庫能夠關聯多個從數據庫
  • 經過 SLAVEOF NO ONE 命令使當前從數據庫中止接收其它數據庫的同步並轉換爲主數據庫
  • redis 採用樂觀複製策略,主數據庫在執行完客戶端請求後當即返回給客戶端,而不回等待同步到從數據庫才返回
  • 樂觀複製策略保證了主數據庫性能不受影響,可是會使主從數據庫有必定時間的數據不一致的窗口
  • 爲了儘可能保證主從數據的一致性,redis 提供了兩個參數來限制主數據庫的可寫狀態:
- min-slaves-to-write 3:表示只有當 3 個或者 3 個以上的從數據庫鏈接到主數據庫時,主數據庫纔是可寫的 
- min-slaves-max-lag 10:表示容許從數據庫最長失去鏈接的時間(秒),超過該時間,主數據庫變爲只讀。
複製代碼
  • 從數據庫能夠做爲另一臺數據庫的主數據庫
  • 當主數據庫發生故障時,必定不要當即重啓,重啓後由於主數據庫沒有開啓持久化,因此數據庫中的數據會被清空,然而主從數據又保持的聯繫,導致從數據庫中的數據也被清空,使從數據庫的持久化失去意義。這種狀況下建議先使用 SLAVE NO ONE 使從數據庫變爲主數據庫再重啓主數據庫
  • 在從數據庫與主數據庫從新創建鏈接時,既能夠選擇全量同步數據,也能夠選擇增量複製同步數據

哨兵

Redis 2.8 之後提供了哨兵工具來實現自動化監控和故障恢復功能:安全

  • 哨兵系統用戶監控系統運行,當主數據庫出現故障時自動將從數據庫升級轉換爲主數據庫
  • 一個主從的 redis 系統能夠部署多個哨兵來進行監控,避免哨兵系統的單點問題
  • 一個哨兵實例也能夠監控多個主從 redis 系統
  • 配置哨兵系統時只須要配置主數據庫的信息,哨兵系統會自動經過 info replication 命令發現其從數據庫的信息
  • 哨兵相關參數:
- slvae-priority:從數據庫的優先級設置,當主數據庫掛掉後,選擇優先級最高的從數據庫升級爲主數據庫
- down-after-milliseconds: 指定時間後,若是 ping 的數據庫節點仍然未回覆,則認爲該數據庫實例主觀下線
- quorum:多多個哨兵系統都認爲某個數據庫節點主觀下線且超過 quorum 個數,則認爲該數據庫實例客觀下線
複製代碼
  • 認爲客觀下線的前提下,須要保證只有一個哨兵節點來執行故障恢復操做,選舉哨兵頭領的過程使用 Raft 算法。
  • 哨兵部署建議:
- 爲每一個節點部署一個哨兵,避免單點問題
- quorum 的值至少設置爲 N/2 + 1, 保證大部分哨兵節點贊成後才進行故障恢復
複製代碼

管理工具

  • 記錄耗時命令日誌
- 和 mysql 同樣, redis 也能夠記錄慢查詢日誌
- 經過 slowlog-log-slower-than 參數設置多長時間的執行時間會被記錄到耗時日誌裏
- 經過參數 slowlog-max-len 來限制耗時日誌記錄的條數
- SLOWLOG GET 命令能夠獲取當前的耗時命令日誌
複製代碼
  • 命令監控:MONITOR 命令能夠監控到全部 REDIS 執行的命令,對系統性能影響比較大
  • phpRedisAdmin 工具,支持以樹形結構查看鍵列表,編輯鍵值,查看數據庫信息和鍵信息等功能,是 PHP 開發的。
  • Rdbtools 工具,是 Python 工具開發的一個 Redis 快照文件解析器,根據快照文件導出的 JSON 數據,分析 Redis 每一個鍵的佔用空間等
  • Redis 命令屬性,每一個命令都有不一樣的屬性,一個命令同時能夠擁有多個屬性:
- REDIS_CMD_WRITE:擁有該屬性的命令會修改數據庫的數據
- REDIS_CMD_DENYOOM:擁有該屬性的命令可能會增長 Redis 佔用的存儲空間
- REDIS_CMD_NOSCRIPT:擁有該屬性的命令沒法再 Redis 腳本中被執行
- REDIS_CMD_RANDOM:一個腳本執行了擁有了 REDIS_CMD_RANDOM 屬性的命令後,就不能執行擁有 REDIS_CMD_WRITE 的命令了
- REDIS_CMD_SORT_FOR_SCRIPT:擁有該屬性的命令會產生隨機結果,在腳本中調用這些命令時 Redis 會對結果結果進行排序
- REDIS_CMD_LOADING:Redis 會在啓動時執行擁有該屬性的命令
複製代碼

redis 主要配置參數

  • databases:設置 redis 支持的數據庫的個數
  • hash-max-ziplist-entries: 散列類型使用 REDIS_ENCODING_ZIPLIST 編碼方式時對應的字段個數臨界值
  • hash-max-ziplist-value: 散列類型使用 REDIS_ENCODING_ZIPLIST 編碼方式時對應的字段名和字段值的長度臨界值
  • list-max-ziplist-entries: 列表類型使用 REDIS_ENCODING_ZIPLIST 編碼方式時對應的元素個數臨界值
  • list-max-ziplist-value: 列表類型使用 REDIS_ENCODING_ZIPLIST 編碼方式時對應的元素的長度臨界值
  • set-max-ziplist-entries: 散列類型使用 REDIS_ENCODING_INTSET 編碼方式時對應的元素個數的臨界值
  • zset-max-ziplist-value:有序集合使用編碼方式的元素長度臨界值
  • zset-max-ziplist-entries:有序集合使用編碼方式的元素個數臨界值
  • maxmemory: 限制最大可用內存大小(單位爲字節)
  • maxmemory-policy 設置在超出最大內存限制時,刪除鍵值的處理方法:
- volatile-lru: 使用 LRU 算法刪除一個設置了過時時間的鍵
- allkeys-lru: 使用 LRU 算法刪除一個鍵
- volatile-random:隨機刪除一個設置了過時時間的鍵
- allkeys-random:隨機刪除一個鍵
- volatile-ttl:刪除過時時間最近的一個鍵
- noeviction:不刪除鍵值,插入數據時返回錯誤
複製代碼
  • appendonly:等於 = true 開啓 AOF 備份模式
  • auto-aof-rewrite-percentage: 當目前 AOF 文件的大小超過上一次重寫時 AOF 文件大小的多少比例時進行再次重寫
  • auto-aof-rewrite-min-size: 設置最小的 AOF 重寫文件大小
  • appendfsync:設置 AOF 緩存刷新機制
everysec: 默認策略,每秒執行一次刷新
always:每次執行寫操做都會刷新磁盤緩存
no:不主動刷新磁盤緩存,交個操做系統,即每 30 秒一次
複製代碼
  • slaveof:redis-server 啓動參數,將當前 redis 實例設置爲另一臺 redis 實例的備份實例,作主從同步
  • slave-read-only:設置從數據庫的讀寫狀態
  • requirepass:給 redis 服務器設置一個密碼
相關文章
相關標籤/搜索