當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 操作系統 » redis數據持久化到資料庫

redis數據持久化到資料庫-九游会j9娱乐平台

發布時間: 2024-01-14 18:25:28

㈠ 高性能高並發網站架構,教你搭建redis5緩存集群

一、redis集群介紹

redis真的是一個優秀的技術,它是一仔圓種key-value形式的nosql內存資料庫,由ansi c編寫,遵守bsd協議、支持網路、可基於內存亦可持久化的日誌型、key-value資料庫,並提供多種語言的api。 redis最大的特性是它會將所有數據都放在內存中,所以讀寫速度性能非常好。redis是基於內存進行操作的,性能較高,可以很好的在一定程度上解決網站一瞬間的並發量,例如商品搶購秒殺等活動。

網站承受高並發訪問壓力的同時,還需要從海量數據中查詢出滿足條件的數據,需要快速響應,前端發送請求、後端和mysql資料庫交互,進行sql查詢操作,讀寫比較慢,這時候引入redis ,把從mysql 的數據緩存到redis 中,下次讀取時候性能就會提高;當然,它也支持將內存中的數據以快照和日誌的形式持久化到硬碟,這樣即使在斷電、機器故障等異常情況發生時數據也不會丟失,redis能從硬碟中恢復快照數據到內存中。

redis 發布了穩定版本的 5.0 版本,放棄 ruby的集群方式,改用 c語言編寫的 redis-cli的方式,是集群的構建方式復雜度大大降低。redis-cluster集群採用無中心結構,每個節點保存數據和整個集群狀態,每個節點都和其他所有節點連接。

為了保證數據的高可用性,加入了主從模式,一個主節點對應一個或多個從節點,主節點提供數據存取,從節點則是從主節點拉取數據備份,當這個主節點掛掉後,就會有這個從節點選取一個來充當主節點,從而保證集群不會掛掉。

redis-cluster投票:容錯,投票過程是集群中所有master參與,如果半數以上master節點與master節點通信超過(cluster-node-timeout),認為當前master節點掛掉。

集群中至少應該有奇數個節點,所以至少有三個節點,每個節點至少有一個備份節點,所以下面使用6節點枝辯(主節點、備份節點由redis-cluster集群確定)。6個節點分布在一台機器上,採用三主三從的模式。實際應用中,最好用多台機器,比如說6個節點分布到3台機器上,redis在建立集群時為自動的將主從節點進行不同機器的分配。

二、單機redis模式

下載源碼redis5.0並解壓編譯

wget http://download.redis.io/releases/redis-5.0.0.tar.gz

tar xzf redis-5.0.0.tar.gz

cd redis-5.0.0

make

redis前端啟動需要改成後台啟動.

修改redis.conf文件,將daemonize no -> daemonize yes

vim redis.conf

啟動redis

/www/server/redis/src/redis-server /www/server/redis/redis.conf

查看redis是否在運行

ps aux|grep redis

現在是單機redis模式完成。

三、redis集群模式:

1.創猛戚缺建6個redis配置文件

cd /usr/local/

mkdir redis_cluster //創建集群目錄

cd redis_cluster

mkdir 7000 7001 7002 7003 7004 7005//分別代表6個節點

其對應埠 7000 7001 7002 70037004 7005

2.復制配置文件到各個目錄

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7000/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7001/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7002/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7003/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7004/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7005/

3.分別修改配置文件

vim /usr/local/redis_cluster/7000/redis.conf

vim /usr/local/redis_cluster/7001/redis.conf

vim /usr/local/redis_cluster/7002/redis.conf

vim /usr/local/redis_cluster/7003/redis.conf

vim /usr/local/redis_cluster/7004/redis.conf

vim /usr/local/redis_cluster/7005/redis.conf

如下

port 7000 #埠

cluster-enabled yes #啟用集群模式

cluster-config-file nodes_7000.conf #集群的配置 配置文件首次啟動自動生成

cluster-node-timeout 5000 #超時時間 5秒

appendonly yes #aof日誌開啟 它會每次寫操作都記錄一條日誌

daemonize yes #後台運行

protected-mode no #非保護模式

pidfile /var/run/redis_7000.pid

//下面可以不寫

#若設置密碼,master和slave需同時配置下面兩個參數:

masterauth "jijiji" #連接master的密碼

requirepass "jijiji" #自己的密碼

cluster-config-file,port,pidfile對應數字

4.啟動節點

cd /www/server/redis/src/

./redis-server /usr/local/redis_cluster/7000/redis.conf

./redis-server /usr/local/redis_cluster/7001/redis.conf

./redis-server /usr/local/redis_cluster/7002/redis.conf

./redis-server /usr/local/redis_cluster/7003/redis.conf

./redis-server /usr/local/redis_cluster/7004/redis.conf

./redis-server /usr/local/redis_cluster/7005/redis.conf

查看redis運行

ps aux|grep redis

5.啟動集群

/www/server/redis/src/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

這里使用的命令是create,因為我們要創建一個新的集群。 該選項--cluster-replicas 1意味著我們希望每個創建的主伺服器都有一個從服。

輸入yes

至此,reids5 集群搭建完成。

6.檢查reids5集群狀態

可以執行redis-cli --cluster check host:port檢查集群狀態slots詳細分配。

redis-cli --cluster info 127.0.0.1:7000

7.停止reids5集群

(1).因為redis可以妥善處理sigterm信號,所以直接kill -9也是可以的,可以同時kill多個,然後再依次啟動。

kill -9 pid pid pid

(2).redis5 提供了關閉集群的工具,修改文件: /www/server/redis/utils/create-cluster/create-cluster

埠prot設置為6999,nodes為6,工具會生成 7000-7005 六個節點 用於操作。

修改後,執行如下命令關閉集群:

/www/server/redis/utils/create-cluster/create-cluster stop

重新啟動集群:

/www/server/redis/utils/create-cluster/create-cluster start

8.幫助信息

執行redis-cli --cluster help,查看更多幫助信息

redis-cli --cluster help

吉海波

㈡ 剛剛問我,redis持久化數據到資料庫是怎麼操作的

1、 快照的方式持久化到磁碟
自動持久化規則配置
save 900 1
save 300 10
save 60 10000
上面的配置規則意思如下:
# in the example below the behaviour will be to save:
# after 900 sec (15 min) if at least 1 key changed
# after 300 sec (5 min) if at least 10 keys changed
# after 60 sec if at least 10000 keys changed
redis也可以關閉自動持久化,注釋掉這些save配置,或者save 「」
如果後台保存到磁碟發生錯誤,將停止寫操作.
stop-writes-on-bgsave-error yes
使用lzf壓縮rdb文件,這會耗cpu, 但是可以減少磁碟佔用.
rdbcompression yes
保存rdb和載入rdb文件的時候檢驗,可以防止錯誤,但是要付出約10%的性能,可以關閉他,提高性能。
rdbchecksum yes
導出的rdb文件名
dbfilename mp.rdb
設置工作目錄, rdb文件會寫到該目錄, append only file也會存儲在該目錄下.
dir ./
redis自動快照保存到磁碟或者調用bgsave,是後台進程完成的,其他客戶端仍然和可以讀寫redis伺服器,後台保存快照到磁碟會佔用大量內存。調用save保存內存中的數據到磁碟,將阻塞客戶端請求,直到保存完畢。
調用shutdown命令,redis伺服器會先調用save,所有數據持久化到磁碟之後才會真正退出。
對於數據丟失的問題:
如果伺服器crash,從上一次快照之後的數據將全部丟失。所以在設置保存規則的時候,要根據實際業務設置允許的范圍。
如果對於數據敏感的業務,在程序中要使用恰當的日誌,在伺服器crash之後,通過日誌恢復數據。
2、 append-only file 的方式持久化

另外一種方式為遞增的方式,將會引起數據變化的操作, 持久化到文件中, 重啟redis的時候,通過操作命令,恢復數據.

每次執行寫操作命令之後,都會將數據寫到server.aofbuf中。
# appendfsync always
appendfsync everysec
# appendfsync no

當配置為always的時候,每次server.aofbuf中的數據寫入到文件之後,才會返回給客戶端,這樣可以保證數據不丟,但是頻繁的io操作,會降低性能。

everysec每秒寫一次,這可能會丟失一秒內的操作。

aof最大的問題就是隨著時間append file會變的很大,所以我們需要bgrewriteaof命令重新整理文件,只保留最新的kv數據。

㈢ redis如何與資料庫數據同步

資料庫同步到redis

我們大多傾向於使用這種方式,也就是將資料庫中的變化同步到redis,這種更加可靠。redis在這里只是做緩存。

方案1 (推薦學習:redis視頻教程)

做緩存,就要遵循緩存的語義規定:

讀:讀緩存redis,沒有,讀mysql,並將mysql的值寫入到redis。

寫:寫mysql,成功後,更新或者失效掉緩存redis中的值。

對於一致性要求高的,從資料庫中讀,比如金融,交易等數據。其他的從redis讀。

這種方案的好處是由mysql,常規的關系型資料庫來保證持久化,一致性等,不容易出錯。

方案2

這里還可以基於binlog使用mysql_udf_redis,將資料庫中的數據同步到redis。

但是很明顯的,這將整體的復雜性提高了,而且本來我們在系統代碼中能很輕易完成的功能,現在需要依賴第三方工具,而且系統的整個邊界擴大了,變得更加不穩定也不好管理了。

熱點內容
發布:2024-01-20 01:08:21 瀏覽:525
發布:2024-01-20 01:07:17 瀏覽:250
愛奇藝正義聯盟為啥不能緩存 發布:2024-01-20 00:52:13 瀏覽:248
caccess查詢資料庫 發布:2024-01-20 00:43:10 瀏覽:769
xp文件夾圖標更改 發布:2024-01-20 00:43:03 瀏覽:19
python和node 發布:2024-01-20 00:37:12 瀏覽:194
android拖拉 發布:2024-01-20 00:00:49 瀏覽:583
少兒編程課程體系介紹 發布:2024-01-20 00:00:48 瀏覽:846
我說你做下載ftp 發布:2024-01-20 00:00:47 瀏覽:8
安卓驅動培訓哪裡好 發布:2024-01-19 23:55:41 瀏覽:987
网站地图