redis是一款由c語言
編寫的,開源的高可用的非關係型資料庫
(NoSQL,不僅僅是資料庫)型的鍵值對(key-value)資料庫。
與傳統的資料庫不同的是redis的資料是存在記憶體
的,所以讀寫效能不是一般的高,可達到每秒10萬次操作,因此被廣泛的應用到快取方向,例如:在網站架構裡面和tomcat做session共享,做資料庫快取等。
優點
讀寫速度快,讀能達到110000次/s,寫能達到81000次/s, c語言寫的,程式碼優雅,而且還是單執行緒架構,所以執行效率高,速度快
#支援多種資料結構,字串(string,也是最常用的),哈希(hash),列表(list),集合(SET),有序集合(ZSET)
#豐富的功能,例如:天然計數器, 鍵過期功能,訊息佇列等
支援的客戶端語言多,支援php,java,python
支援資料持久化
自帶多種高可用架構,例如:主從複製,哨兵,高可用叢集
##正是因為資料都存在記憶體裡,所以對伺服器效能要求嚴格,根據業務量自己選擇記憶體選購多大
持久化就是支援把記憶體中的資料寫到磁碟裡面,防止伺服器宕機了記憶體裡面資料全部遺失。
支援2種格式持久化資料AOF, RDB,還有就是這兩種混合使用AOF&RDB
注意:當這種都開啟時,redis資料恢復優先使用AOF,但是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是對應的詳細信息,如:商品信息,個人信息,新聞等 |
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 ~]#
#修改設定文件,加入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内存快照
同為修改設定檔
新增appendonly,啟用持久化
vim /opt/redis_cluster/redis_6379/conf/6379.conf 添加: appendonly yes #启用AOF持久化appendfilename "redis.aof" #指定AOF文件名appendfsync everysec #每秒同步一次
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主從複製?
為解決單點故障把資料複製到一個或多個副本副本伺服器(從伺服器),實現冗餘,達到故障復原和負載平衡的目的
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中文網其他相關文章!