day67_Redis學習筆記_03
阿新 • • 發佈:2018-11-04
5、keys命令(瞭解)
5.1、常用命令(自學)
- (1)keys
返回滿足給定pattern的所有key
示例:
127.0.0.1:6379> keys *
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:6379> exists set8
(integer ) 0
127.0.0.1:6379> exists set1
(integer) 1
- (3)del
刪除一個key
示例:
127.0.0.1:6379> del s3
(integer) 1
127.0.0.1:6379> exists set3
(integer ) 0
127.0.0.1:6379>
- (4)rename
重新命名key
從示例結果來看,s1成功的被我們改名為s1_new了。
示例:
127.0.0.1:6379> keys *
1) "zset1"
2) "list:1"
3) "s1"
4) "s2"
5) "newlist"
6) "set2"
7) "set1"
127.0.0.1:6379> rename s1 s1_new
OK
127.0.0.1:6379> keys *
1) "zset1"
2) "list:1"
3) "s2"
4) "newlist"
5) "set2"
6) "s1_new"
7) "set1"
- (5)type
返回值的型別
從示例結果來看,這個方法可以非常簡單的判斷出值的型別。
示例:
127.0.0.1:6379> keys *
1) "zset1"
2) "list:1"
3) "s2"
4) "newlist"
5) "set2"
6) "s1_new"
7) "set1"
127.0.0.1:6379> type s2
string
127.0.0.1:6379> type set1
set
127.0.0.1:6379> type zset1
zset
127.0.0.1:6379> type list:1
list
5.2、設定key的生存時間
- Redis在實際使用過程中更多的用作快取,然而快取的資料一般都是需要設定生存時間的,即:到期後資料銷燬。
EXPIRE key seconds 設定key的生存時間(單位:秒)key在多少秒後會自動刪除
TTL key 檢視key生於的生存時間
PERSIST key 清除生存時間
PEXPIRE key milliseconds 生存時間設定單位為:毫秒
示例:
127.0.0.1:6379> keys *
1) "zset1"
2) "list:1"
3) "s2"
4) "newlist"
5) "set2"
6) "s1_new"
7) "set1"
127.0.0.1:6379> expire s2 10 設定s2的生存時間為10秒
(integer) 1
127.0.0.1:6379> ttl s2 檢視s2的生於生成時間還有4秒刪除
(integer) 4
127.0.0.1:6379> ttl s2
(integer) -2
127.0.0.1:6379> get 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的快照檔案載入到記憶體中需要花費20~30秒鐘。
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、什麼是主從複製
- 持久化保證了即