21.9-21.12 Redis介紹,安裝,持久化介紹
Redis和Memcached類似,也屬於k-v數據存儲
Redis官網redis.io, 當前最新穩定版4.0.1
支持更多value類型,除了和string外,還支持hash、lists(鏈表)、sets(集合)和sorted sets(有序集合)
redis使用了兩種文件格式:全量數據(RDB)和增量請求(aof)。
全量數據格式是把內存中的數據寫入磁盤,便於下次讀取文件進行加載。
增量請求文件則是把內存中的數據序列化為操作請求,用於讀取文件進行replay得到數據,這種類似於mysql binlog。
redis的存儲分為內存存儲、磁盤存儲和log文件三部分
21.10 Redis 安裝
cd /usr/local/src/ wget http://download.redis.io/releases/redis-4.0.1.tar.gz tar zxvf redis-4.0.1.tar.gz cd redis-4.0.1 make && make install cp redis.conf /etc/redis.conf vim /etc/redis.conf #修改如下配置
#把
daemonize no
#改成
daemonize yes
#no前臺啟動,yes後臺啟動
logfile "/var/log/redis.log" #定義日誌文件 dir /data/redis/ #redis文件存放路徑 appendonly yes #開啟aof,aof名字:apendonly.aof mkdir /data/redis
兩項內核參數,沒必要修改時保持默認
在rc.local添加此兩項參數,開啟時可以啟動
sysctl vm.overcommit_memory=1 echo never > /sys/kernel/mm/transparent_hugepage/enabled
啟動Redis服務
redis-server /etc/redis.conf
檢查進程
ps uax |grep redis root 12428 0.0 0.1 145252 2168 ? Ssl 17:37 0:00 redis-server 127.0.0.1:6379 root 12457 0.0 0.0 112660 968 pts/0 R+ 17:38 0:00 grep --color=auto redis
21.11 Redis持久化
前言:數據存放在內存裏,無論是讀和寫都是非常快的,但是如果重啟服務器或者重啟服務,數據都會因此丟失。所以,數據較為重要的話,需要實施數據持久化。
Redis提供了兩種持久化的方式,分別是RDB(Redis DataBase)和AOF(Append Only File)
RDB,簡而言之,就是在不同的時間點,將redis存儲的數據生成快照並存儲到磁盤等介質上。#簡單來說,就是把內存的數據做一個鏡像,然後完整映射存儲到磁盤上面。
存儲方式是通過redis.conf的save參數來定義存儲方式。
example,
# save ""
save 900 1
save 300 10
save 60 10000
滿足這3個條件則會觸發持久化存儲
如果把持久化關閉,則把save參數條件都deleted,然後把#save "" 註釋去掉,改成這樣
save ""
AOF,則是換了一個角度來實現持久化,那就是將redis執行過的所有寫指令記錄下來,在下次redis重新啟動時,只要把這些寫指令從前到後再重復執行一遍,就可以實現數據恢復了。#數據隨著操作時間的增長而增長。
其實RDB和AOF兩種方式也可以同時使用,在這種情況下,如果redis重啟的話,則會優先采用AOF方式來進行數據恢復,這是因為AOF方式的數據恢復完整度更高。
AOF有三種方式
appendfsync always #一直寫,每次變更就寫
appendfsync everysec #每秒寫
appendfsync no #每隔一段時間寫,最不安全的
如果你沒有數據持久化的需求,也完全可以關閉RDB和AOF方式,這樣的話,redis將變成一個純內存數據庫,就像memcache一樣。
兩者對比,AOF保存比較存儲比較安全。
21.9-21.12 Redis介紹,安裝,持久化介紹