1. 程式人生 > >day67_Redis學習筆記_03

day67_Redis學習筆記_03

5、keys命令(瞭解)

5.1、常用命令(自學)

  • (1)keys
返回滿足給定pattern的所有key
示例:
    127.0.0.1:6379keys *
    1"zset1"
    2"list:1"
    3"s1"
    4"s2"
    5
"newlist"
    6"s3"
    7"set2"
    8"set1"
  • (2)exists
確認一個key是否存在
    從示例結果來看,資料庫中不存在HongWan這個key,但是age這個key是存在的
示例:
    127.0.0.1:6379exists set8
    (integer
) 0
    127.0.0.1:6379exists set1
    (integer) 1
  • (3)del
刪除一個key
示例:
    127.0.0.1:6379del s3
    (integer) 1
    127.0.0.1:6379exists set3
    (integer
) 0
    127.0.0.1:6379
  • (4)rename
重新命名key
    從示例結果來看,s1成功的被我們改名為s1_new了。
示例:
    127.0.0.1:6379keys *
    1"zset1"
    2"list:1"
    3"s1"
    4"s2"
    5"newlist"
    6"set2"
    7"set1"
    127.0.0.1:6379rename s1 s1_new
    OK
    127.0.0.1:6379keys *
    1"zset1"
    2"list:1"
    3"s2"
    4"newlist"
    5"set2"
    6"s1_new"
    7"set1"
  • (5)type
返回值的型別
    從示例結果來看,這個方法可以非常簡單的判斷出值的型別。
示例:
    127.0.0.1:6379keys *
    1) "zset1"
    2) "list:1"
    3) "s2"
    4) "newlist"
    5) "set2"
    6) "s1_new"
    7) "set1"
    127.0.0.1:6379type s2
    string
    127.0.0.1:6379type set1
    set
    127.0.0.1:6379type zset1
    zset
    127.0.0.1:6379type list:1
    list

5.2、設定key的生存時間

  • Redis在實際使用過程中更多的用作快取,然而快取的資料一般都是需要設定生存時間的,即:到期後資料銷燬。
EXPIRE key seconds          設定key的生存時間(單位:秒)key在多少秒後會自動刪除
TTL key                     檢視key生於的生存時間
PERSIST key                 清除生存時間 
PEXPIRE key milliseconds    生存時間設定單位為:毫秒

示例:
    127.0.0.1:6379keys *
    1) "zset1"
    2) "list:1"
    3) "s2"
    4) "newlist"
    5) "set2"
    6) "s1_new"
    7) "set1"
    127.0.0.1:6379expire s2 10        設定s2的生存時間為10秒
    (integer) 1
    127.0.0.1:6379ttl s2              檢視s2的生於生成時間還有4秒刪除
    (integer) 4
    127.0.0.1:6379ttl s2
    (integer-2
    127.0.0.1:6379get s2              獲取s2的值,已經刪除
    (nil)

6、Redis的持久化方案

6.1、RDB持久化(預設)

  RDB方式的持久化是通過快照(snapshotting)完成的,當符合一定條件時Redis會自動將記憶體中的資料進行快照並持久化到硬碟
  RDB是Redis預設採用的持久化方式。

6.1.1、設定持久化快照的條件

在redis.conf中修改持久化快照的條件,如下圖:


詳解如下:
save 開頭的一行就是持久化配置,可以配置多個條件(每行配置一個條件),每個條件之間是“或”的關係。
    save 900 1      表示15分鐘(900秒)內至少1個鍵被更改則進行快照。
    save 300 10     表示5分鐘(300秒)內至少10個鍵被更改則進行快照。
    save 60 10000   表示1分鐘(60秒)內至少10000個鍵被更改則進行快照。

6.1.2、設定快照檔案(持久化檔案)儲存的名稱和目錄

在redis.conf中可以指定持久化檔案儲存的目錄,如下圖:


詳解如下:
dbfilename dump.rdb     表示設定而快照檔案(持久化檔案)儲存的名稱為:dump.rdb 
dir ./                  表示設定而快照檔案(持久化檔案)儲存的目錄為:在當前目錄下

Redis啟動後會讀取RDB快照檔案,將資料從硬碟載入到記憶體。根據資料量大小與結構和伺服器效能不同,這個時間也不同。
通常將記錄一千萬個字串型別鍵、大小為1GB的快照檔案載入到記憶體中需要花費2030秒鐘。

6.1.4、RDB問題總結

  通過RDB方式實現持久化,一旦Redis異常退出(非法關閉),就會丟失最後一次快照以後更改的所有資料。這就需要開發者根據具體的應用場合,通過組合設定自動快照條件的方式來將可能發生的資料損失控制在能夠接受的範圍。
  如果資料很重要以至於無法承受任何損失,則可以考慮使用AOF方式進行持久化。
  即:一旦redis非法關閉,那麼會丟失最後一次持久化之後的資料。
  如果資料不重要,則不必要關心。
  如果資料不能允許丟失,那麼要使用AOF方式。

6.2、AOF持久化

詳解如下:

預設情況下Redis沒有開啟AOF(append only file)方式的持久化。
可以通過修改redis.conf配置檔案中的appendonly引數開啟,如下:
appendonly yes

開啟AOF持久化後每執行一條會更改Redis中的資料的命令,Redis就會將該命令寫入硬碟中的AOF檔案。

AOF檔案的儲存位置和RDB檔案的位置相同,都是通過dir引數設定的。
dir ./

預設的檔名是appendonly.aof,可以通過appendfilename引數修改:
appendfilename appendonly.aof

在同時使用aof和rdb方式時,如果redis重啟,則資料從aof檔案載入。

7、Redis的主從複製

7.1、什麼是主從複製

  • 持久化保證了即