#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中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

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

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

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