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

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

存儲(chǔ) 存儲(chǔ)軟件 Redis
忙碌是一種幸福,讓我們沒(méi)時(shí)間體會(huì)痛苦;奔波是一種快樂(lè),讓我們真實(shí)地感受生活;疲憊是一種享受,讓我們無(wú)暇空虛。這幾句話就能簡(jiǎn)單概括我最近的工作和生活。

[[417347]]

忙碌是一種幸福,讓我們沒(méi)時(shí)間體會(huì)痛苦;奔波是一種快樂(lè),讓我們真實(shí)地感受生活;疲憊是一種享受,讓我們無(wú)暇空虛。這幾句話就能簡(jiǎn)單概括我最近的工作和生活。

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

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

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

本文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ū)分大小寫(xiě),只支持bytes

INCLUDES

和structs2配置文件類似,可以通過(guò)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可以通過(guò)loadmodule選項(xiàng)在啟動(dòng)時(shí)加載模塊,若服務(wù)端無(wú)法加載模塊,服務(wù)端會(huì)停止。可以通過(guò)多個(gè)loadmodule選項(xiàng)加載多個(gè)模塊。

NETWORK

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

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

當(dāng)設(shè)置多個(gè)bind地址后,Redis內(nèi)部會(huì)維護(hù)多個(gè)Socket,每個(gè)Socket用于一個(gè)network interface。

「protected-mode yes」:此選項(xiàng)默認(rèn)開(kāi)啟。

當(dāng)Redis服務(wù)端未使用bind選項(xiàng)顯式指定要監(jiān)聽(tīng)的network interface,并且未設(shè)置密碼,Redis服務(wù)端只會(huì)接受來(lái)自127.0.0.1和::1的客戶端以及Unix域的Socket進(jìn)行連接。

  • 「port 6379」:用于設(shè)置Redis監(jiān)聽(tīng)的TCP端口,默認(rèn)為6379,設(shè)置為0表示不監(jiān)聽(tīng)TCP端口
  • 「timeout 0」:空閑多少秒之后關(guān)閉連接,“0”表示不關(guān)閉
  • 「tcp-keepalive 300」:?jiǎn)挝粸槊耄绻麨?,則不會(huì)進(jìn)行keepalive檢測(cè),建議設(shè)置成60
  • 「tcp-backlog 511」:設(shè)置tcp的backlog,backlog其實(shí)是一個(gè)連接隊(duì)列。

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

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

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

GENERAL

daemonize

Redis采用的是單進(jìn)程多線程的模式,daemonize是用來(lái)指定redis是否要用守護(hù)線程的方式啟動(dòng)。默認(rèn)情況下,Redis不作為守護(hù)進(jìn)程運(yùn)行。如果需要,請(qǐng)使用“是”。

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

supervised no

當(dāng)你通過(guò)upstart或者systemd運(yùn)行Redis時(shí),Redis可以和你的supervision tree進(jìn)行交互,可選的選項(xiàng)為:

  • no 無(wú)交互(默認(rèn))
  • upstart 通過(guò)向Redis發(fā)送SIGSTOP信號(hào)來(lái)通知upstart
  • systemd 通過(guò)向$NOTIFY_SOCKET寫(xiě)入READY=1來(lái)通知systemd
  • auto 通過(guò)是否設(shè)置了UPSTART_JOB或者NOTIFY_SOCKET環(huán)境變量來(lái)決定選項(xiàng)為 upstart或者systemd

pidfile

  1. pidfile /var/run/redis_6379.pid //進(jìn)程pid文件 

loglevel notice

指定服務(wù)器日志級(jí)別:從上到下依次減少

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

logfile

  1. logfile "" 

日志的名字,如果為空,redis給控制臺(tái)標(biāo)準(zhǔn)輸出,如果配置為守護(hù)進(jìn)程方式運(yùn)行,且設(shè)置了logfile為stdout,則日志將會(huì)發(fā)送給/dev/null

database

  1. databases 16 

系統(tǒng)默認(rèn)的庫(kù)16個(gè),默認(rèn)使用0庫(kù)

syslog

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

syslog-ident redis:指定syslog里的日志標(biāo)志設(shè)備以redis開(kāi)頭

syslog-facility local0:指定syslog設(shè)備,值可以是USER或LOCAL0-LOCAL7,默認(rèn)使用local0

Security (安全)

  1. requirepass 12345!@# 

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

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

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

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

CLIENTS

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

設(shè)置redis同時(shí)可以與多少個(gè)客戶端進(jìn)行連接。默認(rèn)情況下為10000個(gè)客戶端。

當(dāng)你無(wú)法設(shè)置進(jìn)程文件句柄限制時(shí),redis會(huì)設(shè)置為當(dāng)前的文件句柄限制值減去32,因?yàn)閞edis會(huì)為自身內(nèi)部處理邏輯留一些句柄出來(lái)。

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

MEMORY MANAGEMENT

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

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

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

最大緩存

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

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

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

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

實(shí)際環(huán)境

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

內(nèi)存滿時(shí)

如果還接收到set命令,redis將先嘗試剔除設(shè)置過(guò)expire信息的key,而不管該key的過(guò)期時(shí)間有沒(méi)有到達(dá)。

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

maxmemory的設(shè)置比較適合于把redis當(dāng)作于類似memcached的緩存來(lái)使用。

最大緩存策略

「maxmemory-policy」:

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

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

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

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

樣本數(shù)量

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

  1. maxmemory-samples 5 

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

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

  1. replica-ignore-maxmemory yes 

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

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

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

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

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

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

 

責(zé)任編輯:武曉燕 來(lái)源: 阿Q說(shuō)代碼
相關(guān)推薦

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內(nèi)存模型數(shù)據(jù)庫(kù)

2011-03-22 13:37:29

Nagios安裝

2011-03-25 17:13:37

Nagios配置文件

2011-02-25 16:39:34

proftpd配置文件

2023-02-20 14:37:25

2019-09-10 07:29:44

2021-03-10 00:02:01

Redis

2023-04-14 07:34:19

2023-01-30 22:10:12

BeanSpring容器

2018-04-03 15:42:40

2019-10-21 10:59:52

編程語(yǔ)言JavaC

2022-07-11 20:46:39

AQSJava

2023-12-01 08:27:53

MySQLjoin

2023-06-05 14:14:21

騰訊索引面試

2011-01-19 14:00:21

2010-08-25 10:24:55

DHCP配置文件

2011-03-23 15:13:08

Nagios配置文件
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产精品二区三区在线观看 | 日韩免费网站 | 久久久久久久久久久国产 | 粉嫩国产精品一区二区在线观看 | 亚洲日韩中文字幕一区 | 成人国产午夜在线观看 | 四虎在线观看 | 人和拘一级毛片c | 午夜精品视频 | 精品久久久一区二区 | 中文字幕在线二区 | 日本一道本视频 | 国产小视频精品 | 日日操夜夜操天天操 | 国产精品观看 | 日韩最新网站 | 999www视频免费观看 | 天天拍天天操 | 欧美色综合 | av在线一区二区三区 | 亚洲第一中文字幕 | 97久久精品午夜一区二区 | 色欧美片视频在线观看 | 涩涩导航| 欧美在线国产精品 | 国产在线一区二区三区 | 国产成人综合在线 | 四虎成人免费电影 | 精品欧美乱码久久久久久1区2区 | 久久久久国产精品一区二区 | 一区二区三区精品视频 | 美女视频黄的免费 | 91精品国产综合久久婷婷香蕉 | 国产精品自产av一区二区三区 | 久久久久久美女 | 欧美一区二区久久 | 凹凸日日摸日日碰夜夜 | 国产精品a免费一区久久电影 | 国产视频久| 日韩av资源站 | 久久久福利|