Redis中的配置文件,數(shù)據(jù)持久化,事務
一、配置文件
Redis的配置文件存放在Redis的安裝根目錄下
Windows 版本的 Redis 是 Microsoft 的開源部門提供的 Redis. 這個版本的 Redis 適合開發(fā)人員學習使用,生產(chǎn)環(huán)境中使用 Linux 系統(tǒng)上的 Redis;博主直接在本機上安裝操作
Windows下是 redis.windows-service.conf;Linux下是 redis.conf
1、Redis 的網(wǎng)絡相關(guān)配置
(1)bind:綁定IP地址,其它機器可以通過此IP訪問Redis,默認綁定127.0.0.1,也可以修改為本機的IP地址
(2)port:配置Redis占用的端口,默認是6379
(3)tcp-keepalive:TCP連接?;畈呗裕梢酝ㄟ^tcp-keepalive配置項來進行設置,單位為秒,假如設置為60秒,則server端會每60秒向連接空閑的客戶端發(fā)起一次ACK請求,以檢查客戶端是否已經(jīng)掛掉,對于無響應的客戶端則會關(guān)閉其連接
如果設置為0,則不會進行保活檢測。
2、Redis的常規(guī)配置
(1)loglevel:日志級別,開發(fā)階段可以設置成debug,生產(chǎn)階段通常設置為notice或者warning
(2)logfile:指定日志文件名,如果不指定,Redis只進行標準輸出。要保證日志文件所在的目錄必須存在,文件可以不存在。還要在redis啟動時指定所使用的配置文件,否則配置不起作用
(3)databases:配置Redis數(shù)據(jù)庫的個數(shù),默認是16個??????
3、Redis的安全配置
requirepass:配置Redis的訪問密碼。默認不配置密碼,即訪問不需要密碼驗證
此配置項需要在protected-mode=yes時起作用
使用密碼登錄客戶端:redis-cli -h ip -p 6379 -a pwd
二、數(shù)據(jù)持久化
redis是內(nèi)存數(shù)據(jù)庫,它把數(shù)據(jù)存儲在內(nèi)存中,這樣在加快讀取速度的同時也對數(shù)據(jù)安全性產(chǎn)生了新的問題,即當redis所在服務器發(fā)生宕機后,redis數(shù)據(jù)庫里的所有數(shù)據(jù)將會全部丟失。
為了解決這個問題,redis提供了持久化功能——RDB和AOF(Append Only File)
1、RDB
RDB(Redis DataBase)是 Redis 默認的持久化方案。在指定的時間間隔內(nèi),執(zhí)行指定次數(shù)的寫操作,則會將內(nèi)存中的數(shù)據(jù)寫入到磁盤中。即在指定目錄下生成一個dump.rdb文件。Redis重啟會通過加載dump.rdb文件來恢復數(shù)據(jù)
save <seconds> <changes>:配置復合的快照觸發(fā)條件,即Redis 在seconds秒內(nèi)key改變changes次,Redis把快照內(nèi)的數(shù)據(jù)保存到磁盤中一次。默認的策略是:
- 15分鐘內(nèi)改變了1次
- 或者5分鐘內(nèi)改變了10次
- 或者1分鐘內(nèi)改變了1萬次
如果要禁用Redis的持久化功能,則把所有的save配置都注釋掉
2、AOF
AOF(Append Only File),Redis 默認不開啟。它的出現(xiàn)是為了彌補RDB的不足(數(shù)據(jù)的不一致性),所以它采用日志的形式來記錄每個寫操作,并追加到文件中。
Redis 重啟會根據(jù)日志文件的內(nèi)容將寫指令從前到后執(zhí)行一次以完成數(shù)據(jù)的恢復工作。
Redis以日志的形式來記錄每個寫操作,將Redis執(zhí)行過的所有寫指令記錄下來(讀操作不記錄)
AOF保存的文件是appendonly.aof文件
appendonly
:配置是否開啟AOF,yes表示開啟,no表示關(guān)閉。默認是no。appendfilename
:AOF保存文件名appendfsync
:AOF異步持久化策略
三、事務
事務:把一組數(shù)據(jù)庫命令放在一起執(zhí)行,保證操作原子性,要么同時成功,要么同時失敗。
Redis的事務:允許把一組redis命令放在一起,把命令進行序列化,然后一起執(zhí)行,保證部分原子性
Redis事務的常用命令:
1、multi
用于標記事務塊的開始。Redis會將后續(xù)的命令逐個放入隊列中,然后才能使用EXEC命令原子化地執(zhí)行這個命令序列
2、exec
在一個事務中執(zhí)行所有先前放入隊列的命令,然后恢復正常的連接狀態(tài)。
如果在把命令壓入隊列的過程中報錯,則整個隊列中的命令都不會執(zhí)行,執(zhí)行結(jié)果報錯;
如果在壓隊列的過程中正常,在執(zhí)行隊列中某一個命令報錯,則只會影響本條命令的執(zhí)行結(jié)果,其它命令正常運行;
當使用WATCH命令時,只有當受監(jiān)控的鍵沒有被修改時,EXEC命令才會執(zhí)行事務中的命令;而一旦執(zhí)行了exec命令,之前加的所有watch監(jiān)控全部取消
3、discard
清除所有先前在一個事務中放入隊列的命令,并且結(jié)束事務。
如果使用了WATCH命令,那么DISCARD命令就會將當前連接監(jiān)控的所有鍵取消監(jiān)控
4、watch
watch key [key …]
當某個事務需要按條件執(zhí)行時,就要使用這個命令將給定的鍵設置為受監(jiān)控的。
如果被監(jiān)控的key值在本事務外有修改時,則本事務所有指令都不會被執(zhí)行。
Watch命令相當于關(guān)系型數(shù)據(jù)庫中的樂觀鎖
5、unwatch
清除所有先前為一個事務監(jiān)控的鍵。
如果在watch命令之后你調(diào)用了EXEC或DISCARD命令,那么就不需要手動調(diào)用UNWATCH命令
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Redis位圖(Bitmap)及Redis二進制中的問題
這篇文章主要介紹了Redis位圖(Bitmap)及Redis二進制中的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07