redis 配置及編寫啟動腳本


#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
source /etc/init.d/functions
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
 
PIDFILE=/ var /run/redis_${REDISPORT}.pid
CONF= "/usr/local/redis/etc/redis.conf"
AUTH= "123456"
BIND_IP= '0.0.0.0'
 
start(){
     
     if  [ -f $PIDFILE ]
     then
         echo  "$PIDFILE exists, process is already running or crashed"
     else
         echo  "Starting Redis server..."
         $EXEC $CONF
     fi
     if  "$?" = "0"  ]  
     then  
         echo  "Redis is running..." 
     fi  
 
 
}
 
stop(){
 
     if  [ ! -f $PIDFILE ]
     then
         echo  "$PIDFILE does not exist, process is not running"
     else
         PID=$(cat $PIDFILE)
         echo  "Stopping ..."
         $CLIEXEC -h $BIND_IP -a $AUTH -p $REDISPORT  SHUTDOWN 
         sleep 1
         while  [ -x /proc/${PID} ]
         do
             echo  "Waiting for Redis to shutdown ..."
             sleep 1
         done
             echo  "Redis stopped"
     fi
}
 
restart(){
     stop
     start
 
}
status(){
 
     ps -ef|grep redis-server|grep -v grep >/dev/ null  2>&1
 
     if  [ $? -eq 0 ];then
 
         echo  "redis server is running"
 
     else
         echo  "redis server is stopped"
 
     fi
     
 
}
 
 
case  "$1"  in
     start)
         start
         ;;
     stop)
         stop
         ;;
         
     restart)
         restart
         ;;
         
     status)
         status
         ;;     
     *)
     
      echo  "Usage: /etc/init.d/redis {start|stop|status|start}"  >&2 
      exit 1 
esac

redis安裝

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
安裝redis  折疊源碼
yum -y install pcre*
yum -y install gcc*
cd /tmp
wget http: //download.redis.io/releases/redis-3.2.4.tar.gz
tar xf redis-3.2.4.tar.gz -C /usr/local
cd /usr/local/redis-3.2.4
make
make install
  
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
mkdir -p /data/redis
  
mv /usr/local/redis-3.2.4/redis.conf /usr/local/redis/etc
   
cd /usr/local/redis-3.2.4/src/
mv mkreleasehdr.sh /usr/local/redis/bin
mv redis-benchmark /usr/local/redis/bin
mv redis-check-rdb /usr/local/redis/bin/
mv redis-sentinel /usr/local/redis/bin/
mv redis-server /usr/local/redis/bin/
mv redis-cli /usr/local/redis/bin/
cd /usr/local/redis/etc/

redis配置

1
2
3
4
5
6
7
8
9
vi /usr/local/redis/etc/redis.conf
daemonize yes     //將redis服務設成守護進程
requirepass 123456     //設置認證密碼
bind 內網IP 
pidfile / var /run/redis_9597.pid
logfile / var /log/redis.log
dir /data/redis
appendonly yes
port 9597<br>

redis詳細配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
redis.conf 配置項說明如下:
 
1. Redis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程
 
     daemonize no
 
2. 當Redis以守護進程方式運行時,Redis默認會把pid寫入/ var /run/redis.pid文件,可以通過pidfile指定
 
     pidfile / var /run/redis.pid
 
3. 指定Redis監聽端口,默認端口為6379,作者在自己的一篇博文中解釋了為什么選用6379作為默認端口,因為6379在手機按鍵上MERZ對應的號碼,而MERZ取自意大利歌女Alessia Merz的名字
 
     port 6379
 
4. 綁定的主機地址
 
     bind 127.0.0.1
 
5.當 客戶端閑置多長時間后關閉連接,如果指定為0,表示關閉該功能
 
     timeout 300
 
6. 指定日志記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning,默認為verbose
 
     loglevel verbose
 
7. 日志記錄方式,默認為標准輸出,如果配置Redis為守護進程方式運行,而這里又配置為日志記錄方式為標准輸出,則日志將會發送給/dev/ null
 
     logfile stdout
 
8. 設置數據庫的數量,默認數據庫為0,可以使用SELECT <dbid>命令在連接上指定數據庫id
 
     databases 16
 
9. 指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合
 
     save <seconds> <changes>
 
     Redis默認配置文件中提供了三個條件:
 
     save 900 1
 
     save 300 10
 
     save 60 10000
 
     分別表示900秒(15分鍾)內有1個更改,300秒(5分鍾)內有10個更改以及60秒內有10000個更改。
 
  
 
10. 指定存儲至本地數據庫時是否壓縮數據,默認為yes,Redis采用LZF壓縮,如果為了節省CPU時間,可以關閉該選項,但會導致數據庫文件變的巨大
 
     rdbcompression yes
 
11. 指定本地數據庫文件名,默認值為dump.rdb
 
     dbfilename dump.rdb
 
12. 指定本地數據庫存放目錄
 
     dir ./
 
13. 設置當本機為slav服務時,設置master服務的IP地址及端口,在Redis啟動時,它會自動從master進行數據同步
 
     slaveof <masterip> <masterport>
 
14. 當master服務設置了密碼保護時,slav服務連接master的密碼
 
     masterauth <master-password>
 
15. 設置Redis連接密碼,如果配置了連接密碼,客戶端在連接Redis時需要通過AUTH <password>命令提供密碼,默認關閉
 
     requirepass foobared
 
16. 設置同一時間最大客戶端連接數,默認無限制,Redis可以同時打開的客戶端連接數為Redis進程可以打開的最大文件描述符數,如果設置 maxclients 0,表示不作限制。當客戶端連接數到達限制時,Redis會關閉新的連接並向客戶端返回max number of clients reached錯誤信息
 
     maxclients 128
 
17. 指定Redis最大內存限制,Redis在啟動時會把數據加載到內存中,達到最大內存后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理 后,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放內存,Value會存放在swap區
 
     maxmemory <bytes>
 
18. 指定是否在每次更新操作后進行日志記錄,Redis在默認情況下是異步的把數據寫入磁盤,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為 redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在於內存中。默認為no
 
     appendonly no
 
19. 指定更新日志文件名,默認為appendonly.aof
 
      appendfilename appendonly.aof
 
20. 指定更新日志條件,共有3個可選值:
     no:表示等操作系統進行數據緩存同步到磁盤(快)
     always:表示每次更新操作后手動調用fsync()將數據寫到磁盤(慢,安全)
     everysec:表示每秒同步一次(折衷,默認值)
 
     appendfsync everysec
 
  
 
21. 指定是否啟用虛擬內存機制,默認值為no,簡單的介紹一下,VM機制將數據分頁存放,由Redis將訪問量較少的頁即冷數據swap到磁盤上,訪問多的頁面由磁盤自動換出到內存中(在后面的文章我會仔細分析Redis的VM機制)
 
      vm-enabled no
 
22. 虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享
 
      vm-swap-file /tmp/redis.swap
 
23. 將所有大於vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的(Redis的索引數據 就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在於磁盤。默認值為0
 
      vm-max-memory 0
 
24. Redis swap文件分成了很多的page,一個對象可以保存在多個page上面,但一個page上不能被多個對象共享,vm-page-size是要根據存儲的 數據大小來設定的,作者建議如果存儲很多小對象,page大小最好設置為32或者64bytes;如果存儲很大大對象,則可以使用更大的page,如果不 確定,就使用默認值
 
      vm-page-size 32
 
25. 設置swap文件中的page數量,由於頁表(一種表示頁面空閑或使用的bitmap)是在放在內存中的,,在磁盤上每8個pages將消耗1byte的內存。
 
      vm-pages 134217728
 
26. 設置訪問swap文件的線程數,最好不要超過機器的核數,如果設置為0,那么所有對swap文件的操作都是串行的,可能會造成比較長時間的延遲。默認值為4
 
      vm-max-threads 4
 
27. 設置在向客戶端應答時,是否把較小的包合並為一個包發送,默認為開啟
 
     glueoutputbuf yes
 
28. 指定在超過一定的數量或者最大的元素超過某一臨界值時,采用一種特殊的哈希算法
 
     hash-max-zipmap-entries 64
 
     hash-max-zipmap-value 512
 
29. 指定是否激活重置哈希,默認為開啟(后面在介紹Redis的哈希算法時具體介紹)
 
     activerehashing yes
 
30. 指定包含其它的配置文件,可以在同一主機上多個Redis實例之間使用同一份配置文件,而同時各個實例又擁有自己的特定配置文件
 
     include /path/to/local.conf

  

  

  

redis.conf 配置項說明如下:

1. Redis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程

    daemonize no

2. 當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定

    pidfile /var/run/redis.pid

3. 指定Redis監聽端口,默認端口為6379,作者在自己的一篇博文中解釋了為什么選用6379作為默認端口,因為6379在手機按鍵上MERZ對應的號碼,而MERZ取自意大利歌女Alessia Merz的名字

    port 6379

4. 綁定的主機地址

    bind 127.0.0.1

5.當 客戶端閑置多長時間后關閉連接,如果指定為0,表示關閉該功能

    timeout 300

6. 指定日志記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning,默認為verbose

    loglevel verbose

7. 日志記錄方式,默認為標准輸出,如果配置Redis為守護進程方式運行,而這里又配置為日志記錄方式為標准輸出,則日志將會發送給/dev/null

    logfile stdout

8. 設置數據庫的數量,默認數據庫為0,可以使用SELECT <dbid>命令在連接上指定數據庫id

    databases 16

9. 指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合

    save <seconds> <changes>

    Redis默認配置文件中提供了三個條件:

    save 900 1

    save 300 10

    save 60 10000

    分別表示900秒(15分鍾)內有1個更改,300秒(5分鍾)內有10個更改以及60秒內有10000個更改。

 

10. 指定存儲至本地數據庫時是否壓縮數據,默認為yes,Redis采用LZF壓縮,如果為了節省CPU時間,可以關閉該選項,但會導致數據庫文件變的巨大

    rdbcompression yes

11. 指定本地數據庫文件名,默認值為dump.rdb

    dbfilename dump.rdb

12. 指定本地數據庫存放目錄

    dir ./

13. 設置當本機為slav服務時,設置master服務的IP地址及端口,在Redis啟動時,它會自動從master進行數據同步

    slaveof <masterip> <masterport>

14. 當master服務設置了密碼保護時,slav服務連接master的密碼

    masterauth <master-password>

15. 設置Redis連接密碼,如果配置了連接密碼,客戶端在連接Redis時需要通過AUTH <password>命令提供密碼,默認關閉

    requirepass foobared

16. 設置同一時間最大客戶端連接數,默認無限制,Redis可以同時打開的客戶端連接數為Redis進程可以打開的最大文件描述符數,如果設置 maxclients 0,表示不作限制。當客戶端連接數到達限制時,Redis會關閉新的連接並向客戶端返回max number of clients reached錯誤信息

    maxclients 128

17. 指定Redis最大內存限制,Redis在啟動時會把數據加載到內存中,達到最大內存后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理 后,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放內存,Value會存放在swap區

    maxmemory <bytes>

18. 指定是否在每次更新操作后進行日志記錄,Redis在默認情況下是異步的把數據寫入磁盤,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為 redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在於內存中。默認為no

    appendonly no

19. 指定更新日志文件名,默認為appendonly.aof

     appendfilename appendonly.aof

20. 指定更新日志條件,共有3個可選值: 
    no:表示等操作系統進行數據緩存同步到磁盤(快) 
    always:表示每次更新操作后手動調用fsync()將數據寫到磁盤(慢,安全) 
    everysec:表示每秒同步一次(折衷,默認值)

    appendfsync everysec

 

21. 指定是否啟用虛擬內存機制,默認值為no,簡單的介紹一下,VM機制將數據分頁存放,由Redis將訪問量較少的頁即冷數據swap到磁盤上,訪問多的頁面由磁盤自動換出到內存中(在后面的文章我會仔細分析Redis的VM機制)

     vm-enabled no

22. 虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享

     vm-swap-file /tmp/redis.swap

23. 將所有大於vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的(Redis的索引數據 就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在於磁盤。默認值為0

     vm-max-memory 0

24. Redis swap文件分成了很多的page,一個對象可以保存在多個page上面,但一個page上不能被多個對象共享,vm-page-size是要根據存儲的 數據大小來設定的,作者建議如果存儲很多小對象,page大小最好設置為32或者64bytes;如果存儲很大大對象,則可以使用更大的page,如果不 確定,就使用默認值

     vm-page-size 32

25. 設置swap文件中的page數量,由於頁表(一種表示頁面空閑或使用的bitmap)是在放在內存中的,,在磁盤上每8個pages將消耗1byte的內存。

     vm-pages 134217728

26. 設置訪問swap文件的線程數,最好不要超過機器的核數,如果設置為0,那么所有對swap文件的操作都是串行的,可能會造成比較長時間的延遲。默認值為4

     vm-max-threads 4

27. 設置在向客戶端應答時,是否把較小的包合並為一個包發送,默認為開啟

    glueoutputbuf yes

28. 指定在超過一定的數量或者最大的元素超過某一臨界值時,采用一種特殊的哈希算法

    hash-max-zipmap-entries 64

    hash-max-zipmap-value 512

29. 指定是否激活重置哈希,默認為開啟(后面在介紹Redis的哈希算法時具體介紹)

    activerehashing yes

30. 指定包含其它的配置文件,可以在同一主機上多個Redis實例之間使用同一份配置文件,而同時各個實例又擁有自己的特定配置文件

    include /path/to/local.conf

資源來源於該博客:https://www.cnblogs.com/uglyliu/p/8052648.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM