redis

redis簡介

1.Redis是一個key-value存儲系統。
和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。
2.在此基礎上,redis支持各種不同方式的排序。
與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。?
Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關系數據庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。
3.Redis支持主從同步。
數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹復制。存盤可以有意無意的對數據進行寫操作。由于完全實現了發布/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道并接收主服務器完整的消息發布記錄。同步對讀取操作的可擴展性和數據冗余很有幫助。

Redis 與其他 key - value 緩存產品有以下三個特點:
- Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。
- Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
- Redis支持數據的備份,即master-slave模式的數據備份。

redis優勢
- 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。- 豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功執行要么失敗完全不執行。單個操作是原子性的。多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來。
- 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。

redis安裝
下載地址http://redis.io/download,下載最新穩定版本。$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz
$ tar xzf redis-4.0.9.tar.gz -C /usr/local
$ cd redis-4.0.9
$ yum install -y make gcc
$ make

redis簡單配置
# cp redis.conf redis.conf.bak
# vim redis.conf? ? ---修改如下
bind 127.0.0.1  #只監聽內網IP
daemonize yes     #開啟后臺模式將on改為yes
timeout 300      #連接超時時間
port 6379? ? ? ? ? ? ? ? ? ? ? #端口號
databases 0? ? ? ? ? ? ? ? 存儲Session的Redis庫編號 1~16? systemctl啟動不能為0
dir ./  #本地數據庫存放目錄該目錄需要存在
pidfile /var/run/redis_6379.pid  #定義pid文件
logfile /var/log/redis_6379.log  #定義log文件
#requirepass tiger? ? # 設置密碼

配置redis為systemctl啟動

redis啟動
啟動前可能會提示 systemctl daemon-reloadmake完后 redis-4.0.9目錄下會出現編譯后的redis服務程序redis-server,還有用于測試的客戶端程序redis-cli,兩個程序位于安裝目錄 src 目錄下:
$ src/redis-server
注意這種方式啟動redis 使用的是默認配置。也可以通過啟動參數告訴redis使用指定配置文件使用下面命令啟動。
$ cd src
$ ./redis-server ../redis.conf
redis.conf 是一個默認的配置文件。我們可以根據需要使用自己的配置文件。
redis客戶端測試
要開啟客戶端的
$ src/redis-cli
127.0.0.1:6379> set 1901 GZ
OK
127.0.0.1:6379> get 1901
"GZ"
127.0.0.1:6379> ping
PONG


redis數據類型
Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
redis主從 + 哨兵
主從 - 用法像MySQL一樣,redis是支持主從同步的,而且也支持一主多從以及多級從結構。主從結構,一是為了純粹的冗余備份,二是為了提升讀性能,比如很消耗性能的SORT就可以由從服務器來承擔。
redis的主從同步是異步進行的,這意味著主從同步不會影響主邏輯,也不會降低redis的處理性能。
主從架構中,可以考慮關閉主服務器的數據持久化功能,只讓從服務器進行持久化,這樣可以提高主服務器的處理性能。
在主從架構中,從服務器通常被設置為只讀模式,這樣可以避免從服務器的數據被誤修改。但是從服務器仍然可以接受CONFIG等指令,所以還是不應該將從服務器直接暴露到不安全的網絡環境中。如果必須如此,那可以考慮給重要指令進行重命名,來避免命令被外人誤執行。

2.修改slave1的配置文件:

配置哨兵模式
1.每臺機器上修改redis主配置文件redis.conf文件設置:bind 0.0.0.0 ---配置主從時已經完成
2.每臺機器上修改sentinel.conf配置文件:修改如下配置
[root@redis-master src]# cd ..
[root@redis-master redis]# vim sentinel.conf
? ? ? ? sentinel monitor mymaster 192.168.19.129 6379 2 (slave上面寫的是master的ip,master寫自己ip)
? ? ? ? sentinel down-after-milliseconds mymaster 3000
? ? ? ? sentinel failover-timeout mymaster 10000
? ? ? ? protected-mode no

關閉加密
protected-mode no
構成master客觀下線的前提,至少有兩個sentinel(哨兵)主觀認為master已經下線
sentinel monitor mymaster 192.168.19.129 6379 2?
sentinel每隔一定時間向其已知的master發送ping指令,在設置的這個時間內如果沒有收master返回的數據包,就會把master標記為主觀下線。單位為毫秒
sentinel down-after-milliseconds mymaster 3000
在這個時間內如果主從切換沒有完成就停止切換。單位毫秒
sentinel failover-timeout mymaster 10000

3.每臺機器啟動哨兵服務:
? ? ?? # ./src/redis-sentinel sentinel.conf
注意:在生產環境下將哨兵模式啟動放到后臺執行:? ? ? ? ./src/redis-sentinel sentinel.conf &
在master上面執行
這是啟動成功的!

將master的哨兵模式退出,再將redis服務stop了,在兩臺slave上面查看其中一臺是否切換為master:(沒有優先級,為隨機切換)
master 192.168.19.129

主從+哨兵模式測試部署完成!
了解 主從+哨兵+lvs? 制作redis主從的高可用
redis切片等

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容