Redis安裝與配置 一點課堂(多岸學院)

Redis安裝與配置

Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker.It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries.node

Redis做爲現在比較火熱的NoSQL數據庫,在數據的熱數據存儲和查詢方面有着不錯的應用,這篇文章將介紹Redis的安裝和配置信息。redis

下載、安裝Redis

  1. Redis 官方下載算法

    wget http://download.redis.io/releases/redis-3.0.7.tar.gz數據庫

  2. 解壓vim

    tar xzf redis-3.0.7.tar.gz緩存

  3. 賦予權限安全

    udo chmod -R 775 redis-3.0.7/服務器

  4. make網絡

    cd redis-3.0.7/ make數據結構

  5. install tcl

    sudo apt-get install tcl

  6. make test

    make test

  7. make install

    make PREFIX=/home/server/software/redisInstall install

配置與啓動

  1. 進入目錄

    cd /home/server/software/redisInstall/bin

  2. 文件介紹

<table style="align:center;text-align:center"> <tr> <td>文件名</td> <td>介紹</td> </tr> <tr> <td>redis-benchmark</td> <td>redis性能測試工具</td> </tr> <tr> <td>redis-check-aof</td> <td>aof日誌檢查工具</td> </tr> <tr> <td>redis-check-dump rdb</td> <td>日誌檢查工具</td> </tr> <tr> <td>redis-cli</td> <td>redis客戶端鏈接</td> </tr> <tr> <td>redis-server</td> <td>redis服務進程</td> </tr> </table>

  1. 複製配置文件

    cp ../../redis-3.0.7/redis.conf ../

  2. 啓動redis服務

    cd .. ./bin/redis-server ./redis.conf

26049:M 24 Mar 16:59:56.768 # You requested maxclients of 10000 requiring at
least 10032 max file descriptors.
26049:M 24 Mar 16:59:56.768 # Redis can't set maximum open files to 10032
because of OS error: Operation not permitted.
26049:M 24 Mar 16:59:56.768 # Current maximum open files is 4096. maxclients
has been reduced to 4064 to compensate for low ulimit. If you need higher
maxclients increase 'ulimit -n'.
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 26049
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'

  1. 開啓後臺進程配置

    vim redis.conf

    修改以下字段,重啓server

    daemonize yes

  2. 客戶端測試鏈接

    ./bin/redis-cli

    set test "This is a redis test" get test

redis.conf 配置詳解

######################### 通用 #########################

# 啓動後臺進程
daemonize yes

# 後臺進程的pid文件存儲位置
pidfile /var/run/redis.pid

# 默認監聽端口
port 6379

# 在高併發的環境中,爲避免慢客戶端的鏈接問題,須要設置一個高速後臺日誌
tcp-backlog 511

# 只接受如下綁定的IP請求
# Examples:
# bind 192.168.1.100 10.0.0.1
bind 127.0.0.1

# 設置unix監聽,默認爲空
# unixsocket /tmp/redis.sock
# unixsocketperm 700

#客戶端空閒多長時間,關閉連接,0表示不關閉
timeout 0

# TCP keepalive.
# 若是是非零值,當失去連接時,會使用SO_KEEPALIVE發送TCP ACKs 到客戶端。
# 這個參數有兩個做用:
# 1.檢測斷點。
# 2.從網絡中間設備來看,就是保持連接
# 在Linux上,設定的時間就是發送ACKs的週期。
# 注意:達到雙倍的設定時間纔會關閉連接。在其餘內核上,週期依賴於內核設置。
# 一個比較合理的值爲60s
tcp-keepalive 0

# 指定日誌級別,如下記錄信息依次遞減
# debug用於開發/測試
# verbose沒debug那麼詳細
# notice適用於生產線
# warning只記錄很是重要的信息
loglevel notice

#日誌文件名稱,若是爲stdout則輸出到標準輸出端,若是是之後臺進程運行則不產生日誌
logfile ""

# 要想啓用系統日誌記錄器,設置一下選項爲yes
# syslog-enabled no

# 指明syslog身份
# syslog-ident redis

# 指明syslog設備。必須是一個用戶或者是local0 ~ local7之一
# syslog-facility local0

#設置數據庫數目,第一個數據庫編號爲:0
databases 16

######################### 快照 #########################

# 在什麼條件下保存數據庫到磁盤,條件能夠有不少個,知足任何一個條件都會進行快照存儲
# 在900秒以內有一次key的變化
save 900 1
# 在300秒以內,有10個key的變化
save 300 10
# 在60秒以內有10000個key變化
save 60 10000

# 當持久化失敗的時候,是否繼續提供服務
stop-writes-on-bgsave-error yes

# 當寫入磁盤時,是否使用LZF算法壓縮數據,默認爲yes
rdbcompression yes

# 是否添加CRC64校驗到每一個文件末尾--花費時間保證安全
rdbchecksum yes

# 磁盤上數據庫的保存名稱
dbfilename dump.rdb

# Redis工做目錄,以上數據庫保存文件和AOF日誌都會寫入此目錄
dir ./

######################### 主從同步 #########################

# 主從複製,當本機是slave時配置
# slaveof <masterip> <masterport>

# 當主機須要密碼驗證時候配置
# masterauth <master-password>

# 當slave和master丟失連接,或正處於同步過程當中。是否響應客戶端請求
# 設置爲yes表示響應
# 設置爲no,直接返回"SYNC with master in progress"(正在和主服務器同步中)
slave-serve-stale-data yes

# 設置slave是否爲只讀。
# 注意:即便slave設置爲只讀,也不能令其暴露在不受信任的網絡環境中
slave-read-only yes

# 無硬盤複製功能
repl-diskless-sync no

# 等待多個slave一塊兒來請求之間的間隔時間
repl-diskless-sync-delay 5

# 設置slave給master發送ping的時間間隔
# repl-ping-slave-period 10

# 設置數據傳輸I/O,主機數據、ping響應超時時間,默認60s
# 這個時間必定要比repl-ping-slave-period大,不然會不斷檢測到超時
# repl-timeout 60

# 是否在SYNC後slave socket上禁用TCP_NODELAY?
# 若是你設置爲yes,Redis會使用少許TCP報文和少許帶寬發送數據給slave。
# 可是這樣會在slave端出現延遲。若是使用Linux內核的默認設置,大概40毫秒。
# 若是你設置爲no,那麼在slave端研究就會減小可是同步帶寬要增長。
# 默認咱們是爲低延遲優化的。
# 可是若是流量特別大或者主從服務器相距比較遠,設置爲yes比較合理。
repl-disable-tcp-nodelay no

# 設置複製的後臺日誌大小。
# 複製的後臺日誌越大, slave 斷開鏈接及後來可能執行部分複製花的時間就越長。
# 後臺日誌在至少有一個 slave 鏈接時,僅僅分配一次。
# repl-backlog-size 1mb

# 在 master 再也不鏈接 slave 後,後臺日誌將被釋放。下面的配置定義從最後一個 slave 斷開鏈接後須要釋放的時間(秒)。
# 0 意味着從不釋放後臺日誌
# repl-backlog-ttl 3600

# 設置slave優先級,默認爲100
# 當主服務器不能正確工做的時候,數字低的首先被提高爲主服務器,可是0是禁用選擇
slave-priority 100

# 若是少於 N 個 slave 鏈接,且延遲時間 <=M 秒,則 master 可配置中止接受寫操做。
# 例如須要至少 3 個 slave 鏈接,且延遲 <=10 秒的配置:
# min-slaves-to-write 3
# min-slaves-max-lag 10
# 設置 0 爲禁用
# 默認 min-slaves-to-write 爲 0 (禁用), min-slaves-max-lag 爲 10

######################### 安全 #########################

# 設置客戶端鏈接密碼,由於Redis響應速度能夠達到每秒100w次,因此密碼要特別複雜
# requirepass 1413

# 命令從新命名,或者禁用。
# 重命名命令爲空字符串能夠禁用一些危險命令好比:FLUSHALL刪除全部數據
# 須要注意的是,寫入AOF文件或傳送給slave的命令別名也許會引發一些問題
# rename-command CONFIG ""

# 設置客戶端鏈接密碼,由於Redis響應速度能夠達到每秒100w次,因此密碼要特別複雜
requirepass 1413

# 命令從新命名,或者禁用。
# 重命名命令爲空字符串能夠禁用一些危險命令好比:FLUSHALL刪除全部數據
# 須要注意的是,寫入AOF文件或傳送給slave的命令別名也許會引發一些問題
# rename-command CONFIG ""

######################### 限制 #########################

# 設置最多連接客戶端數量,默認爲10000。
# 實際能夠接受的請求數目爲設置值減去32,這32是Redis爲內部文件描述符保留的
# maxclients 10000

# 設置最多連接客戶端數量,默認爲10000。
# 實際能夠接受的請求數目爲設置值減去32,這32是Redis爲內部文件描述符保留的
# maxclients 10000
# 設置最大使用內存數量,在把Redis看成LRU緩存時特別有用。
# 設置的值要比系統能使用的值要小
# 由於當啓用刪除算法時,slave輸出緩存也要佔用內存
# maxmemory <bytes>

#達到最大內存限制時,使用何種刪除算法
# volatile-lru  使用LRU算法移除帶有過時標緻的key
# allkeys-lru -> 使用LRU算法移除任何key
# volatile-random -> 隨機移除一個帶有過時標緻的key
# allkeys-random ->  隨機移除一個key
# volatile-ttl -> 移除最近要過時的key
# noeviction -> 不刪除key,當有寫請求時,返回錯誤
#默認設置爲volatile-lru
# maxmemory-policy noeviction

# LRU和最小TTL算法沒有精確的實現
# 爲了節省內存只在一個樣本範圍內選擇一個最近最少使用的key,能夠設置這個樣本大小
# maxmemory-samples 5

######################### AO模式 #########################

# AOF和RDB持久化能夠同時啓用
# Redis啓動時候會讀取AOF文件,AOF文件有更好的持久化保證
appendonly no

# AOF的保存名稱,默認爲appendonly.aof
appendfilename "appendonly.aof"

# 設置什麼時候寫入追加日誌,又三種模式
# no:表示由操做系統決定什麼時候寫入。性能最好,但可靠性最低
# everysec:表示每秒執行一次寫入。折中方案,推薦
# always:表示每次都寫入磁盤。性能最差,比上面的安全一些
# appendfsync always
appendfsync everysec
# appendfsync no

# 當AOF同步策略設定爲alway或everysec
# 當後臺存儲進程(後臺存儲或者AOF日誌後臺寫入)會產生不少磁盤開銷
# 某些Linux配置會使Redis由於fsync()調用產生阻塞好久
# 如今尚未修復補丁,甚至使用不一樣線程進行fsync都會阻塞咱們的同步write(2)調用。
# 爲了緩解這個問題,使用如下選項在一個BGSAVE或BGREWRITEAOF運行的時候
# 能夠阻止fsync()在主程序中被調用,
no-appendfsync-on-rewrite no

# AOF自動重寫(合併命令,減小日誌大小)
# 當AOF日誌大小增長到一個特定比率,Redis調用BGREWRITEAOF自動重寫日誌文件
# 原理:Redis 會記錄上次重寫後AOF文件的文件大小。
# 若是剛啓動,則記錄啓動時AOF大小
# 這個基本大小會用來和當前大小比較。若是當前大小比特定比率大,就會觸發重寫。
# 你也須要指定一個AOF須要被重寫的最小值,這樣會避免達到了比率。
# 可是AOF文件還很小的狀況下重寫AOF文件。
# 設置爲0禁用自動重寫
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

#redis在啓動時能夠加載被截斷的AOF文件,而不須要先執行 redis-check-aof 工具
aof-load-truncated yes

######################### LUA腳本 #########################

# Lua腳本的最大執行時間,單位毫秒
# 超時後會報錯,而且計入日誌
# 當一個腳本運行時間超過了最大執行時間
# 只有SCRIPT KILL和 SHUTDOWN NOSAVE兩個命令可使用。
# SCRIPT KILL用於中止沒有調用寫命令的腳本。
# SHUTDOWN NOSAVE是惟一的一個,在腳本的寫命令正在執行
# 用戶又不想等待腳本的正常結束的狀況下,關閉服務器的方法。
# 如下選項設置爲0或負數就會取消腳本執行時間限制
lua-time-limit 5000

####################### redis集羣  ########################

# 是否啓用集羣
# cluster-enabled yes

# 集羣配置文件
# 集羣配置變動後會自動寫入改文件
# cluster-config-file nodes-6379.conf

# 節點互連超時的閥值 
# 節點超時時間,超過該時間沒法鏈接主要Master節點後,會中止接受查詢服務 
# cluster-node-timeout 15000

# 控制從節點FailOver相關的設置,設爲0,從節點會一直嘗試啓動FailOver.
# 設爲正數,失聯大於必定時間(factor*節點TimeOut),再也不進行FailOver
# cluster-slave-validity-factor 10

# 最小從節點鏈接數
# cluster-migration-barrier 1

# 默認爲Yes,丟失必定比例Key後(可能Node沒法鏈接或者掛掉),集羣中止接受寫操做
# 設置爲No,集羣丟失Key的狀況下仍提供查詢服務
# cluster-require-full-coverage yes

######################### 慢查詢 #########################

# Redis慢查詢日誌記錄超過設定時間的查詢,且只記錄執行命令的時間
# 不記錄I/O操做,好比:和客戶端交互,發送回覆等。
# 時間單位爲微妙,1000000微妙 = 1 秒
# 設置爲負數會禁用慢查詢日誌,設置爲0會記錄全部查詢命令
slowlog-log-slower-than 10000

# 日誌長度沒有限制,可是會消耗內存。超過日誌長度後,最舊的記錄會被移除
# 使用SLOWLOG RESET命令能夠回收內存
slowlog-max-len 128

######################### 延遲監測 #########################

# 系統只記錄超過設定值的操做,單位是毫秒,0表示禁用該功能  
# 能夠經過命令「CONFIG SET latency-monitor-threshold <milliseconds>」 直接設置而不須要重啓redis  
latency-monitor-threshold 0

######################### 事件通知 #########################
#  當事件發生時, Redis 能夠通知 Pub/Sub 客戶端。
#  能夠在下表中選擇 Redis 要通知的事件類型。事件類型由單個字符來標識:
# K     Keyspace 事件,以 _keyspace@<db>_ 的前綴方式發佈
# E     Keyevent 事件,以 _keysevent@<db>_ 的前綴方式發佈
# g     通用事件(不指定類型),像 DEL, EXPIRE, RENAME, …
# $     String 命令
# s     Set 命令
# h     Hash 命令
# z     有序集合命令
# x     過時事件(每次 key 過時時生成)
# e     清除事件(當 key 在內存被清除時生成)
# A     g$lshzxe 的別稱,所以 」AKE」 意味着全部的事件
# notify-keyspace-events 帶一個由 0 到多個字符組成的字符串參數。空字符串意思是通知被禁用。
#  例子:啓用 list 和通用事件:
# notify-keyspace-events Elg
#  默認所用的通知被禁用,由於用戶一般不須要改特性,而且該特性會有性能損耗。
#  注意若是你不指定至少 K 或 E 之一,不會發送任何事件。
notify-keyspace-events ""
#notify-keyspace-events AKE

######################### 高級設置 #########################

# 當有少許條目的時候,哈希使用高效內存數據結構。最大的條目也不能超過設定的閾值。# 「少許」定義以下:
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

# 和哈希編碼同樣,少許列表也以特殊方式編碼節省內存。「少許」設定以下:
list-max-ziplist-entries 512
list-max-ziplist-value 64

# 集合只在如下狀況下使用特殊編碼來節省內存
# -->集合所有由64位帶符號10進制整數構成的字符串組成
# 下面的選項設置這個特殊集合的大小。
set-max-intset-entries 512

# 當有序集合的長度和元素設定爲如下數字時,又特殊編碼節省內存
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

# HyperLogLog 稀疏表示字節限制
# 這個限制包含了16個字節的頭部,當一個HyperLogLog使用sparse representation
# 超過了這個顯示,它就會轉換到dense representation上
hll-sparse-max-bytes 3000

# 哈希刷新使用每100個CPU毫秒中的1毫秒來幫助刷新主哈希表(頂級鍵值映射表)。
#  Redis哈希表使用延遲刷新機制,越多操做,越多刷新。
# 若是服務器空閒,刷新操做就不會進行,更多內存會被哈希表佔用
# 默認每秒進行10次主字典刷新,釋放內存。
# 若是你有硬性延遲需求,偶爾2毫秒的延遲沒法忍受的話。設置爲no
# 不然設置爲yes
activerehashing yes

# 客戶端輸出緩存限制強迫斷開讀取速度比較慢的客戶端
# 有三種類型的限制
# normal -> 正常
# slave  -> slave和 MONITOR
# pubsub -> 客戶端至少訂閱了一個頻道或者模式
# 客戶端輸出緩存限制語法以下(時間單位:秒)
# client-output-buffer-limit <類別> <強制限制> <軟性限制> <軟性時間>
# 達到強制限制緩存大小,馬上斷開連接。
# 達到軟性限制,仍然會有軟性時間大小的連接時間
# 默認正常客戶端無限制,只有請求後,異步客戶端數據請求速度快於它能讀取數據的速度
# 訂閱模式和主從客戶端又默認限制,由於它們都接受推送。
# 強制限制和軟性限制均可以設置爲0來禁用這個特性
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

# 設置Redis後臺任務執行頻率,好比清除過時鍵任務。
# 設置範圍爲1到500,默認爲10.越大CPU消耗越大,延遲越小。
# 建議不要超過100
hz 10

# 當子進程重寫AOF文件,如下選項開啓時,AOF文件會每產生32M數據同步一次。
# 這有助於更快寫入文件到磁盤避免延遲
aof-rewrite-incremental-fsync yes

在這裏插入圖片描述 QQ討論羣組:984370849 706564342 歡迎加入討論

想要深刻學習的同窗們能夠加入QQ羣討論,有全套資源分享,經驗探討,沒錯,咱們等着你,分享互相的故事! 在這裏插入圖片描述

相關文章
相關標籤/搜索