1. 程式人生 > >redis 伺服器搭建安裝

redis 伺服器搭建安裝

前言
在網際網路的浪潮下,nosql資料庫在實際專案中運用非常廣泛,很多企業專案都有使用,所以nosql資料庫是我們(軟體開發人員)必須掌握的硬技巧,這篇文章只是簡單介紹redis安裝與部署以及基本配置。

redis伺服器安裝
下載redis安裝檔案,地址:http://download.redis.io/releases/redis-2.8.12.tar.gz
解壓檔案:tar xzf redis-2.8.12.tar.gz
進入解壓redis目錄中,安裝redis,make install
出現如下圖4-1錯誤 請執行Make install CFLAGS=”-march=i686”,圖4-2標示安裝成功。 

圖 4-1


圖4-2


啟動redis伺服器src下面執行redis-server
redis 服務註冊
複製redis init指令碼到/etc/rc.d/init.d目錄必須將其複製到/etc/rc.d/init.d的目錄下,同時易名為redis: 
cp /usr/software/redis/ redis-2.8.12/utils/redis_init_script /etc/rc.d/init.d/redis
將redis配置檔案拷貝到/etc/redis/目錄下:mkdir /etc/redis cp /usr/software/redis/ redis-2.8.12 /redis.conf /etc/redis/6379.conf
redis服務指令碼需要指定的CONF就存在了。預設情況下,Redis未啟用認證,可以通過開啟6379.conf的requirepass 指定一個驗證密碼。
修改redis服務指令碼 vi /etc/rc.d/init.d/redis 
REDISPORT=6379 //監聽埠 
EXEC=/usr/software/redis/ redis-2.8.12/src/redis-server //redis安裝目錄伺服器地址 
CLIEXEC=/usr/software/redis/ redis-2.8.12/src/redis-cli //redis 安裝目錄客戶端地址 
PIDFILE=/var/run/redis.pid 
CONF=”/etc/redis/6379.conf” //指定conf檔案路徑
啟動redis服務 service redis start 停止redis服務 service redis stop
redis 中redis.conf詳細配置
具體配置請參照及用法請參照地址:http://www.yiibai.com/redis/redis_configuration.html

1.基本配置
記憶體單位的表示 
1k => 1000 bytes 
1kb => 1024 bytes 
1m => 1000000 bytes 
1mb => 1024*1024 bytes 
1g => 1000000000 bytes 
1gb => 1024*1024*1024 bytes 
單位中不區分大小寫1GB 1Gb 1gB是一樣的 
後臺執行,yes是後臺執行,no前臺執行,將輸出,輸出到終端(預設) 
daemonize yes 
如果daemonize引數為yes的話就會產生pid檔案,一下是pid檔案的定義 
pidfile /us/local/redis-master/run/redis.pid 
監聽的埠 
port 6379 
繫結監聽的IP地址 
bind 127.0.0.1 //0.0.0.0表示監聽所以ip地址 
如果在本地呼叫redis可以直接用sock檔案 
unixsocket /tmp/redis.sock //sock檔案的位置 
unixsocketperm 755 //sock檔案的許可權 
如果一個連結在N秒內是空閒的,就將其關閉 
timeout 0 
如果對方down了或者中間網路斷了傳送ACK到客戶端在指定的時間內沒有收到對方的迴應就斷開TCP連結(時間單位秒記),此引數會受到核心引數的影響,推薦配置60。 
tcp-keepalive 0 
指定輸出訊息的級別 
debug (除錯級別,詳細資訊,資訊量大) 
verbose (詳細資訊,資訊量較大) 
notice (通知,生產環境推薦) 
warning (錯誤資訊警告資訊) 
loglevel notice 
日誌輸出檔案,預設在前端執行的時候此key的預設值是stdout輸出到終端,如果用守護程序執行此key的stdout的時候將日誌輸入到/dev/null,如果想記錄日誌,就必須為其指定logfile位置 
logfile /var/log/redis.log 
將日誌記錄的哦syslog 
syslog-enabled no 
指定syslog的身份 
syslog-ident redis 
指定syslog的級別,必須是LOCAL0-LOCAL7之間 
syslog-facility local0 
設定資料庫的數量 
databases 16 
設定資料庫的數量。預設資料庫DB 0,你可以選擇一個不同的per-connection的使用SELECT這兒的DBID是一個介於0和’databases’-1 
databases 16

2.快照配置
將DB儲存到磁碟的規則定義(快照) 
格式:save 
例子:save 900 1 //在900秒(15分鐘)內如果至少有1個鍵值發生變化 就儲存 
save 300 10 //在300秒(6分鐘)內如果至少有10個鍵值發生變化 就儲存 
save 900 1 //每一條表示一個存檔點 
save 300 10 
save 60 10000 
如果啟用如上的快照(RDB),在一個存檔點之後,可能磁碟會壞掉或者許可權問題,redis將依然能正常工作 
stop-writes-on-bgsave-error yes 
是否將字串用LZF壓縮到.rdb 資料庫中,如果想節省CPU資源可以將其設定成no,但是字串儲存在磁碟上佔用空間會很大,預設是yes 
rdbcompression yes 
rdb檔案的校驗,如果校驗將避免檔案格式壞掉,如果不校驗將在每次操作檔案時要付出校驗過程的資源新能,將此引數設定為no,將跳過校驗 
rdbchecksum yes 
轉儲資料的檔名 
dbfilename dump.rdb 
redis的工作目錄,它會將轉儲檔案儲存到這個目錄下,並生成一個附加檔案 
dir /usr/local/redis-master/db

3.主從引數
如果本地是salve伺服器那麼配置該項 
slaveof 
slaveof 127.0.0.1 65532 
master的驗證密碼 
masterauth 
當從主機脫離主的連結時,如果此值為yes當客戶端查詢從時,迴響應客戶端,如果是第一次同步回返回一個日期資料或這空值,如果設定為no,則返回“SYNC with master in progress”到INFO and SLAVEOF 
slave-serve-stale-data yes 
從伺服器只讀(預設) 
slave-read-only yes 
從傳送ping到主的時間間隔(單位:秒) 
repl-ping-slave-period 10 
批量傳輸I / O超時和主資料或ping響應超時 預設60s 必須大於repl-ping-slave-period值 
repl-timeout 60 
此選項如果是“yes”那麼Redis的使用數量較少的TCP資料包和更少的頻寬將資料傳送到,在從主機上延遲40毫秒(linux kernel中的40毫秒)出現。如果是no將在slave中減少延遲,但是流量使用回相對多一些,如果用多個從主機,此處建議設定成yes 
repl-disable-tcp-nodelay no 
從主機的優先順序,如果當主主機掛了的時候,將從從主機中選取一個作為其他從機的主,首先優先順序的數字最低的將成為主,0是一個特殊的級別,0將永遠不會成為主。預設值是100. 
slave-priority 100

4.安全配置
密碼本機,如果別人要求連結需要其驗證 
requirepass password 
命令重新命名,如果更改命令可能在從伺服器上出現問題 
例如:rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 //將config命令命名成b840fc02d524045429941cc15f59e41cb7be6c52 
rename-command CONFIG “” //預設是空的

5.極限
客戶端連結的最大數量 
maxclients 10000 
最大記憶體的使用 如果是主從的話,此值應該設定更低 
maxmemory 
redias達到maxmemory時,如何刪除k&y 
volatile-lru -> 用lru演算法刪除過期的鍵值 
allkeys-lru -> 用lru演算法刪除所有鍵值 
volatile-random -> 隨機刪除過期的鍵值 
allkeys-random -> 隨機刪除任何鍵值 
volatile-ttl -> 刪除最近要到期的鍵值(監控TTL) 
noeviction -> 不會寫操作,返回一個錯誤 
At the date of writing this commands are: set setnx setex append incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby getset mset msetnx exec sort 
預設值例子如下: 
maxmemory-policy volatile-lru 
LRU和最小的TTL演算法是不準確,在幾個中挑幾個來檢查近期用的最少的鍵值刪除,為了節約記憶體可以設定小點。 
maxmemory-samples 3

6.append only
啟用AOF和RDB永續性,如果又一個或者多個寫入點時,在寫入點和寫入點之間的時間裡所有add的鍵值回丟失,如果啟用此特性,redis會將add的值先寫入到附加檔案中,此引數預設就是啟用這個特性。 
appendonly no 
OAF檔案的檔名 
appendfilename appendonly.aof 
append only檔名是由 appendfilename appendonly.aof項來定義的,redias將資料立刻些如到AOF檔案中時,有三種方式: 
no: 讓OS來重新整理資料 快 
always:每次寫入後呼叫函式FSYNC進行寫入 最安全的 
everysec: 每一秒進行呼叫FSYNC進行寫入 
預設值:appendfsync everysec 
如果磁碟效能問題比較慢,將其設定為yes,磁碟I/O比較寬裕則設定為no資料比較安全。 
no-appendfsync-on-rewrite no 
OAF檔案的寫規則 
如下:如果達到64M的百分之百就停止寫入 
auto-aof-rewrite-percentage 100 
auto-aof-rewrite-min-size 64mb

7.LUA SCRIPTING
執行一個LUA指令碼時的最大時間,防止死迴圈等等,設定為0是沒有限制,單位為秒 
lua-time-limit 5000

8.redias的慢查詢記錄
如果大於如下值的執行命令進行記錄,預設是10000,單位是微妙(1000000微秒 == 1秒),設定為一個負數時,警用此記錄,設定為0時,記錄任何執行命令 
slowlog-log-slower-than 10000 
此值的大小會影響記憶體的大小,回收記憶體可以用SLOWLOGRESET 
slowlog-max-len 128

9.高階配置
Hash編碼使用高速記憶體資料結構的條目閾值 
如果redisObject的type 成員值是 REDIS_LIST 型別的,則當該list 的 elem數小於配置值: hash-max-ziplist-entries 或者elem_value字串的長度小於 hash-max-ziplist-value, 則可以編碼成 REDIS_ENCODING_ZIPLIST 型別儲存,以節約記憶體. 否則採用 Dict 來儲存. 
hash-max-ziplist-entries 512 
hash-max-ziplist-value 64 
相同雜湊值的列表可以用特殊的表示方式儲存,以節約空間,閾值設定如下 
如 type 是 REDIS_LIST 型別的,如果其 entry 小於配置值: list-max-ziplist-entries 或 value字串的長度小於 list-max-ziplist-value,則可以編碼成 REDIS_ENCODING_ZIPLIST 型別儲存,以節約記憶體; 否則採用 REDIS_ENCODING_LINKEDLIST 來儲存 
list-max-ziplist-entries 512 
list-max-ziplist-value 64 
如 type 是 REDIS_SET 型別的,如果其值可以表示成數字型別且 entry 小於配置值set-max-intset-entries, 則可以編碼成 REDIS_ENCODING_INTSET 型別儲存,以節約記憶體; 否則採用 Dict型別來儲存 
set-max-intset-entries 512 
相同的hash列表中,排序列表的元素和長度都不能高於如下值 
zset-max-ziplist-entries 128 
zset-max-ziplist-value 64 
重建hash表的時候如果記憶體不足 如果此值設定為no則延時,如果為yes則儘快釋放記憶體。 
activerehashing yes 
客戶端buffer限制,如果達到硬限制則立刻斷開 
三種客戶端 
normal -> 正常客戶端 
slave -> 從客戶端或者監控客戶端 
pubsub -> 訂閱或者釋出客戶端 
客戶端限制的語法如下 
client-output-buffer-limit 
預設如下 
client-output-buffer-limit normal 0 0 0 
client-output-buffer-limit slave 256mb 64mb 60 //slave客戶端 buffer硬限制為256M,軟限制為64MB/60秒 就斷開連線 
client-output-buffer-limit pubsub 32mb 8mb 60 
一個任務可以使用的cpu數目 
hz 10

10.配置檔案include
例子: 
include /path/to/local.conf 
include /path/to/other.conf

redisClient訪問
如出現refund connection時,請檢查redis.conf配置檔案中port以及bind配置是否正確。如不需要監聽ip地址bind配置為:0.0.0.0.。
配置沒有問題請檢查防火牆埠是否開啟:netstat –ntlp檢視所有埠 netstat –ntlp|grep 6379 檢視指定埠狀態。
如果是測試環境可以關閉防火牆,service iptables stop。
--------------------- 
作者:wali_hu 
來源:CSDN 
原文:https://blog.csdn.net/relax_hb/article/details/74780132 
版權宣告:本文為博主原創文章,轉載請附上博文連結!