搜尋
首頁資料庫SQLredis的持久化配置(圖文介紹)

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。如有侵權,請聯絡admin@php.cn刪除
MySQL:SQL的特定實現MySQL:SQL的特定實現Apr 13, 2025 am 12:02 AM

MySQL是開源的關係型數據庫管理系統,提供了標準SQL功能和擴展。 1)MySQL支持標準SQL操作如CREATE、INSERT、UPDATE、DELETE,並擴展了LIMIT子句。 2)它使用InnoDB和MyISAM等存儲引擎,適用於不同場景。 3)用戶可以通過創建表、插入數據和使用存儲過程等高級功能高效使用MySQL。

SQL:使所有人都可以訪問數據管理SQL:使所有人都可以訪問數據管理Apr 12, 2025 am 12:14 AM

sqlmakesdatamanagectAccessibletoAllbyProvidingAsimpleyetpoperfultoolSetSetForQuerquereingAndManagingDatabases.1)ItworkswithrelationalDatabases,允許inserstospecefifywhattheywanttododowithththedata.2)

SQL索引策略:通過數量級提高查詢性能SQL索引策略:通過數量級提高查詢性能Apr 11, 2025 am 12:04 AM

SQL索引可以通过巧妙的设计显著提升查询性能。1.选择合适的索引类型,如B-tree、哈希或全文索引。2.使用复合索引优化多字段查询。3.避免过度索引以减少数据维护开销。4.定期维护索引,包括重建和移除不必要的索引。

sql怎麼刪除約束sql怎麼刪除約束Apr 10, 2025 pm 12:21 PM

在 SQL 中刪除約束,請執行以下步驟:識別要刪除的約束名稱;使用 ALTER TABLE 語句:ALTER TABLE 表名 DROP CONSTRAINT 約束名;確認刪除。

sql觸發器怎麼設置sql觸發器怎麼設置Apr 10, 2025 pm 12:18 PM

SQL 觸發器是一種在指定表上執行特定事件時自動執行特定操作的數據庫對象。要設置 SQL 觸發器,可以使用 CREATE TRIGGER 語句,其中包括觸發器名稱、表名稱、事件類型和触發器代碼。觸發器代碼使用 AS 關鍵字進行定義,並包含 SQL 或 PL/SQL 語句或塊。通過指定觸發器條件,可以使用 WHERE 子句限制觸發器的執行範圍。可以使用 INSERT INTO、UPDATE 或 DELETE 語句在觸發器代碼中執行觸發器操作。 NEW 和 OLD 關鍵字可以在觸發器代碼中用來引用受影

sql查詢怎麼加索引sql查詢怎麼加索引Apr 10, 2025 pm 12:15 PM

索引是一種通過排序數據列來加速數據查找的數據結構。為 SQL 查詢添加索引的步驟如下:確定需要索引的列。選擇合適的索引類型(B 樹、哈希或位圖)。使用 CREATE INDEX 命令創建索引。定期重建或重新組織索引以維護其效率。添加索引的好處包括提高查詢性能、減少 I/O 操作、優化排序和篩選以及提高並發性。當查詢經常使用特定列、返回大量數據需要排序或分組、涉及多個表或數據庫表較大時,應該考慮添加索引。

sql語句ifelse怎麼用sql語句ifelse怎麼用Apr 10, 2025 pm 12:12 PM

IFELSE 語句是一種條件語句,用於根據條件評估結果返回不同值。其語法結構為:IF (condition) THEN return_value_if_condition_is_true ELSE return_value_if_condition_is_false END IF;。

sql數據庫錯誤怎麼查看sql數據庫錯誤怎麼查看Apr 10, 2025 pm 12:09 PM

SQL數據庫錯誤查看方法有:1. 直接查看錯誤消息;2. 使用SHOW ERRORS和SHOW WARNINGS命令;3. 訪問錯誤日誌;4. 使用錯誤代碼查找錯誤原因;5. 檢查數據庫連接和查詢語法;6. 使用調試工具。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境