共計 4225 個字符,預計需要花費 11 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要介紹了 redis 中持久化配置的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
redis 的持久化配置(圖文介紹)redis 簡述
redis 是一款由 c 語言編寫的,開源的高可用的非關系型數據庫(NoSQL,不僅僅是數據庫)型的鍵值對(key-value)數據庫。
與傳統的數據庫不同的是 redis 的數據是存在內存的,所以讀寫性能不是一般的高,可達到每秒 10 萬次操作,因此被廣泛的應用到緩存方向,例如:在網站架構里面和 tomcat 做 session 共享,做數據庫緩存等。
redis 的優缺點
優點
讀寫速度快,讀能達到 110000 次 /s,寫能達到 81000 次 /s,c 語言寫的,代碼優雅,而且還是單線程架構,所以執行效率高,速度快
支持多種數據結構,字符串(string,也是最常用的),哈希(hash),列表(list),集合(SET),有序集合(ZSET)
豐富的功能,例如:天然計數器, 鍵過期功能,消息隊列等
支持的客戶端語言多,支持 php,java,python
支持數據持久化
自帶多種高可用架構,比如:主從復制,哨兵,高可用集群
缺點
正是因為數據都存在內存里,所以對服務器性能要求嚴格,根據業務量自己選擇內存選購多大
很難實現在線擴容,所以第一次選購需謹慎
上面有提到持久化,何為持久化?
持久化就是支持把內存中的數據寫到磁盤里面,防止服務器宕機了內存里面數據全部丟失。
實現持久化的方式
支持 2 種格式持久化數據 AOF,RDB,還有就是這兩種混合使用 AOF RDB
注意:當這種都開啟時,redis 數據恢復優先使用 AOF,但是 RDB 是默認的持久化方式。
AOF 持久化:就是把 redis 每一次執行的命令都記錄到單獨指定的日志文件里面,當重啟或者要恢復數據時就會恢復日志文件中的數據
RDB:就像是拍快照一樣,按照配置文件定義的 save 參數來定義快照的周期,然后保存到硬盤里面,會產生 dump.rdb 文件
AOF 和 RDB 的對比:
1AOF 文件比 rdb 更新頻率高,優先使用 aof 還原
aof 比 rdb 更安全
rdb 性能比 aof 要好,數據量很大時,日志恢復速度比 rdb 慢
在持續讀寫時,如果 rdb 拍攝快照,會有數據延遲,恢復的數據會不完整
redis 的數據結構數據類型存儲值常用的操作命令應用的場景 string 字符串 SET(創建),GET(查看),DEL(刪除),MSET(批量創建),MGET(批量查看做緩存,鍵值對的過期時間,把 session 會話存在 redis, 過期刪除,緩存用戶信息,緩存 Mysql 部分數據,商城優惠卷過期時間等 list 列表 RPUSH(創建,若存在則向右邊添加),LPUSH(左添加,LRABGE+ 范圍(查看范圍值),RPOP(刪除右邊最后一個),LPOP(刪除左邊最后一個)一般與 zset 結合用,主要應用于排行榜,熱度 / 點擊數排行榜,直播間榜一大哥排行等 hash 哈希 HMSET+ 對象(創建對象的鍵值,針對的是一個對象),HGET+ 對象(查看對象的某個參數)一般 key 是 ID 或唯一標識,value 是對應的詳細信息,如:商品信息,個人信息,新聞等 SET 無序集合 SADD(創建集合),SMEMBERS(查看集合),SREM(刪除集合的值),SDIFF 集合 1 集合 2(求差集),SINTER 集合 1 集合 2(求合集),SUNION 集合 1 集合 2(求并集)求交集,并集,合集,應用于社交網絡,如:共同愛好,共同好友等 ZSET 有序集合同 SET 可以和 list 結合完成排行榜實現 redis 的持久化部署 redis
1. 創建數據目錄
mkdir -p /redis/soft
mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}
解釋下為什么自己創建 conf,logs,pid 目錄,而不是讓它初始化自動生成
我們是為了再一臺主機上開啟多個 redis 進程來實現后期的 redis 集群(至少 6 臺)(Author 電腦配置不允許我任性操作)
2. 下載 redis 安裝包
cd /redis/soft
wget http://download.redis.io/releases/redis-5.0.6.tar.gz
3. 解壓 redis 到 /opt/redis_cluster/
tar zxf redis-5.0.6.tar.gz -C /opt/redis_cluster/
ln -s /opt/redis_cluster/redis-5.0.6 /opt/redis_cluster/redis # 做好軟連接,方便自己管理
4. 切換目錄安裝 redis
cd /opt/redis_cluster/redis
make make install
5. 自己編寫配置文件 /opt/redis_cluster/redis_6379/conf/6379.conf
添加一些重要的內容
添加:bind 127.0.0.1 192.168.10.1
port 6379
daemonize yes # 開啟 daemon 進程 pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
databases 16
dbfilename redis.rdb #RDB 持久化文件 dir /opt/redis_cluster/redis_6379 #RDB 存放的位置
6. 啟動當前 redis 服務
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
[root@redis-master ~]# netstat -anpt |grep 6379tcp 0 0 192.168.10.1:6379 0.0.0.0:* LISTEN 49206/redis-server
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 49206/redis-server
tcp 0 0 127.0.0.1:41400 127.0.0.1:6379 TIME_WAIT -
tcp 0 0 192.168.10.1:6379 192.168.10.8:46220 ESTABLISHED 49206/redis-server
[root@redis-master ~]#
持久化之 RDB 配置
修改配置文件,添加 save 項
vim /opt/redis_cluster/redis_6379/conf/6379.conf
save 900 1 #在 900 秒 (15 分鐘) 之后,如果至少有 1 個 key 發生變化,則 dump 內存快照。save 300 10 #在 300 秒 (5 分鐘) 之后,如果至少有 10 個 key 發生變化,則 dump 內存快照。save 60 500 # 在 60 秒 (1 分鐘) 之后,如果至少有 500 個 key 發生變化,則 dump 內存快照
持久化之 AOF 配置
同為修改配置文件
添加 appendonly,啟用持久化
vim /opt/redis_cluster/redis_6379/conf/6379.conf
appendonly yes #啟用 AOF 持久化 appendfilename redis.aof #指定 AOF 文件名 appendfsync everysec #每秒同步一次
重啟 redis 使其生效,驗證持久化
redis-cli shutdownredis-server /opt/redis_cluster/redis_6379/conf/6379.conf
在 redis 數據庫里面添加鍵值對
#!/bin/bashfor i in {1..500}do
redis-cli set k_$i v_$idone
這時候關閉數據庫,內存里的東西正??隙〞G失,但是,現在肯定不會丟失的,而且還會有持久化的文件
[root@redis-master ~]# redis-cli shutdown[root@redis-master ~]# redis-server /opt/redis_cluster/redis_6379/conf/6379.conf [root@redis-master ~]# [root@redis-master ~]# redis-cli127.0.0.1:6379 keys k_500
1) v_500 127.0.0.1:6379
redis 主從復制
為什么要做 redis 主從復制?
為解決單點故障把數據復制到一個或多個副本副本服務器(從服務器),實現冗余,達到故障恢復和負載均衡的目的
另起一臺服務器,安裝 redis
1. 為了簡單,我們直接復制前邊 master
[root@redis-master ~]# scp -rp /opt/redis_cluster/ root@192.168.10.8:/opt
2. 直接 make install 安裝 redis,無須再編譯,在 master 已經做過
修改配置文件
cd /opt/redis_cluster/redis
vim /opt/redis_cluster/redis_6379/conf/6379.conf
bind 127.0.0.1 192.168.10.8
slaveof 192.168.10.1 6379 # 添加 master 的 ip port 保存退出
3. 啟動服務
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
主服務器上新建鍵值,測試從服務器自動同步
注:
從服務器在同步過程中,只能復制主數據庫的數據,不能手動添加修改數據;
如果從服務器非要修改數據,需要斷開同步:
[root@redis-slave ~]# redis-cli slaveof no one
提示 OK 即可
如果 master 宕機的話,從服務器可以先手動斷開同步,這時候,他就是一個獨立的個體,其他的從服務器再指向自己,即可完成切換
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“redis 中持久化配置的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!
向 AI 問一下細節