redis單節點集羣

1、概念linux

  redis是一種支持Key-Value等多種數據結構的存儲系統。可用於緩存、事件發佈或訂閱、高速隊列等場景。該數據庫使用ANSI C語言編寫,支持網絡,提供字符串、哈希、列表、隊列、集合結構直接存取,基於內存,可持久化。redis


2、redis的應用場景有哪些
  一、會話緩存(最經常使用)
  二、消息隊列,好比支付
  三、活動排行榜或計數
  四、發佈、訂閱消息(消息通知)
  五、商品列表、評論列表等數據庫

1.redis安裝:vim

1 # wget http://download.redis.io/releases/redis-4.0.6.tar.gz
2 # yum install gcc  
3 # make MALLOC=libc
4 # cd src && make install
5 # ./redis-server

 

2.修改配置文件:

centos

1 # vim ../redis.conf
2     daemonize yes         #之後臺進程方式啓動
3     #bind 127.0.0.1        #容許本地鏈接
4     requirepass redhat     #設置鏈接密碼

 

3.後臺啓動:緩存

1 # ./redis-server /root/redis-4.0.6/redis.conf

 

4.登陸:安全

1 # redis-cli -h 127.0.0.1 -p 6379

 

   認證:ruby

1 auth redhat

 

5.redis數據類型:
字符串(string):set bp 123 #設置字符串類型bp 值爲122bash

1  hget ID name        #獲取散列名ID的name對應的值
2  hgetall ID          #獲取散列ID的所有值
3  hmset age name linux kali contos debian 30      #一次性設置散列age的值
4  hdel ood name        #刪除某個散列的值
5  hexists age kali      #判斷某個散列的值是否存在,0不存在

 

散列(hash):hset ID(散列名) name(鍵) passwd(值) #設置散列名ID存放的值對網絡

1  hget ID name       #獲取散列名ID的name對應的值
2  hgetall ID          #獲取散列ID的所有值
3  hmset age name linux kali contos debian 30      #一次性設置散列age的值
4  hdel ood name       #刪除某個散列的值
5  hexists age kali     #判斷某個散列的值是否存在,0不存在



列表(list):lpush test 1   #列表名爲test,從左邊加入1,編號爲最後一位數

1  rpush test -1      #列表名爲test,從右邊加入-1,編號爲0
2  llen test        #列表長度
3  lpop test        #左邊出去一個數
4  rpop test        #右邊出去一個數
5  lrange test 2 3    #列表下標從0開始計算,顯示第三個數和第四個數
6  lrem test 1 3     #左數刪除1個3
7  lindex test 2     #獲取2的下標
8  ltrim test 0 2     #test取截取(刪除)出來的下標0到2對應的值

 

 

集合(set):sadd linux a b c d e a b #增長linux集合,集合內容爲a b c d e ,不能出現相同數據

1  srem linux d e        #刪除linux集合中的d e元素
2  smembers linux         #查看linux的元素
3  sismember linux d       #查看d是不是集合linux的元素,否
4  sdiff linux centos       #兩個集合取差集,(順序不一樣,結果不一樣)
5  sinter linux centos     #取交集
6  sunion linux centos     #取並集



有序集合(zset):zadd test1 10(值) a(鍵) #增長test1有序集合,分數爲10 等級爲a

1  zrem test1 b              #移除test1的等級b的值
2  zscore test1 a            #查看test1的等級a的值
3  zrange test1 0 1          #查看test1第一個和第二個的值
4  zrangebyscore test1 5 10     #根據分數查看對應的的等級

 


3、redis持久化
1.RDB持久化
  RDB 持久化能夠在指定的時間間隔內生成數據集的時間點快照,將Redis內存中的數據,完整的生成一個快照,以二進制格式文件(後綴RDB)保存在硬盤當中。當須要進行恢復時,再從硬盤加載到內存中。RDB 能夠最大化 Redis 的性能:父進程在保存 RDB 文件時惟一要作的就是 fork 出一個子進程,而後這個子進程就會處理接下來的全部保存工做,父進程無須執行任何磁盤 I/O 操做。RDB 在恢復大數據集時的速度比 AOF 的恢復速度要快。可是一旦發生故障,可能會丟失幾分鐘的數據。

觸發:
1.配置文件:

1 #vim redis.conf    
2     save 900 1         // 900內,有1條寫入,則產生快照
3     save 300 1000      // 若是300秒內有1000次寫入,則產生快照
4     save 60 10000      // 若是60秒內有10000次寫入,則產生快照
5     stop-writes-on-bgsave-error yes   // 後臺備份進程出錯時,主進程停不中止寫入? 主進程不中止 容易形成數據不一致
6     rdbcompression yes   // 導出的rdb文件是否壓縮,若是rdb的大小很大的話建議這麼作
7     Rdbchecksum yes     // 導入rbd恢復時數據時,要不要檢驗rdb的完整性 驗證版本是否是一致 
8     dbfilename dump.rdb   //導出來的rdb文件名
9     dir ./           //rdb的放置路徑

 

2.手動:save(同步)
bgsave(異步)

2.AOF持久化
  AOF 文件有序地保存了對數據庫執行的全部寫入操做, 這些寫入操做以 Redis 協議的格式保存, 所以 AOF 文件的內容很是容易被人讀懂,AOF 文件是一個只進行追加操做的日誌文件


觸發:

1 #vim redis.conf    
2     appendonly no       // 是否打開aof日誌功能,aof跟rdb都打開的狀況下 
3     appendfsync always     // 每1個命令,都當即同步到aof.安全,速度慢
4     appendfsync everysec   // 折衷方案,每秒寫1次
5     appendfsync no       // 寫入工做交給操做系統,由操做系統判斷緩衝區大小,統一寫入到aof. 同步頻率低,速度快,
6     no-appendfsync-on-rewrite yes:    // 正在導出rdb快照的過程當中,要不要中止同步aof
7     auto-aof-rewrite-percentage 100   //aof文件大小比起上次重寫時的大小,增加率100%時,重寫缺點剛開始的時候重複重寫屢次
8     auto-aof-rewrite-min-size 64mb    //aof文件,至少超過64M時,重寫

 


3.測試使用 redis-benchmark -n 10000 ::表示 執行請求10000次

四,單節點集羣

1 1.建立集羣目錄:# mkdir /usr/local/redis-cluster
2 
3         # wget http://download.redis.io/releases/redis-3.0.6.tar.gz
4 2.解壓6次到該目錄:# tar zxvf redis-3.0.6.tar.gz -C /usr/local/redis-cluster
5 3.編譯安裝:# make MALLOC=libc

 

 

1 # cd src && make install

 

 

1 4.修改綁定IP:# sed -i 's/bind 127.0.0.1/bind 192.168.11.199/g' redis.conf

 

 

1 5.修改端口號7001-7006:# sed -i 's/port 6379/port 7001/g' redis-1/redis.conf

 

 

6.開啓後臺啓動模式:

1 # sed -i 's/daemonize no/daemonize yes/g' redis.conf

 

 

 7.複製redis配置文件重命名爲redis-2...6.conf,修改端口號7002-7006

 

8..安裝ruby環境:

1 # yum -y install ruby
2 # yum -y install rubygems

 


9.安裝執行ruby腳本redis-trib.rb執行所依賴的gem包:

# wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
# gem install -l ./redis-3.2.1.gem

 

 

10.編寫腳本啓動全部實例

 1 #!/bin/bash
 2 set -e
 3 redis1=/usr/local/redis-cluster/redis-4.0.6/redis-1.conf
 4 redis2=/usr/local/redis-cluster/redis-4.0.6/redis-2.conf
 5 redis3=/usr/local/redis-cluster/redis-4.0.6/redis-3.conf
 6 redis4=/usr/local/redis-cluster/redis-4.0.6/redis-4.conf
 7 redis5=/usr/local/redis-cluster/redis-4.0.6/redis-5.conf
 8 redis6=/usr/local/redis-cluster/redis-4.0.6/redis-6.conf
 9 
10 echo "start redis-1..."
11 {
12 /usr/local/bin/redis-server $redis1 >/dev/null 2>&1
13 } || {
14 echo "start error"
15 exit 1
16 }
17 
18 
19 echo "start redis-2..."
20 {
21 /usr/local/bin/redis-server $redis2 >/dev/null 2>&1
22 } || {
23 echo "start error"
24 exit 1
25 }
26 
27 echo "start redis-3..."
28 {
29 /usr/local/bin/redis-server $redis3 >/dev/null 2>&1
30 } || {
31 echo "start error"
32 exit 1
33 }
34 
35 echo "start redis-4..."
36 {
37 /usr/local/bin/redis-server $redis4 >/dev/null 2>&1
38 } || {
39 echo "start error"
40 exit 1
41 }
42 
43 echo "start redis-5..."
44 {
45 /usr/local/bin/redis-server $redis5 >/dev/null 2>&1
46 } || {
47 echo "start error"
48 exit 1
49 }
50 
51 echo "start redis-6..."
52 {
53 /usr/local/bin/redis-server $redis6 >/dev/null 2>&1
54 } || {
55 echo "start error"
56 exit 1
57 }

 

10.啓動

 

 

11.複製集羣腳本命令

1 # cp src/redis-trib.rb .

 

 

12.開啓每一個配置文件的集羣功能

1 # sed -i 's/# cluster-enabled yes/cluster-enabled yes/g' redis-2.conf

 

 

 13.建立集羣

1 # cd src
2 # ./redis-trib.rb create --replicas 1 192.168.11.199:7001 192.168.11.199:7002 192.168.11.199:7003 192.168.11.199:7004 192.168.11.199:7005 192.168.11.199:7006

 

 

14.鏈接集羣,自動切換集羣節點

1 # redis-cli -h 192.168.11.199 -p 7001 -c

 

 

15.檢查集羣狀態

1 # ./redis-trib.rb check 192.168.11.199:7001

 

相關文章
相關標籤/搜索