redis的持久化配置(圖文介紹)
#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更安全 | rdb效能比aof好,當資料量很大時,日誌復原速度比rdb慢 | ||
---|---|---|---|
redis 的資料結構 | #資料型態 | ||
#常用的操作指令 | 應用的場景 | ||
字串 | SET(建立),GET(查看),DEL(刪除),MSET(批量創建),MGET(批量查看 | 做緩存,鍵值對的過期時間, 把session會話存在redis,過期刪除,緩存用戶信息,緩存Mysql部分數據,商城優惠卷過期時間等 | |
列表 | RPUSH(創建,若存在則向右邊添加),LPUSH(左添加,LRABGE 範圍(查看範圍值),RPOP(刪除右邊最後一個),LPOP(刪除左邊最後一個) | 一般與zset結合用,主要應用於排行榜,熱度/點擊數排行榜,直播間榜一大哥排行等 | |
哈希 | HMSET 物件(創建物件的鍵值,針對的是一個物件),HGET物件(查看物件的某個參數) | 一般key是ID或唯一標識,value是對應的詳細信息,如:商品信息,個人信息,新聞等 |
實作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
這時候關閉資料庫,記憶體裡的東西正常一定會遺失,但是,現在肯定不會遺失的,而且還會有持久化的檔案
[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宕機的話,從伺服器可以先手動斷開同步
,這時候,他就是一個獨立的個體,其他的從伺服器再指向自己
,即可完成切換
本文轉自:https://blog.csdn.net/weixin_43815140/article/details/106128848
更多相關知識,請造訪PHP中文網! !
以上是redis的持久化配置(圖文介紹)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

Redis計數器是一種使用Redis鍵值對存儲來實現計數操作的機制,包含以下步驟:創建計數器鍵、增加計數、減少計數、重置計數和獲取計數。 Redis計數器的優勢包括速度快、高並發、持久性和簡單易用。它可用於用戶訪問計數、實時指標跟踪、遊戲分數和排名以及訂單處理計數等場景。

Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。

在Debian系統中,readdir系統調用用於讀取目錄內容。如果其性能表現不佳,可嘗試以下優化策略:精簡目錄文件數量:盡可能將大型目錄拆分成多個小型目錄,降低每次readdir調用處理的項目數量。啟用目錄內容緩存:構建緩存機制,定期或在目錄內容變更時更新緩存,減少對readdir的頻繁調用。內存緩存(如Memcached或Redis)或本地緩存(如文件或數據庫)均可考慮。採用高效數據結構:如果自行實現目錄遍歷,選擇更高效的數據結構(例如哈希表而非線性搜索)存儲和訪問目錄信
