Redis服務之經常使用配置(一)

  上一篇博客聊了下redis的簡介以及redis的yum安裝和源碼編譯安裝須要注意到問題,回顧請參考http://www.javashuo.com/article/p-ckvacwaq-kp.html;今天咱們來對redis的配置文件相關資料和配置的使用和說明;html

  yum安裝的redis默認版本是3.2.12,默認配置文件就是/etc/redis.conf;默認配置文件大概能夠分以下段配置node

[root@node1 ~]# grep "^###" /etc/redis.conf 
################################## INCLUDES ###################################
################################## NETWORK #####################################
################################# GENERAL #####################################
################################ SNAPSHOTTING  ################################
################################# REPLICATION #################################
################################## SECURITY ###################################
################################### LIMITS ####################################
############################## APPEND ONLY MODE ###############################
################################ LUA SCRIPTING  ###############################
################################ REDIS CLUSTER  ###############################
################################## SLOW LOG ###################################
################################ LATENCY MONITOR ##############################
############################# EVENT NOTIFICATION ##############################
############################### ADVANCED CONFIG ###############################
[root@node1 ~]# 

  提示:默認配置文件分了14個配置段,每一個配置段都有相應的指令;mysql

  INCLUDE相關配置指令redis

  提示:不少開源軟件都支持include這個指令,把某個目錄下的文件導入到指定位置作配置文件的方式(最多見的就是把某個目錄下的以點conf結尾的文件導入到當前位置);以上紅框中的內容表示把/usrlocal/reds/conf.d/test.conf文件都導入到此處;這裏須要注意一點redis好像不支持以模式匹配的方式導入多個文件,必須單個導入,除此以外導入的文件必須得存在可訪問;對於include指令放在哪一個位置,須要自行定義,由於include如下的配置文件若是和include指定的文件配置有重複,以include之下的內容爲準;也就說導入配置會覆蓋導入配置以前的配置;sql

  NETWORK相關配置指令數據庫

  bind:該指令用於指定redis監聽的ip地址,默認狀況redis監聽在本機的127.0.0.1這個迴環地址上;centos

  提示:bind支持綁定多個ip地址,綁定多個ip地址,每一個ip地址分別用空格隔開便可;若是想要監聽在本機全部地址,能夠寫成bind 0.0.0.0或者註釋bind指令,可是主註釋bind指令對於開啓了保護模式,雖然監聽在本機全部地址,也可以鏈接redis,可是無法作任何操做;以上配置表示讓redis監聽在本機的127.0.0.1 和192.168.0.41這兩個ip地址上;bash

  驗證:重啓reids看看咱們配置的地址是否處於監聽狀態?socket

  protected-mode:該指令用於指定是否開啓保護模式;所謂保護模式就是若是redis在沒有配置密碼,也沒有配置bind地址,即使監聽在本機的全部地址,遠程客戶端是能夠鏈接到redis,可是無法正常使用;yes表示開啓保護功能;no表示不開啓此功能;tcp

  提示:以上配合表示開啓保護模式,這也就意味着,若是咱們在配置文件中若是沒有配置bind監聽地址和設置密碼,那麼redis是不能被遠程鏈接夠使用的;

  驗證:把redis的bind指令註釋掉,而後重啓服務,使用另外一臺客戶段鏈接192.168.0.41,看看是否能夠用?

  提示:註釋掉bind指令,重啓redis後,默認後監聽在本機全部地址上;

  測試:本機是否可鏈接使用redis?

  提示:本機上能夠正常鏈接和使用redis

  非本機客戶端是否能夠鏈接使用呢?

  提示:能夠看到用非本機客戶端是能夠正常鏈接到redis,可是沒有辦法執行命令,它告訴咱們redis開啓了保護模式,解決上面的報錯,能夠把保護模式關閉了(關閉保護模式可使用CONFIG SET protected-mode no 這種就是在終端直接使用命令關閉(非當前終端,可使用本機鏈接的終端上使用);第二中方式就是在配置文件中把protected-mode 配置成no,而後重啓redis;第三種是停掉當前redis,啓動時加上--protected-mode no選項啓動;),其次就是給redis設置一個密碼或者啓動bind指令監聽一個可用地址便可;

  測試:在本機上使用鏈接redis-server的方式在終端命令行中使用CONFIG SET protected-mode no命令關閉保護模式

  提示:能夠看到在本機鏈接終端上執行CONFIG SET protected-mode no 命令後,在非本機鏈接的客戶端終端就能夠操做red

  port:該指令用於指定redis TCP套接字監聽端口,默認是6379;若是使用0 表示不監聽tcp套接字

  提示:以上配置表示redis使用TCP套接字的6380端口對外提供服務;

  驗證:重啓redis服務,看看對應6380端口是否處於監聽狀態,redis-cli 是否能夠鏈接6380使用redis?

  提示:重啓服務6380端口正常監聽,用redis-cli也是能夠正常鏈接訪問redis;這裏須要注意用-p指定端口須要有空格;

  tcp-backlog:該指令用於指定TCP三次握手的時候 server 端收到 client ack 確認號以後的隊列值默認是511;一般會這個選項不須要咱們去額外的更改,用默認的511是能夠的;

  unixsocket:該指令用於指定本地使用unix socket 方式鏈接時監聽的UNIX SOCKET文件路徑;

  unixsocketperm:該指令用於指定UNIX SOCKET文件的權限;

  示例:啓用UNIX SOCKET

  驗證:重啓redis服務,而後使用unix socket方式鏈接本機redis

  提示:redis-cli命令 -s選項用於指定socket文件路徑;從上面的測試能夠看到,重啓redis後,在對應目錄下就生成了在配置文件中咱們指定的名稱的sock文件;用redis-cli客戶端軟件使用/tmp/redis.sock文件鏈接redis也是能夠正常操做redis;

  timeout:該指令用於指定客戶端和 Redis 服務端的鏈接超時時間,默認是 0,表示永不超時。

  tcp-keepalive:該指令用於指定tcp鏈接的會話保持時間,默認配置是300秒。

  GENERAL相關配置指令

  daemonize:該指令用於指定是否讓redis運行爲後臺守護進程運行,默認是no;若是你想讓它在後臺運行,你就把它改爲yes,當 redis 做爲守護進程運行的時候,它會寫一個 pid 到 /var/run/redis.pid 文件裏面;

  示例:配置redis運行爲後臺守護進程

  驗證:重啓redis,看看是否可以運行爲後臺守護進程?

  提示:能夠看到咱們不用systemctl 去運行redis也可讓redis運行爲後臺,而且使用redis-cli工具也能夠正常鏈接redis對它進行操做;

  supervised:該指令用於指定redis操做系統相關參數,默認是no;能夠設置經過 upstart 和 systemd 管理 Redis 守護進程,centos 7之後都使用 systemd;

  pidfile:該指令用於指定redis pid文件;默認是/var/run/redis_6379.pid;

 

  提示:我這邊測試不論是編譯仍是yum安裝,它默認可以啓動起來,可是在/var/run/目錄下就找不到對應redis的pid文件;後續看了下目錄的權限,發現用root啓動redis在對應目錄下就能建立pid文件,普通用戶就不行;

  驗證:啓動reids,在/var/run/目錄下看看是否有redis_6379.pid文件?

  提示:能夠看到redis啓動了,可是沒有找到pid文件;大概是權限的問題吧;

  驗證:把/var/run/目錄添加一個redis用戶能夠寫的權限,而後重啓redis,看看對應目錄下是否可生成pid文件?

  提示:能夠看到,當咱們給對應目錄增長了acl權限之後,重啓redis,pid文件就生成了;對於這種,建議仍是單獨創建一個目錄,把權限都給redis用戶,而後配置pidfile 指向新建的目錄;

  loglevel:該指令用於指定redis日誌的級別,默認是notice級別;

  logfile:該指令用於指定redis日誌文件路徑;默認是/var/log/redis/redis.log;

  syslog-enabled:該指令用於指定是否啓用syslog記錄redis日誌;默認是no,不啓用;

  syslog-ident:該指令用於指定syslog的標識,默認是redis

  syslog-facility:該指令用於指定使用syslog的那個設施來記錄redis日誌;默認是local0

  示例:開啓rsyslog記錄redis日誌

  提示:以上配置是在redis上開啓了讓rsyslog記錄日誌,把redis的日誌發送到local0這個設施上;

  在rsyslog中定義local0把日誌記錄到某個文件中

  提示:以上配置是表示把local0這個設施上的任何級別日誌都記錄到/tmp/test.log中;

  驗證:重啓rsyslog和redis 看看/tmp/test.log中是否記錄redis的日誌?

  提示:能夠看到重啓了rsyslog和redis後在/tmp/test.log中就記錄了redis的啓動日誌信息;

  提示:其實默認狀況redis rsyslog會把系統上的info級別以上的日誌都記錄到/var/log/messages這個文件中,因此咱們啓動redis能夠在/var/log/messages這個文件中看到redis的日誌,也能夠在/var/log/redis/redis.log中看到redis的日誌;一般狀況不建議讓redis的日誌寫多份,建議仍是用logfile指定日誌文件,而後不啓用rsyslog;

  databases:該指令用於指定redis的數據庫數量;默認人庫是0;就是說這個指令指定的值能夠限定redis最大能有多少個數據庫,默認狀況redis最大支持16個庫;固然若是16個庫少了,咱們能夠經過調整databases的值,來調大支持的數據庫數量;

  示例:默認不更改databases的值,鏈接數據庫,用select命令看看最大可以切換到那個庫?

  提示:redis裏的數據庫都是以數字命名的,不像mysql裏的能夠用字符串命名;select命令是用於切換數據庫,相似mysql裏的use命令;從上面的信息能夠看到,咱們在配置文件中指定databases爲16,客戶端鏈接redis最大也只能切換到15號庫,這是由於redis數據庫是從0號庫開始的;

相關文章
相關標籤/搜索