4 Redis 配置文件介紹

来源:https://www.cnblogs.com/studyMoreRich/archive/2018/12/22/redis_config.html
-Advertisement-
Play Games

2016-12-22 14:28:39 該系列文章鏈接NoSQL 資料庫簡介Redis的安裝及及一些雜項基礎知識Redis 的常用五大數據類型(key,string,hash,list,set,zset)Redis 配置文件介紹Redis 持久化之RDBRedis 持久化之AOFRedis 主從複製 ...


2016-12-22 14:28:39


 該系列文章鏈接
NoSQL 資料庫簡介
Redis的安裝及及一些雜項基礎知識
Redis 的常用五大數據類型(key,string,hash,list,set,zset)
Redis 配置文件介紹
Redis 持久化之RDB
Redis 持久化之AOF
Redis 主從複製
Redis 事務
Redis 發佈與訂閱
Redis jedis 介紹


 

Redis 是高性能的記憶體鍵值資料庫。
Redis 一般用在部署在 Linux 上的伺服器,便是官網也是這樣說的,所以請在 Linux 上使用 Redis
(若是自己不知道如何配置伺服器,可以去阿裡雲 騰訊雲 等一些雲伺服器網站上租一臺)

如果你想要比較正常的使用 Redis 文件的話,請通讀 redis.conf 文件,這會對你使用 redis 產生很大的幫助。

一.redis.conf 的位置

下麵這張圖片說明瞭 redis.conf 的位置(直接進入 redis 的安裝目錄即可,本次使用redis-5.0.3)
   

redis.conf 是這篇文章的重點; 至於另一個:sentinel.conf,則與 Redis 的主從複製有關,因為很重要,所以這裡標記一下


如果需要修改 redis.conf 的配置,請將配置文件複製一份到另一個位置再修改,錯了的話以防萬一
註意:不論對 redis.conf 做任何修改,請複製一份,再在複製的文件上做修改!

(由於我當前的伺服器遠程連接網路很不穩定,故使用 windows 版本的 redis.conf 說明)

二.配置文件中各個模塊
redis.conf 包含了(以下這段所有英文單詞在 redis.conf 中都是大寫!) units,includes,network,general,snapshotting,replication,security,limits,append only mode,lua scripting,redis cluster,slow log,lantency monitor,event notification,advanced config 等一大串內容(真可怕/(ㄒoㄒ)/~~)還好我們不需要掌握多少內容對於初級階段而言。

units 單位,includes 包含,network 網路,general 通用,security 安全,limits 限制 等必須掌握,至少混個臉熟吧。

下麵這些是本篇文章不會說明的,因為準備後面說到相關內容時再說明配置文件的內容
Redis 的持久化:
    RDB -> snapshotting 快照
    AOF -> append only mode
Redis 的主從複製:
    replication

一些非常常用的配置我會寫出來翻譯,其它的自己翻譯(真的累... ...)
1.units 這段自己看,主要是兩點:
    1k 與 1kb 有無區別
    1kb 與 1KB 有無區別

2.includes
在這個模塊中包含一個或多個其它的配置文件。如果你需要標準的配置文件去運行所有的 redis 伺服器以及同樣需要定製化一些伺服器的某些配置,那麼這個模塊是非常有用的。    
請記住:如果你不想在運行時重寫 config 配置請將 includ 這個選項放在文件的開頭;
同樣如果你想要在運行時重寫配置,那麼最好把 includ 這個選項放在文件末尾

3.network
    3.1bind
    通常來說,如果你不配置 bind 這個配置命令的話,redis 伺服器可以收到互聯網上所有用戶的連接!這是非常危險的,除非你有極其特殊的理由這樣去做
    儘可能地去接收一臺或多台網路上的連接,通過配置 bind 配置命令。例子:
    bind 192.168.1.100 10.0.0.1
    bind 127.0.0.1 ::1

    預設的 bind 配置(IPv4)是:
    bind 127.0.0.1
    這個預設配置只能讓 redis 伺服器收到正在運行 redis 伺服器的這臺電腦的連接,也就是在一臺電腦上啟動伺服器,同樣在這臺電腦上啟動 redis 客戶端連接伺服器才可以。

    3.2protected-mode

    3.3 port
        埠,這沒什麼好說的吧

    3.4 tcp-backlog
    tcp 三次握手連接隊列
    tcp-backlog 即 tcp 三次握手連接隊列,連接隊列地的總次數為未完成三次隊列+已完成三次的隊列。在高併發環境下你需要一個比較高的連接隊列來保證慢客戶端的連接問題。註意 linux 內核會將這個值減小到 /proc/sys/net/core/somaxconn 值,因此你要同時修改 somaxconn 和 tcp-backlog 才能夠達到預期的效果。
    tcp-backlog 預設為 511

    3.5 unix socket

    3.6 timeout
        在客戶端空閑 n 秒關閉連接
        一般 300
    3.7 tcp-keepalive

4. general
    4.1 daemonize:守護進程
        預設情況下,Redis不作為守護程式運行。如果需要,請使用 yes。
        請註意,當使用守護進程時,Redis會在/var/run/redis.pid中編寫一個pid文件。
    4.2 superised

    4.3 pidfile
        如果指定了pid文件,Redis會將其寫入啟動時指定的位置,併在退出時將其刪除。
        當伺服器運行非守護程式時,如果配置中未指定任何pid文件,則不會創建該文件。當伺服器被守護時,即使沒有指定,也會使用pid文件,預設為“/var/run/redis.pid”。
        如果Redis無法自動創建 pid 文件,那麼使用者應該主動創建一個 pid 文件,這是很好的

    4.4 loglevel
        指定伺服器詳細級別。
            這可以是以下之一:
            debug(大量信息,對開發/測試很有用)
            verbose(許多有用的信息,但不像 debug 級別一樣混亂)
            notice(中等 verbose,可能想要在生產時使用)
            warning(僅記錄非常重要/關鍵的消息)

        一般在開發/測試時使用 verbose,在生產中使用 notice/warning

    4.5 logfile
        指定日誌文件名。此外,'stdout' 命令可以強制 Redis 在標準輸出中輸出日誌。

    4.6 syslog-enabled
        要啟用日誌記錄到Windows EventLog,只需將“syslog-enabled”設置為yes,並可選擇更新其他syslog參數以滿足您的需要。如果Redis已安裝並作為Windows服務啟動,則會自動啟用此功能。

    4.7 syslog-indent
        在Windows應用程式日誌中指定事件的源名稱。

    4.8 databases
        設置資料庫的數量。預設資料庫是 資料庫0號,你可以使用 ‘select <dbid>’ 命令在每個連接上選擇另外一個資料庫, dbid 是一個在0 到 'databases'-1 的數字。

        databases 預設是 16
5. security

    5.1 auth password (設置密碼)
    在處理任何其他命令之前,要求客戶端寫下 ‘AUTH <PASSWORD>’ 命令。這在您不信任其他人但是又可以訪問運行redis-server的主機的環境中可能很有用。

    這應保持註釋以便向後相容,因為大多數人不需要auth(例如,他們運行自己的伺服器)。

    警告:由於Redis非常快,外部用戶可以在一個好的環境中每秒嘗試多達 150k 次的密碼。這意味著你應該使用一個非常強大的密碼,否則它將很容易破解。

    requirepass foobared


    5.2 命令重命名。

    可以在共用環境中更改危險命令的名稱。例如,可以將CONFIG命令重命名為難以猜測的內容,以便它仍可用於內部使用工具,但不適用於一般客戶端。

    示例:

    rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

    也可以通過將命令重命名為完全終止命令
    空字元串:

    rename-command CONFIG“”

    請註意,更改登錄到AOF文件或傳輸到從站的命令名稱可能會導致問題。

6.limits
    6.1 maxclients
        同一時刻設置已連接客戶端的最大數量。預設情況下,此限制數量設置為10000,但是如果Redis伺服器無法將進程文件限制配置為允許指定的限制,則允許的最大客戶端數將設置為當前文件限制減去32(因為Redis保留了內部使用的文件描述符很少)。
        達到限制後,Redis將關閉所有新連接並給關閉的連接發送錯誤消息“max number of clients reached”。

    6.2 persistence-available
        如果只將 Redis 用作記憶體緩存的資料庫(沒有任何持久化),則後臺 AOF / RDB持久化使用的 fork() 機制是不必要的。作為優化,可以在Windows版本的Redis中關閉所有持久化。這會將堆分配重定向到系統堆分配器,並禁用否則會導致 fork() 操作的命令:BGSAVE和BGREWRITEAOF。
         此標誌不能與配置AOF和RDB操作的任何其他標誌組合使用。

    6.3 maxmemory <bytes>
        不要使用超過指定位元組數的記憶體。
        達到記憶體限制時,Redis將嘗試根據所選的 eviction 策略刪除 key(請參閱maxmemory-policy)。

        如果Redis無法根據策略刪除 key,或者策略設置為“noeviction”,則Redis將開始在命令行報告錯誤的命令,這些命令將使用更多記憶體以至於不能使用如SET,LPUSH等寫入命令,並將繼續回覆像GET這樣的只讀命令。

        當使用策略LRU緩存或為實例設置及其大的記憶體限制時(使用“noeviction”策略)來運行 redis,此選項通常很有用。

        警告:如果在啟用了maxmemory的實例上連接了從屬設備(slave,這是主從複製所看到的),則從使用的記憶體計數中減去為從屬設備提供所需的輸出緩衝區的大小,以便網路問題/重新同步不會觸發關鍵被驅逐的迴圈,並且反過來,從屬的輸出緩衝區已滿,刪除的鍵被刪除觸發刪除更多鍵,依此類推,直到資料庫完全清空為止。

        簡而言之......如果你有隨從,建議你設置maxmemory的下限,以便系統上有一些用於從輸出緩衝區的空閑RAM(但如果策略是'noeviction'則不需要這樣)。

        警告:如果達到堆限制,則不設置maxmemory將導致Redis以記憶體不足異常終止。

        註意:由於Redis使用系統頁面文件來分配堆記憶體,因此Windows任務管理器或其他工具(如ProcessExplorer)顯示的工作集記憶體使用量並不總是準確的。例如,在RDB或AOF文件的後臺保存之後,工作設置值可能會顯著下降。要檢查redis-server用於存儲數據的正確記憶體量,請使用INFO client命令。 INFO命令僅顯示用於存儲redis數據的記憶體,而不顯示Windows進程為其自身要求使用的額外記憶體。可以計算INFO命令未報告的額外3個記憶體量,減去Windows任務管理器報告的峰值工作集和INFO命令報告的used_memory_peak。

    6.4 maxmemory-policy
        MAXMEMORY POLICY:Redis將如何選擇達到maxmemory時要刪除的內容。您可以選擇以下五種行為:

        volatile-lru - >刪除lru過期命令演算法的 key
        allkeys-lru - >根據LRU演算法刪除任何相關的 key
        volatile-random - >刪除lru過期命令演算法的隨機 key
        allkeys-random - >刪除隨機密鑰,任意密鑰
        volatile-ttl - >刪除最近的到期時間(最小TTL)的密鑰
        noeviction - >根本不會過期,只是在寫操作上返回錯誤

        註意:對於任何上述策略,當沒有合適的驅逐鍵時,Redis將在寫操作時返回錯誤。
        在撰寫之日,這些命令是: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
 
    6.5 maxmemory-samples    
        LRU和最小TTL演算法不是精確的演算法,而是近似演算法(為了節省記憶體),因此您可以調整它以獲得速度或精度。預設情況下,Redis將檢查五個鍵並選擇最近使用的鍵,您可以使用以下配置指令更改樣本大小。

   預設值為5會產生足夠好的結果。 10近似非常接近真實的LRU但是花費更多的CPU。 3非常快但不是很準確。
         
7.snapshotting
 Redis 持久化之RDB
8.append on mode
    Redis 持久化之AOF
9.replication
    Redis 主從複製

三.常用配置

  如果把常用配置放在這,文章太長了,故這裡放個鏈接

  4-4 Redis 的常用配置


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 備忘命令: 保持更新,轉載請註明出處。 ...
  • Ubuntu引導安裝 首先是安裝前的準備工作 1.需要安裝的 ubuntu系統的ISO鏡像。 2.easyBCD引導軟體 3.所在的Windows系統(本人win7下安裝) 4.DiskGenius(分區工具) 開始安裝前win7下準備工作 一、 網上下載ubuntu的iso(應該是是官方渠道吧) ...
  • 安裝Windows10 1803 版本後,發現網路上的機器好多不見了。 使用 ping 可以ping 通,但是訪問網路共用提示下麵錯誤。 這個原因是1803 中沒有安裝 SMB1.0 協議。因為 SMB1.0協議比較早,有安全問題, windows 10 在之後的版本中都不預設支持了。 如果想迴避這 ...
  • 1 前景提要 1.1 碎片化問題 分頁與分段 頁是信息的物理單位, 分頁是為了實現非連續分配, 以便解決記憶體碎片問題, 或者說分頁是由於系統管理的需要. 段是信息的邏輯單位,它含有一組意義相對完整的信息, 分段的目的是為了更好地實現共用, 滿足用戶的需要. 頁的大小固定且由系統確定, 將邏輯地址劃分 ...
  • 一 前期準備 1.1 依賴準備 編譯安裝需要依賴的包,如gcc等: yum -y install gcc gcc-c++ make glibc kernel-devel kernel-headers autoconf automake libtool glib2-devel libxml2 libx ...
  • DROP: 刪除表test,並釋放空間,將test刪除的一干二凈。 TRUNCATE: 刪除表test里的內容,並釋放空間,但不刪除表的定義,表的結構還在。 DELETE: 1、刪除指定數據 刪除表test中年齡等於30的且國家為US的數據 2、刪除整個表 僅刪除表test內的所有內容,保留表的定義 ...
  • 我超級推薦的Navicat Premium 12的下載,破解方法 ...
  • 前面我們已經實現了七種模型,接下來我們分別會對這七種進行評估,主要通過auccuracy,precision,recall,F1-score,auc。最後畫出各個模型的roc曲線 接下來分別看看各個評分的意義 accuracy(準確率) 對於給定的測試數據集,分類器正確分類的樣本數與總樣本數之比。也 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...