1. 程式人生 > >今天的工作任務是redis的配置以及工具類的完善

今天的工作任務是redis的配置以及工具類的完善

1.

什麼是Redis的AOF?

AOF是AppendOnly File的縮寫,是Redis系統提供了一種記錄Redis操作的持久化方案,在AOF生成的檔案中,將忠實記錄發生在Redis的操作,從而達到在Redis伺服器重啟或者當機之後,繼續恢復之前資料狀態的機制。

 

以下我們來簡要看看如何在Redis中使用AOF,並驗證整個過程:

 

A. Redis中主要的AOF設定

   appendonly yes  ---- 開啟aof設定,同時將快照功能置於低優先順序的位置

  appendfsync no
        當設定appendfsync為no的時候,Redis不會主動呼叫fsync去將AOF日誌內容同步到磁碟,所以這一切就完全依賴於作業系統的除錯了。對大多數Linux作業系統,是每30秒進行一次fsync,將緩衝區中的資料寫到磁碟上。
   appendfsync everysec
        當設定appendfsync為everysec的時候,Redis會預設每隔一秒進行一次fsync呼叫,將緩衝區中的資料寫到磁碟。但是當這一次的fsync呼叫時長超過1秒時。Redis會採取延遲fsync的策略,再等一秒鐘。也就是在兩秒後再進行fsync,這一次的fsync就不管會執行多 長時間都會進行。這時候由於在fsync時檔案描述符會被阻塞,所以當前的寫操作就會阻塞。
        結論就是,在絕大多數情況下,Redis會每隔一秒進行一 次fsync。在最壞的情況下,兩秒鐘會進行一次fsync操作。這一操作在大多數資料庫系統中被稱為group commit,就是組合多次寫操作的資料,一次性將日誌寫到磁碟。
   appendfsync always
        置appendfsync為always時,每一次寫操作都會呼叫一次fsync,這時資料是最安全的,當然,由於每次都會執行fsync,
所以其效能也會受到影響。(如果是金融方面的系統,建議選擇always)

B.redis.properties

# Redis資料庫索引(預設為0)
spring.redis.database=0
# Redis伺服器地址
spring.redis.host=localhost
# Redis伺服器連線埠
spring.redis.port=6379
# Redis伺服器連線密碼(預設為空)
spring.redis.password=
# 連線池最大連線數(使用負值表示沒有限制)
spring.redis.pool.max-active=8
# 連線池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1
# 連線池中的最大空閒連線
spring.redis.pool.max-idle=8
# 連線池中的最小空閒連線
spring.redis.pool.min-idle=0
# 連線超時時間(毫秒)
spring.redis.timeout=0

C.關於openReplicator的使用

Open Replicator是一個用Java編寫的MySQL binlog分析程式。Open Replicator 首先連線到MySQL(就像一個普通的MySQL Slave一樣),然後接收和分析binlog,最終將分析得出的binlog events以回撥的方式通知應用。Open Replicator可以被應用到MySQL資料變化的實時推送,多Master到單Slave的資料同步等多種應用場景。Open Replicator目前只支援MySQL5.0及以上版本。

參考:https://www.2cto.com/kf/201611/563306.html

方法1:mysql 同步到redis:解析mysql的binlog,然後做同步處理,可以使用的庫有:open-replicatorhttps://github.com/whitesock/open-replicator

方法2:同步redis資料到mysql:(https://github.com/leonchen83/redis-replicator

<!--這裡是open-replicator的依賴,是用來將mysql的資料放進redis進行快取用,
這裡的依賴是通過maven倉庫搜尋出來的-->
        <dependency>
            <groupId>com.flipkart</groupId>
            <artifactId>open-replicator</artifactId>
            <version>1.0.8</version>
        </dependency>

D.mysql的binlog詳解

(1)Mysql的binlog日誌作用是用來記錄mysql內部增刪改查等對mysql資料庫有更新的內容的記錄(對資料庫的改動),對資料庫的查詢select或show等不會被binlog日誌記錄;主要用於資料庫的主從複製以及增量恢復。

mysql的binlog日誌必須開啟log-bin功能才能生存binlog日誌

(2)開啟mysql的log-bin功能

# grep log-bin my.cnf

log-bin = /data/3306/mysql-bin

 

我的開發環境使用了wamp軟體包

從mysql.ini中找到了類似的一行

 

注意,前面有分號表示註釋的

其他詳情,參考:https://www.cnblogs.com/xhyan/p/6530861.html