Redis高級進階

本章目標

  • Redis配置文件
  • Redis的存儲
  • Redis的事務
  • Redis發佈訂閱
  • Redis安全

Redis配置文件

在針對Redis進行進一步瞭解以前,咱們首先務必須要了解一下Redis的配置文件「redis.conf」,該文件通常位於Redis的安裝目錄。例如:使用的是Ubuntu安裝的Redis,我能夠在/etc/redis/redis.conf找到該文件。redis.conf 配置項說明以下所示redis

http://www.runoob.com/redis/redis-conf.htmlsegmentfault

Redis存儲

對於Redis對於數據的存儲保障,能夠分爲兩種方式來存儲Redis數據,一種是使用「快照」,另外一種是「只追加文件」方式。緩存

  • 快照(RDB存儲)
  • 只追加文(AOF存儲)

快照(RDB)

咱們能夠在Redis.conf找到以下段落安全

#   save ""
save 900 1
save 300 10
save 60 10000

能夠看到,Redis的配置中已經默認替咱們開啓了快照模式的數據存儲,根據以上命令,該存儲規則是「若是在900秒內存儲1條記錄,進行快照;若是知足300秒內存儲10條記錄,進行快照;若是知足60秒內存儲10000條記錄,進行快照」,咱們還能夠針對快照存儲模式進一步的進行配置。服務器

# The filename where to dump the DB
dbfilename dump.rdb

咱們能夠在redis.conf配置自定義快照存儲的路徑,以便咱們進行數據恢復。app

若是須要恢復數據,只需將備份文件 (dump.rdb) 移動到 redis 安裝目錄並啓動服務便可,若是不知道Redis的安裝目錄能夠在Redis客戶端裏面使用下面命令得到。ui

CONFIG GET dir

只追加文件(AOF)

咱們能夠在配置文件中找到appendonly no ,將no改爲yes;表明開啓AOF數據存儲方式。一樣,咱們能夠自定義備份文件存儲的位置。操作系統

appendfilename "appendonly.aof"

針對AOF的數據備份方式,有三種模式,分別是;命令行

  • always | 每次寫入命令都要寫入磁盤
  • everysec | 每秒執行一次同步
  • no | 讓操做系統來決定什麼時候同步

咱們能夠在配置文件中,找到appendfsync everysec 修改適合本身的選擇。

備份數據的建議

  • 建立一個定時任務,每小時和天天建立一個快照,保存在不一樣的文件夾裏。
  • 定時任務運行時,把太舊的文件進行刪除。例如只保留48小時的按小時建立的快照和一到兩個月的按天建立的快照。
  • 天天確保一次把快照文件傳輸到數據中心外的地方進行保存,至少不能保存在Redis服務所在的服務器。

更多關於Redis數據的存儲能夠訪問:http://www.javashuo.com/article/p-aghpycuq-kd.html

Redis事務

對於Redis的事務其實和咱們在編寫JDBC的應用程序時所使用的事務是基本一致的,有一點區別是,當Redis的事務中有一條命令發生異常時,並不會對數據進行回滾;而JDBC會針對事務的回滾。也是說Redis事務並無維持其原子性

Redis事務流程

  • 批量操做在發送 EXEC 命令前被放入隊列緩存。
  • 收到 EXEC 命令後進入事務執行,事務中任意命令執行失敗,其他的命令依然被執行。
  • 在事務執行過程,其餘客戶端提交的命令請求不會插入到事務執行命令序列中。

Redis事務命令

命令 詳解
MULTI 標記一個事務塊的開始。
EXEC 執行全部事務塊內的命令。
DISCARD 取消事務,放棄執行事務塊內的全部命令。
UNWATCH 取消 WATCH 命令對全部 key 的監視。

Redis事務演示

Redis發佈訂閱

Redis 發佈訂閱(pub/sub)是一種消息通訊模式:發送者(pub)發送消息,訂閱者(sub)接收消息。

發佈

pubsub2

訂閱

pubsub1

Redis發佈訂閱命令

命令 詳解
PSUBSCRIBE pattern [pattern ...] 訂閱一個或多個符合給定模式的頻道。
PUBSUB subcommand [argument [argument ...]] 查看訂閱與發佈系統狀態。
PUBLISH channel message 將信息發送到指定的頻道。
PUNSUBSCRIBE [pattern [pattern ...]] 退訂全部給定模式的頻道。
SUBSCRIBE channel [channel ...] 訂閱給定的一個或多個頻道的信息。
UNSUBSCRIBE [channel [channel ...]] 指退訂給定的頻道。

Redis發佈訂閱演示

Redis安全

咱們能夠在Redis的配置文件中設置Redis密碼,在客戶端進行訪問Redis的時候會進行密碼驗證;

查看是否設置密碼

在Redis命令行中輸入命令 CONFIG get requirepass

設置密碼

咱們能夠在redis.conf中找到# requirepass foobared 將註釋去掉,設置成本身的密碼便可。

相關文章
相關標籤/搜索