自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

好飯不怕晚,扒一下Redis配置文件的底Ku

存儲 存儲軟件 Redis
忙碌是一種幸福,讓我們沒時間體會痛苦;奔波是一種快樂,讓我們真實地感受生活;疲憊是一種享受,讓我們無暇空虛。這幾句話就能簡單概括我最近的工作和生活。

[[417347]]

忙碌是一種幸福,讓我們沒時間體會痛苦;奔波是一種快樂,讓我們真實地感受生活;疲憊是一種享受,讓我們無暇空虛。這幾句話就能簡單概括我最近的工作和生活。

好多小伙伴都來私信“催更”,今天它來了!為了表達阿Q的歉意,特贈送「億級流量Java高并發(fā)與網(wǎng)絡編程實戰(zhàn)」一本,規(guī)則見文末。

在往期的文章中我們已經(jīng)對Redis的概念和基本命令進行了講解,今天我們來看下它的配置文件,Redis的配置文件在我們的開發(fā)和實際應用中起著非常重要的作用。

我們可以在安裝目錄下找到redis.conf配置文件,通過vim命令進行查看,為了防止配置文件進行更改,大家在使用前一定要備份一下!

本文Redis的版本為5.0.7

UNITS

  1. 1k => 1000 bytes 
  2. 1kb => 1024 bytes 
  3. 1m => 1000000 bytes 
  4. 1mb => 1024*1024 bytes 
  5. 1g => 1000000000 bytes 
  6. 1gb => 1024*1024*1024 bytes 

單位不區(qū)分大小寫,只支持bytes

INCLUDES

和structs2配置文件類似,可以通過includes包含。redis.conf可以作為總閘,包含其他。

  1. include /path/to/local.conf 
  2.  
  3. include /path/to/other.conf 

MODULES

  1. loadmodule /path/to/my_module.so 
  2. loadmodule /path/to/other_module.so 

Redis可以通過loadmodule選項在啟動時加載模塊,若服務端無法加載模塊,服務端會停止??梢酝ㄟ^多個loadmodule選項加載多個模塊。

NETWORK

「bind 127.0.0.1」:默認情況下,如果未指定“bind”配置指令,Redis將偵聽服務器上所有可用網(wǎng)絡接口的連接。

可以使用“bind”配置指令,后跟一個或多個IP地址,只偵聽一個或多個選定接口?!咐纾骸筨ind 192.168.1.100 10.0.0.1

當設置多個bind地址后,Redis內(nèi)部會維護多個Socket,每個Socket用于一個network interface。

「protected-mode yes」:此選項默認開啟。

當Redis服務端未使用bind選項顯式指定要監(jiān)聽的network interface,并且未設置密碼,Redis服務端只會接受來自127.0.0.1和::1的客戶端以及Unix域的Socket進行連接。

  • 「port 6379」:用于設置Redis監(jiān)聽的TCP端口,默認為6379,設置為0表示不監(jiān)聽TCP端口
  • 「timeout 0」:空閑多少秒之后關(guān)閉連接,“0”表示不關(guān)閉
  • 「tcp-keepalive 300」:單位為秒,如果為0,則不會進行keepalive檢測,建議設置成60
  • 「tcp-backlog 511」:設置tcp的backlog,backlog其實是一個連接隊列。

backlog隊列總和 = 未完成三次握手隊列 + 已經(jīng)完成三次握手隊列

在高并發(fā)環(huán)境下需要一個高backlog值來避免慢客戶端連接問題。

「注意」:Linux內(nèi)核會將這個值減小到/proc/sys/net/core/somaxconn的值,所以需要確認增大somaxconn和tcp_max_syn_backlog兩個值來達到想要的效果。

GENERAL

daemonize

Redis采用的是單進程多線程的模式,daemonize是用來指定redis是否要用守護線程的方式啟動。默認情況下,Redis不作為守護進程運行。如果需要,請使用“是”。

  1. #daemonize no  
  2. //當前界面將進入redis的命令行界面, 
  3. exit強制退出或者關(guān)閉連接工具(putty, 
  4. xshell等)都會導致redis進程退出。 
  5.  
  6. daemonize yes      
  7. //代表開啟守護進程模式。在該模式下, 
  8. redis 會在后臺運行,并將進程 pid 號寫入 
  9. 至 redis.conf 選項 pidfile 設置的文件中, 
  10. 此時 redis 將一直運行,除非手動kill該進程。 

supervised no

當你通過upstart或者systemd運行Redis時,Redis可以和你的supervision tree進行交互,可選的選項為:

  • no 無交互(默認)
  • upstart 通過向Redis發(fā)送SIGSTOP信號來通知upstart
  • systemd 通過向$NOTIFY_SOCKET寫入READY=1來通知systemd
  • auto 通過是否設置了UPSTART_JOB或者NOTIFY_SOCKET環(huán)境變量來決定選項為 upstart或者systemd

pidfile

  1. pidfile /var/run/redis_6379.pid //進程pid文件 

loglevel notice

指定服務器日志級別:從上到下依次減少

  • debug:大量信息,對開發(fā)/測試有用
  • verbose:許多很少有用的信息,但不像調(diào)試級別那樣混亂
  • notice:適度冗長,可能是生產(chǎn)中需要的內(nèi)容
  • warning:只記錄非常重要/關(guān)鍵的消息

logfile

  1. logfile "" 

日志的名字,如果為空,redis給控制臺標準輸出,如果配置為守護進程方式運行,且設置了logfile為stdout,則日志將會發(fā)送給/dev/null

database

  1. databases 16 

系統(tǒng)默認的庫16個,默認使用0庫

syslog

syslog-enabled no:是否把日志輸出到syslog中,系統(tǒng)日志默認是關(guān)著

syslog-ident redis:指定syslog里的日志標志設備以redis開頭

syslog-facility local0:指定syslog設備,值可以是USER或LOCAL0-LOCAL7,默認使用local0

Security (安全)

  1. requirepass 12345!@# 

設置redis連接密碼,如果配置了連接密碼,客戶端在連接redis時需要通過Auth 命令提供密碼,默認關(guān)閉。

如果設置完密碼,ping就失敗了,提示“NoAuth Authentication required”,加上auth + 密碼就通了。

「要求必須auth + password 在任何命令之前」

Redis一般做的是緩存,不是安全,而且系統(tǒng)會認為Linux是在安全的環(huán)境下。

CLIENTS

maxclients 10000:最大連接數(shù)

設置redis同時可以與多少個客戶端進行連接。默認情況下為10000個客戶端。

當你無法設置進程文件句柄限制時,redis會設置為當前的文件句柄限制值減去32,因為redis會為自身內(nèi)部處理邏輯留一些句柄出來。

如果達到了此限制,redis則會拒絕新的連接請求,并且向這些連接請求方發(fā)出「max number of clients reached」以作回應。

MEMORY MANAGEMENT

設置redis可以使用的內(nèi)存量。一旦到達內(nèi)存使用上限,redis將會試圖移除內(nèi)部數(shù)據(jù),移除規(guī)則可以通過maxmemory-policy來指定。

如果redis無法根據(jù)移除規(guī)則來移除內(nèi)存中的數(shù)據(jù),或者設置了「不允許移除」,那么redis則會針對那些需要申請內(nèi)存的指令返回錯誤信息,比如SET、LPUSH等。但是對于無內(nèi)存申請的指令,仍然會正常響應,比如GET等。

如果你的redis是主redis(說明你的redis有從redis),那么在設置內(nèi)存使用上限時,需要在系統(tǒng)中留出一些內(nèi)存空間給同步隊列緩存,只有在你設置的是“不移除”的情況下,才不用考慮這個因素。

最大緩存

  1. #maxmemory <bytes> 
  2. maxmemory 128MB 

設置maxmemory和相對應的回收策略算法,設置最好為物理內(nèi)存的「3/4」,或者比例更小,因為redis復制數(shù)據(jù)等其他服務時,也是需要緩存的。以防緩存數(shù)據(jù)過大致使redis崩潰,造成系統(tǒng)出錯不可用。

犧牲一部分緩存數(shù)據(jù),保存整體系統(tǒng)可用性。redis新的內(nèi)存機制,會把key放在內(nèi)存,value存放在swap區(qū)。

此配置需要和「maxmemory-policy」配合使用,當redis中內(nèi)存數(shù)據(jù)達到maxmemory時,觸發(fā)「清除策略」。在「內(nèi)存不足」時,任何write操作(比如set,lpush等)都會觸發(fā)「清除策略」的執(zhí)行。

實際環(huán)境

建議redis的所有物理機器的硬件配置保持一致(內(nèi)存一致),同時確保master/replica中「maxmemory policy」配置一致。

內(nèi)存滿時

如果還接收到set命令,redis將先嘗試剔除設置過expire信息的key,而不管該key的過期時間有沒有到達。

在刪除時,將按照過期時間進行刪除,最早將要被過期的key將最先被刪除。如果帶有expire信息的key都刪光了,內(nèi)存還不夠用,那么將返回錯誤。這樣,redis將不再接收寫請求,只接收get請求。

maxmemory的設置比較適合于把redis當作于類似memcached的緩存來使用。

最大緩存策略

「maxmemory-policy」:

  • volatile-lru:使用LRU(最近最少使用)算法移除key,只對設置了過期時間的鍵
  • allkeys-lru:使用LRU算法移除key(所有key)
  • volatile-lfu:對過期鍵使用 LFU(最不經(jīng)常使用)近似算法
  • allkeys-lfu:對所有鍵使用 LFU 近似算法
  • volatile-random:在過期集合中移除隨機的key,只對設置了過期時間的鍵
  • allkeys-random:移除隨機的key
  • volatile-ttl:移除那些TTL值最小的key,即那些最近要過期的key
  • noeviction:不進行移除。針對寫操作,只是返回錯誤信息(默認)(去公司觀察維度,不應該選擇這個)

LRU算法、LFU算法或者TTL算法都是不是很精確算法,而是個近似算法。

「使用策略規(guī)則:」

  • 如果數(shù)據(jù)呈現(xiàn)冪律分布,也就是一部分數(shù)據(jù)訪問頻率高,一部分數(shù)據(jù)訪問頻率低,則使用allkeys-lru。
  • 如果數(shù)據(jù)呈現(xiàn)平等分布,也就是所有的數(shù)據(jù)訪問頻率都相同,則使用allkeys-random。

樣本數(shù)量

設置樣本數(shù)量,上邊提到的算法都并非是精確的算法,而是估算值,所以你可以設置樣本的大小。

  1. maxmemory-samples 5 

默認值是 5,也就是說Redis隨機挑出5個鍵,然后選出一個最符合條件的。對LRU來說5是比較合適的。10已經(jīng)很接近于真正的LRU,但會消耗更多的CPU。3會更快但沒有那么精確。

副本忽略最大內(nèi)存

  1. replica-ignore-maxmemory yes 

從Redis 5開始,默認情況下,replica節(jié)點會忽略maxmemory設置(除非在發(fā)生failover后,此節(jié)點被提升為master節(jié)點)。

這意味著只有master才會執(zhí)行過期刪除策略,并且master在刪除鍵之后會對replica發(fā)送DEL命令。

這個行為保證了master和replicas的一致性,并且這通常也是你需要的,但是若你的replica節(jié)點是可寫的,或者你希望replica節(jié)點有不同的內(nèi)存配置,并且你確保所有到replica寫操作都冪等的,那么你可以修改這個默認的行為 (請確保你明白你在做什么)。

「注意」默認情況下replica節(jié)點不會執(zhí)行過期策略,它有可能使用了超過maxmemory設定的值的內(nèi)存。因此你需要監(jiān)控replicas節(jié)點所在的機器并且確保在master節(jié)點到達配置的maxmemory大小時,replicas節(jié)點不會超過物理內(nèi)存的大小。 

今天我們就先說到這了,至于配置文件中關(guān)于主從復制和持久化部分我們將在后續(xù)的內(nèi)容進行講解。

本文轉(zhuǎn)載自微信公眾號「阿Q說代碼」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系阿Q說代碼公眾號。

 

責任編輯:武曉燕 來源: 阿Q說代碼
相關(guān)推薦

2011-01-21 15:08:45

Sendmail

2011-03-11 10:09:59

UbuntuLAMP路徑

2011-03-22 13:37:29

Nagios安裝

2019-03-11 14:33:21

Redis內(nèi)存模型數(shù)據(jù)庫

2011-03-25 17:13:37

Nagios配置文件

2011-02-25 16:39:34

proftpd配置文件

2023-02-20 14:37:25

2021-03-10 00:02:01

Redis

2023-04-14 07:34:19

2011-01-13 16:27:26

Linux配置文件

2019-09-10 07:29:44

2011-01-19 14:00:21

2011-03-03 13:16:32

Proftpd配置文件

2010-08-25 10:24:55

DHCP配置文件

2011-03-23 15:13:08

Nagios配置文件

2023-12-01 08:27:53

MySQLjoin

2023-06-05 14:14:21

騰訊索引面試

2011-07-14 16:17:47

AmoebaMySQL

2022-07-11 20:46:39

AQSJava

2019-10-21 10:59:52

編程語言JavaC
點贊
收藏

51CTO技術(shù)棧公眾號