成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[417347]]

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

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

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

我們可以在安裝目錄下找到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 

單位不區分大小寫,只支持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將偵聽服務器上所有可用網絡接口的連接。

可以使用“bind”配置指令,后跟一個或多個IP地址,只偵聽一個或多個選定接口。「例如:」bind 192.168.1.100 10.0.0.1

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

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

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

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

backlog隊列總和 = 未完成三次握手隊列 + 已經完成三次握手隊列

在高并發環境下需要一個高backlog值來避免慢客戶端連接問題。

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

GENERAL

daemonize

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

  1. #daemonize no  
  2. //當前界面將進入redis的命令行界面, 
  3. exit強制退出或者關閉連接工具(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發送SIGSTOP信號來通知upstart
  • systemd 通過向$NOTIFY_SOCKET寫入READY=1來通知systemd
  • auto 通過是否設置了UPSTART_JOB或者NOTIFY_SOCKET環境變量來決定選項為 upstart或者systemd

pidfile

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

loglevel notice

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

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

logfile

  1. logfile "" 

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

database

  1. databases 16 

系統默認的庫16個,默認使用0庫

syslog

syslog-enabled no:是否把日志輸出到syslog中,系統日志默認是關著

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

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

Security (安全)

  1. requirepass 12345!@# 

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

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

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

Redis一般做的是緩存,不是安全,而且系統會認為Linux是在安全的環境下。

CLIENTS

maxclients 10000:最大連接數

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

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

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

MEMORY MANAGEMENT

設置redis可以使用的內存量。一旦到達內存使用上限,redis將會試圖移除內部數據,移除規則可以通過maxmemory-policy來指定。

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

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

最大緩存

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

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

犧牲一部分緩存數據,保存整體系統可用性。redis新的內存機制,會把key放在內存,value存放在swap區。

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

實際環境

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

內存滿時

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

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

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

最大緩存策略

「maxmemory-policy」:

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

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

「使用策略規則:」

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

樣本數量

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

  1. maxmemory-samples 5 

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

副本忽略最大內存

  1. replica-ignore-maxmemory yes 

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

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

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

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

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

本文轉載自微信公眾號「阿Q說代碼」,可以通過以下二維碼關注。轉載本文請聯系阿Q說代碼公眾號。

 

責任編輯:武曉燕 來源: 阿Q說代碼
相關推薦

2025-06-04 01:20:00

2011-01-21 15:08:45

Sendmail

2011-03-11 10:09:59

UbuntuLAMP路徑

2019-03-11 14:33:21

Redis內存模型數據庫

2011-03-22 13:37:29

Nagios安裝

2011-03-25 17:13:37

Nagios配置文件

2011-02-25 16:39:34

proftpd配置文件

2019-09-10 07:29:44

2023-02-20 14:37:25

2021-03-10 00:02:01

Redis

2023-04-14 07:34:19

2018-04-03 15:42:40

2023-01-30 22:10:12

BeanSpring容器

2022-07-11 20:46:39

AQSJava

2019-10-21 10:59:52

編程語言JavaC

2023-12-01 08:27:53

MySQLjoin

2023-06-05 14:14:21

騰訊索引面試

2011-01-13 16:27:26

Linux配置文件

2011-03-03 13:16:32

Proftpd配置文件

2011-01-19 14:00:21

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品欧美一区二区精品久久 | 九九精品影院 | 操网站 | www成人免费视频 | 日韩午夜一区二区三区 | 亚洲综合一区二区三区 | 欧美午夜精品久久久久免费视 | 亚洲乱码一区二区三区在线观看 | 天堂国产 | 精品久久久久久亚洲精品 | 粉色午夜视频 | 国产精品久久久久久久久 | 欧美日韩一 | 99热都是精品 | 成人伊人 | 毛片一级网站 | 在线一级片 | 亚洲精品黄 | 国产精品亚洲综合 | 成人av一区 | 久久99精品久久久久久国产越南 | av福利网站| 成人h免费观看视频 | 国产精品久久久久久久久久久久久 | 波多野结衣一区二区 | 成人久久久久 | 国产成人精品999在线观看 | 久久噜噜噜精品国产亚洲综合 | 国产精品一二三区 | 欧美中文字幕一区 | 日韩在线| 色天堂影院| 91综合在线观看 | 天天草视频 | 欧美高清dvd | 国产成人免费在线 | 真人女人一级毛片免费播放 | 亚洲啪啪 | 久久一日本道色综合久久 | 四虎影院在线播放 | 亚洲情侣视频 |