首頁 > 資料庫 > SQL > 主體

redis的持久化配置(圖文介紹)

烟雨青岚
發布: 2020-06-17 16:40:01
轉載
2946 人瀏覽過

redis的持久化配置(圖文介紹)

#redis的持久化配置(圖文介紹)

redis簡述

redis是一款由c語言編寫的,開源的高可用的非關係型資料庫(NoSQL,不僅僅是資料庫)型的鍵值對(key-value)資料庫。

與傳統的資料庫不同的是redis的資料是存在記憶體的,所以讀寫效能不是一般的高,可達到每秒10萬次操作,因此被廣泛的應用到快取方向,例如:在網站架構裡面和tomcat做session共享,做資料庫快取等。

redis的優缺點

優點

  1. 讀寫速度快,讀能達到110000次/s,寫能達到81000次/s, c語言寫的,程式碼優雅,而且還是單執行緒架構,所以執行效率高,速度快

  2. #支援多種資料結構,字串(string,也是最常用的),哈希(hash),列表(list),集合(SET),有序集合(ZSET)

  3. #豐富的功能,例如:天然計數器,  鍵過期功能,訊息佇列等

  4. 支援的客戶端語言多,支援php,java,python

  5. 支援資料持久化

  6. 自帶多種高可用架構,例如:主從複製,哨兵,高可用叢集


##正是因為資料都存在記憶體裡,所以對伺服器效能要求嚴格,根據業務量自己選擇記憶體選購多大

    很難實現線上擴容,所以第一次選購需謹慎
  1. 上面有提到持久化,何為持久化?
  2. 持久化就是支援把記憶體中的資料寫到磁碟裡面,防止伺服器宕機了記憶體裡面資料全部遺失。

  3. 實現持久化的方式
  4. 支援2種格式持久化資料AOF, RDB,還有就是這兩種混合使用AOF&RDB

    注意:當這種都開啟時,redis資料恢復優先使用AOF,但是RDB是預設的持久化方式。
  5. AOF持久化:就是把redis每一次執行的指令都記錄到單獨指定的日誌檔案裡面,當重新啟動或要復原資料時就會復原日誌檔案中的資料

    RDB :就像是拍快照一樣,依照設定檔定義的save參數定義快照的週期,然後儲存到硬碟裡面,會產生dump.rdb檔
AOF和RDB的比較:

1AOF檔案比rdb更新頻率高,優先使用aof還原在持續讀寫時,如果rdb拍攝快照,會有資料延遲,復原的資料會不完整#資料型態儲存值#常用的操作指令應用的場景string字串SET(建立),GET(查看),DEL(刪除),MSET(批量創建),MGET(批量查看做緩存,鍵值對的過期時間, 把session會話存在redis,過期刪除,緩存用戶信息,緩存Mysql部分數據,商城優惠卷過期時間等list列表RPUSH(創建,若存在則向右邊添加),LPUSH(左添加,LRABGE 範圍(查看範圍值),RPOP(刪除右邊最後一個),LPOP(刪除左邊最後一個)一般與zset結合用,主要應用於排行榜,熱度/點擊數排行榜,直播間榜一大哥排行等hash哈希HMSET 物件(創建物件的鍵值,針對的是一個物件),HGET物件(查看物件的某個參數)一般key是ID或唯一標識,value是對應的詳細信息,如:商品信息,個人信息,新聞等SET
#aof比rdb更安全 rdb效能比aof好,當資料量很大時,日誌復原速度比rdb慢
redis 的資料結構
###無序集合######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
登入後複製

redis的持久化配置(圖文介紹)

這時候關閉資料庫,記憶體裡的東西正常一定會遺失,但是,現在肯定不會遺失的,而且還會有持久化的檔案

[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主從複製?
為解決單點故障把資料複製到一個或多個副本副本伺服器(從伺服器),實現冗餘,達到故障復原和負載平衡的目的

#另起一台伺服器,安裝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

主伺服器上新鍵值,測試從伺服器自動同步

redis的持久化配置(圖文介紹)
redis的持久化配置(圖文介紹)
#註:
從伺服器在同步過程中,只能複製主資料庫的數據,不能手動新增修改資料;
如果從伺服器非要修改數據,需要斷開同步:
[root@redis-slave ~]# redis-cli slaveof no one

提示OK即可

如果master宕機的話,從伺服器可以先手動斷開同步,這時候,他就是一個獨立的個體,其他的從伺服器再指向自己,即可完成切換

本文轉自:https://blog.csdn.net/weixin_43815140/article/details/106128848

更多相關知識,請造訪PHP中文網! !

以上是redis的持久化配置(圖文介紹)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板