Redis 5.0.5 redis.conf 配置文件說明

一般配置

修改daemonize為yes状土,即默認(rèn)以后臺(tái)程序方式運(yùn)行(跟使用&號(hào)強(qiáng)制后臺(tái)運(yùn)行是一個(gè)意思)

daemonize yes

修改默認(rèn)監(jiān)聽端口(一般用默認(rèn)的)

port 6379

修改生成默認(rèn)日志文件位置

logfile "/home/logs/redis/redis.log"

配置持久化文件存放位置

dir /home/apps/redis/data

PID文件

pidfile /home/apps/redis/redis.pid

保護(hù)模式

protected-mode no

支持集群

cluster-enabled yes

Redis 配置詳解.

請(qǐng)注意属划,為了讀取配置文件,必須以文件路徑作為第一個(gè)參數(shù)啟動(dòng)Redis:

./redis-server /path/to/redis.conf

內(nèi)存大小單位

1k => 1000 bytes

1kb => 1024 bytes

1m => 1000000 bytes

1mb => 1024*1024 bytes

1g => 1000000000 bytes

1gb => 102410241024 bytes

單位不區(qū)分大小寫环壤,因此 1GB 1Gb 1gB 是一樣的.

################################## INCLUDES ###################################

在此處包含一個(gè)或多個(gè)其他配置文件。如果您有一個(gè)標(biāo)準(zhǔn)模板可用于所有Redis服務(wù)器旧困,但還需要自定義一些服務(wù)器設(shè)置莺禁。

“include”不會(huì)被來自admin或Redis Sentinel的命令“CONFIG REWRITE”重寫。

由于Redis始終使用最后處理的行為作為配置指令的值幢哨,因此最好將include放在此文件的開頭赡勘,以避免在運(yùn)行時(shí)覆蓋配置更改。

如果你要使用includes來覆蓋配置選項(xiàng)捞镰,最好將include作為最后一行闸与。

include /path/to/local.conf

include /path/to/other.conf

################################## MODULES #####################################

啟動(dòng)時(shí)加載指定模塊,如果服務(wù)器無法加載模塊岸售,它將中止践樱。 這里可以使用多個(gè)loadmodule指令。

loadmodule /path/to/my_module.so

loadmodule /path/to/other_module.so

################################## NETWORK #####################################

默認(rèn)情況下凸丸,如果未指定“bind”配置指令拷邢,則Redis將監(jiān)聽來自服務(wù)器上可用的所有端口的連接。

可以使用“bind”配置指令僅監(jiān)聽一個(gè)或多個(gè)指定的IP地址屎慢。

Examples:

bind 192.168.1.100 10.0.0.1

bind 127.0.0.1 ::1

~~~ WARNING ~~~ 如果運(yùn)行Redis的計(jì)算機(jī)直接暴露于Internet瞭稼,則綁定到所有接口是危險(xiǎn)的,并且會(huì)將實(shí)例暴露給Internet上的每個(gè)人腻惠。

因此环肘,默認(rèn)情況下,我們不會(huì)注釋以下綁定指令集灌,這意味著Redis只能接受來自指定ip的客戶端的連接

IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES

JUST COMMENT THE FOLLOWING LINE.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

bind 127.0.0.1

保護(hù)模式是一層安全保護(hù)悔雹,以避免在Internet上打開的Redis實(shí)例被訪問和利用。

當(dāng)保護(hù)模式打開的情況下,如果:

1) 服務(wù)器未使用“bind”指令顯式綁定到一組地址欣喧。

2) 沒有配置密碼腌零。

服務(wù)器僅接受來自IPv4和IPv6環(huán)回地址127.0.0.1和:: 1以及Unix域套接字的客戶端的連接。

默認(rèn)情況下保護(hù)模式是開啟的续誉。 只有在希望其他主機(jī)的客戶端即使未配置任何身份驗(yàn)證莱没,仍要連接到Redis時(shí),應(yīng)該禁用此選項(xiàng)并且不使用“bind”指令明確列出一組特定的接口酷鸦。

protected-mode yes

接受指定端口上的連接饰躲,默認(rèn)為6379

如果指定了端口0,則Redis不會(huì)偵聽TCP套接字臼隔。

port 6379

TCP連接最大積壓數(shù)

在大量客戶端連接的情況下嘹裂,應(yīng)該提高該值,以免客戶端連接慢摔握。

但該值受系統(tǒng)內(nèi)核參數(shù)的限制寄狼,包括 somaxconn 和 tcp_max_syn_backlog。

tcp-backlog 511

Unix socket.

指定將用于監(jiān)聽傳入連接的Unix套接字的路徑。 沒有默認(rèn)值泊愧,因此Redis在未指定時(shí)不會(huì)偵聽unix套接字伊磺。

unixsocket /tmp/redis.sock

unixsocketperm 700

當(dāng)連接的客戶端連續(xù)空閑指定時(shí)間后,就斷開該連接删咱。指定值為0時(shí)禁用超時(shí)機(jī)制屑埋。

timeout 0

TCP keepalive.

周期性檢測客戶端是否可用

如果非零,則在沒有通信的情況下使用SO_KEEPALIVE向客戶端發(fā)送TCP ACK痰滋。

此選項(xiàng)的合理值為300秒

tcp-keepalive 300

################################# GENERAL #####################################

設(shè)定是否以守護(hù)進(jìn)程啟動(dòng)服務(wù)(默認(rèn)是no)摘能,守護(hù)進(jìn)程會(huì)生成 PID 文件 /var/run/redis_6379.pid。

daemonize no

If you run Redis from upstart or systemd, Redis can interact with your

supervision tree. Options:

supervised no - no supervision interaction

supervised upstart - signal upstart by putting Redis into SIGSTOP mode

supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET

supervised auto - detect upstart or systemd method based on

UPSTART_JOB or NOTIFY_SOCKET environment variables

Note: these supervision methods only signal "process is ready."

They do not enable continuous liveness pings back to your supervisor.

supervised no

啟用守護(hù)進(jìn)程模式時(shí)敲街,會(huì)生成該文件团搞。

pidfile /var/run/redis_6379.pid

指定日志級(jí)別

日志級(jí)別有以下選項(xiàng):

debug (適用于開發(fā)/測試)

verbose (很少但很有用的信息)

notice (信息適中熙兔,推薦選項(xiàng))

warning (只記錄非常重要/關(guān)鍵的消息)

loglevel notice

指定保存日志的文件沧卢。請(qǐng)注意,如果您使用標(biāo)準(zhǔn)輸出進(jìn)行日志記錄堕汞,守護(hù)進(jìn)程情況下峻黍,日志將發(fā)送到/dev/null

logfile ""

要啟用日志記錄到系統(tǒng)記錄器梢莽,只需將“syslog-enabled”設(shè)置為yes,并可選擇更新其他syslog參數(shù)以滿足您的需要奸披。

syslog-enabled no

指定syslog標(biāo)識(shí)昏名。

syslog-ident redis

指定syslog工具。 必須是USER或LOCAL0-LOCAL7之間阵面。

syslog-facility local0

設(shè)置數(shù)據(jù)庫數(shù)量轻局,默認(rèn)為16. 默認(rèn)數(shù)據(jù)庫是 DB 0, 你可以使用 SELECT <dbid> 選擇使用的數(shù)據(jù)庫。

數(shù)據(jù)庫編號(hào)在 0 到 'databases'-1

databases 16

啟動(dòng)日志中是否顯示redis logo样刷,默認(rèn)是開啟的

always-show-logo yes

################################ SNAPSHOTTING ################################

數(shù)據(jù)持久化:

save <seconds> <changes>

指定時(shí)間間隔后仑扑,如果數(shù)據(jù)變化達(dá)到指定次數(shù),則導(dǎo)出生成快照文件

示例如下:

900 秒(15 分鐘)內(nèi)至少有1個(gè)key被修改

300 秒(5分鐘)內(nèi)至少有10個(gè)key被修改

60 秒(1分鐘)內(nèi)至少有10000個(gè)key被修改

如果指定 save ""置鼻,則相當(dāng)于清除前面指定的所有 save 設(shè)置

save ""

save 900 1
save 300 10
save 60 10000

在啟用快照的情況下(指定了有效的 save)镇饮,如果遇到某次快照生成失敗(比如目錄無權(quán)限),

之后的數(shù)據(jù)修改就會(huì)被禁止箕母。這有利于用戶及早發(fā)現(xiàn)快照保存失敗储藐,以免更多的數(shù)據(jù)不能持久化而丟失的風(fēng)險(xiǎn)。

當(dāng)快照恢復(fù)正常后嘶是,數(shù)據(jù)的修改會(huì)自動(dòng)開啟钙勃。

如果你有其他的持久化監(jiān)控,你可以關(guān)閉本機(jī)制聂喇。

stop-writes-on-bgsave-error yes

快照中字符串值是否壓縮

rdbcompression yes

如果開啟辖源,校驗(yàn)和會(huì)被放在文件尾部。這將使快照數(shù)據(jù)更可靠,但會(huì)在快照生成與加載時(shí)降低大約 10% 的性能克饶,追求高性能時(shí)可關(guān)閉該功能酝蜒。

rdbchecksum yes

指定保存快照文件的名稱

dbfilename dump.rdb

指定保存快照文件的目錄,AOF(Append Only File) 文件也會(huì)生成到該目錄

dir ./

################################# REPLICATION #################################

主從復(fù)制矾湃。 使用 replicaof 使Redis實(shí)例成為另一臺(tái)Redis服務(wù)器的副本秕硝。

+------------------+ +---------------+

| Master | ---> | Replica |

| (receive writes) | | (exact copy) |

+------------------+ +---------------+

1) Redis復(fù)制是異步的,但是如果master與一定數(shù)量的副本無法連接洲尊,則可以將主服務(wù)器配置為停止接受寫入。

2) 如果再較短時(shí)間內(nèi)與副本失去了連接奈偏,當(dāng)Redis副本與master重新連接時(shí)可以執(zhí)行部分重新同步坞嘀。因此就要求配置一個(gè)合理的 backlog 值。

3) 當(dāng)副本節(jié)點(diǎn)重新連接到master時(shí)惊来,重新同步復(fù)制時(shí)自動(dòng)的丽涩,不需要用戶干預(yù)。

replicaof <masterip> <masterport>

如果主服務(wù)器受密碼保護(hù)(使用下面的“requirepass”配置指令)裁蚁,則可以在啟動(dòng)復(fù)制同步過程之前告知副本服務(wù)器進(jìn)行身份驗(yàn)證矢渊,否則主服務(wù)器將拒絕副本服務(wù)器請(qǐng)求。

masterauth <master-password>

當(dāng)從庫與主庫連接中斷枉证,或者主從同步正在進(jìn)行時(shí)矮男,如果有客戶端向從庫讀取數(shù)據(jù):

- yes: 從庫答復(fù)現(xiàn)有數(shù)據(jù),可能是舊數(shù)據(jù)(初始從未修改的值則為空值)

- no: 從庫報(bào)錯(cuò)“正在從主庫同步”

replica-serve-stale-data yes

從庫只允許讀取

replica-read-only yes

無盤同步

-------------------------------------------------------

WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY

-------------------------------------------------------

新連接(包括連接中斷后重連)的從庫不可采用增量同步室谚,只能采用全量同步(RDB文件由主庫傳給從庫)毡鉴,有兩種傳遞方式:

- 磁盤形式:主庫創(chuàng)建子進(jìn)程,子進(jìn)程寫入磁盤 RDB 文件秒赤,再由父進(jìn)程立即傳給從庫猪瞬;

- 無磁盤形式:主庫創(chuàng)建子進(jìn)程,子進(jìn)程把 RDB 文件直接寫入從庫的 SOCKET 連接入篮。

repl-diskless-sync no

無盤同步傳輸間隔(秒)

repl-diskless-sync-delay 5

從庫向主庫PING的間隔(秒)

repl-ping-replica-period 10

以下選項(xiàng)設(shè)置復(fù)制超時(shí):

1) 從副本的角度來看陈瘦,在SYNC期間批量傳輸I / O.

2) 從副本(data,ping)的角度來看master超時(shí)潮售。

3) 從主服務(wù)器的角度來看副本超時(shí)(REPLCONF ACK ping)痊项。

確保此值大于為repl-ping-replica-period指定的值非常重要,否則每次主服務(wù)器和副本服務(wù)器之間的流量較低時(shí)都會(huì)檢測到超時(shí)酥诽。

repl-timeout 60

在SYNC之后禁用副本套接字上的TCP_NODELAY线婚?

如果選擇“yes”,Redis將使用較少數(shù)量的TCP數(shù)據(jù)包和較少的帶寬將數(shù)據(jù)發(fā)送到副本盆均。 但這可能會(huì)增加數(shù)據(jù)在副本端出現(xiàn)的延遲塞弊,使用默認(rèn)配置的Linux內(nèi)核最多可達(dá)40毫秒。

如果選擇“no”,則副本上顯示的數(shù)據(jù)延遲將減少游沿,但將使用更多帶寬進(jìn)行復(fù)制饰抒。

默認(rèn)情況下,我們針對(duì)低延遲進(jìn)行優(yōu)化诀黍,但是在非常高的流量條件下袋坑,或者當(dāng)主節(jié)點(diǎn)和副本很多時(shí),將其設(shè)置為 yes 或許是較好的選擇

repl-disable-tcp-nodelay no

設(shè)置復(fù)制積壓大忻泄础(backlog)枣宫。 積壓是一個(gè)緩沖區(qū),當(dāng)副本斷開連接一段時(shí)間后會(huì)累積副本數(shù)據(jù)吃环,因此當(dāng)副本想要再次重新連接時(shí)也颤,通常不需要完全重新同步,只需要部分重新同步就足夠了

復(fù)制backlog越大郁轻,副本可以斷開連接的時(shí)間越長翅娶。

repl-backlog-size 1mb

當(dāng)master與副本節(jié)點(diǎn)斷開時(shí)間超過指定時(shí)間后,將釋放復(fù)制積壓緩沖區(qū)(backlog)

如果設(shè)置為0好唯,表示一直不釋放復(fù)制積壓緩沖區(qū)

repl-backlog-ttl 3600

副本優(yōu)先級(jí)竭沫,哨兵模式下,如果主服務(wù)器不再正常工作骑篙,Redis Sentinel 將優(yōu)先使用它來選擇要升級(jí)為主服務(wù)器的副本蜕提。

值越低,優(yōu)先級(jí)越高

優(yōu)先級(jí)為0會(huì)將副本標(biāo)記為無法擔(dān)任master的角色靶端,因此Redis Sentinel永遠(yuǎn)不會(huì)選擇優(yōu)先級(jí)為0的副本進(jìn)行升級(jí)贯溅。

默認(rèn)情況下,優(yōu)先級(jí)為100躲查。

replica-priority 100

如果可用連接的副本數(shù)少于N個(gè)它浅,并且延遲小于或等于M秒,則master停止接受寫入镣煮。

以秒為單位的延遲(必須<=指定值)是根據(jù)從副本接收的最后一次ping計(jì)算的姐霍,通常每秒發(fā)送一次。

例如典唇,要求至少3個(gè)在線且滯后時(shí)間<= 10秒的副本:

min-replicas-to-write 3

min-replicas-max-lag 10

以上兩個(gè)屬性镊折,任意一個(gè)設(shè)置為0,都會(huì)禁用該功能介衔。

默認(rèn)情況下恨胚,min-replicas-to-write設(shè)置為0(功能已禁用),min-replicas-max-lag設(shè)置為10炎咖。

當(dāng)使用端口轉(zhuǎn)發(fā)或網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)時(shí)赃泡,實(shí)際上可以通過不同的IP和端口對(duì)副本進(jìn)行訪問寒波。

副本可以使用以下兩個(gè)選項(xiàng),向其主服務(wù)器報(bào)告一組特定的IP和端口升熊。

如果只需要覆蓋端口或IP地址俄烁,則無需使用這兩個(gè)選項(xiàng)。

replica-announce-ip 5.5.5.5

replica-announce-port 1234

################################## SECURITY ###################################

設(shè)置redis訪問密碼

requirepass foobared

命令重命名.

對(duì)于一些敏感的命令级野,不希望任意客戶端都可以執(zhí)行页屠,可以改掉默認(rèn)的名字,新名字只告知特定的客戶端來執(zhí)行蓖柔。

可以命令改名:rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

可以禁用命令:rename-command CONFIG ""辰企,即新名稱為空串。

需要注意的是况鸣,命令改名保存至 AOF 文件或傳輸至從庫牢贸,可能導(dǎo)致問題。

rename-command CONFIG ""

################################### CLIENTS ####################################

同一時(shí)刻最多可以接納的客戶端數(shù)目(Redis 服務(wù)要占用其中的大約 32 個(gè)文件描述符)懒闷。

如果客戶端連接數(shù)達(dá)到該上限,新來客戶端將被告知“已達(dá)到最大客戶端連接數(shù)”栈幸。

maxclients 10000

############################## MEMORY MANAGEMENT ################################

內(nèi)存使用上限

當(dāng)內(nèi)存達(dá)到上限時(shí)愤估,Redis 將使用指定的策略清除其他鍵值。

如果 Redis 無法清除(或者策略不允許清除鍵值)速址,將對(duì)占用內(nèi)存的命令報(bào)錯(cuò)玩焰,但對(duì)只讀的命令正常服務(wù)。

maxmemory <bytes>

- volatile-lru: 針對(duì)到期的鍵值芍锚,采取 LRU 策略昔园;

- volatile-lfu: 針對(duì)到期的鍵值,采取 LFU 策略并炮;

- volatile-random: 針對(duì)到期的鍵值默刚,采取隨機(jī)策略;

- allkeys-lru: 針對(duì)所有鍵值逃魄,采取 LRU 策略荤西;

- allkeys-lfu: 針對(duì)所有鍵值,采取 LFU 策略伍俘;

- allkeys-random: 針對(duì)所有鍵值邪锌,采取隨機(jī)策略;

- volatile-ttl: 刪除最近到期的key(次要TTL)

- noeviction: 不清除任何內(nèi)容癌瘾,只是在寫入操作時(shí)報(bào)錯(cuò)觅丰。

LRU表示最近最少使用

LFU意味著最少使用

LRU,LFU和volatile-ttl都是使用近似隨機(jī)算法實(shí)現(xiàn)的妨退。

默認(rèn)值是:noeviction

maxmemory-policy noeviction

清除鍵值時(shí)取樣數(shù)量

LRU妇萄,LFU和最小TTL算法不是精確的算法蜕企,而是近似算法(為了節(jié)省內(nèi)存),因此您可以調(diào)整它以獲得速度或精度嚣伐。

默認(rèn)情況下糖赔,Redis將檢查五個(gè)鍵并選擇最近使用的鍵,您可以使用以下配置指令更改樣本大小轩端。

默認(rèn)值為5會(huì)產(chǎn)生足夠好的結(jié)果放典。 10:近似非常接近真實(shí)的LRU但成本更高的CPU。 3:更快但不是很準(zhǔn)確基茵。

maxmemory-samples 5

從Redis 5開始奋构,默認(rèn)情況下,副本將忽略其maxmemory設(shè)置(除非在故障轉(zhuǎn)移后或手動(dòng)將其提升為主設(shè)備)拱层。

這意味著key的清除將由主服務(wù)器處理弥臼,當(dāng)主服務(wù)器中的key清除時(shí),將DEL命令發(fā)送到副本根灯。

此行為可確保主服務(wù)器和副本服務(wù)器保持一致径缅,但是如果您的副本服務(wù)器是可寫的,或者您希望副本服務(wù)器具有不同的內(nèi)存設(shè)置烙肺,

并且您確定對(duì)副本服務(wù)器執(zhí)行的所有寫操作都是冪等的纳猪, 然后你可以改變這個(gè)默認(rèn)值(但一定要明白你在做什么)。

replica-ignore-maxmemory yes

############################# LAZY FREEING ####################################

lazy free 為惰性刪除或延遲釋放桃笙;

當(dāng)刪除鍵的時(shí)候,redis提供異步延時(shí)釋放key內(nèi)存的功能氏堤,

把key釋放操作放在bio(Background I/O)單獨(dú)的子線程處理中,

減少刪除big key對(duì)redis主線程的阻塞搏明。有效地避免刪除big key帶來的性能和可用性問題鼠锈。

lazy free的使用分為2類:第一類是與DEL命令對(duì)應(yīng)的主動(dòng)刪除,第二類是過期key刪除星著。

針對(duì)redis內(nèi)存使用達(dá)到maxmeory购笆,并設(shè)置有淘汰策略時(shí);在被動(dòng)淘汰鍵時(shí)虚循,是否采用lazy free機(jī)制由桌;

lazyfree-lazy-eviction no

針對(duì)設(shè)置有TTL的鍵,達(dá)到過期后邮丰,被redis清理刪除時(shí)是否采用lazy free機(jī)制行您;

lazyfree-lazy-expire no

針對(duì)有些指令在處理已存在的鍵時(shí),會(huì)帶有一個(gè)隱式的DEL鍵的操作剪廉。如rename命令娃循,當(dāng)目標(biāo)鍵已存在,redis會(huì)先刪除目標(biāo)鍵,如果這些目標(biāo)鍵是一個(gè)big key,那就會(huì)引入阻塞刪除的性能問題

lazyfree-lazy-server-del no

針對(duì)slave進(jìn)行全量數(shù)據(jù)同步斗蒋,slave在加載master的RDB文件前捌斧,會(huì)運(yùn)行flushall來清理自己的數(shù)據(jù)場景笛质,

replica-lazy-flush no

############################## APPEND ONLY MODE ###############################

可以同時(shí)啟用AOF和RDB持久性而不會(huì)出現(xiàn)問題。 如果在啟動(dòng)時(shí)檢查到啟用了AOF捞蚂,Redis將優(yōu)先加載AOF妇押。

AOF 持久化機(jī)制默認(rèn)是關(guān)閉的

appendonly no

AOF持久化文件名稱默認(rèn)為 appendonly.aof

appendfilename "appendonly.aof"

fsync() 調(diào)用會(huì)告訴操作系統(tǒng)將緩沖區(qū)的數(shù)據(jù)同步到磁盤,可取三種值:always姓迅、everysec和no敲霍。

always:實(shí)時(shí)會(huì)極大消弱Redis的性能,因?yàn)檫@種模式下每次write后都會(huì)調(diào)用fsync丁存。

no:write后不會(huì)有fsync調(diào)用肩杈,由操作系統(tǒng)自動(dòng)調(diào)度刷磁盤,性能是最好的解寝。

everysec:每秒調(diào)用一次fsync(默認(rèn))

appendfsync always

appendfsync everysec

appendfsync no

在AOF文件 rewrite期間,是否對(duì)aof新記錄的append暫緩使用文件同步策略,主要考慮磁盤IO開支和請(qǐng)求阻塞時(shí)間扩然。默認(rèn)為no,表示"不暫緩",新的aof記錄仍然會(huì)被立即同步

no-appendfsync-on-rewrite no

當(dāng)AOF增長超過指定比例時(shí),重寫AOF文件聋伦,設(shè)置為0表示不自動(dòng)重寫AOF文件夫偶,重寫是為了使aof體積保持最小,而確保保存最完整的數(shù)據(jù)觉增。

這里表示增長一倍

auto-aof-rewrite-percentage 100

觸發(fā)aof rewrite的最小文件大小兵拢,這里表示,文件大小最小64mb才會(huì)觸發(fā)重寫機(jī)制

auto-aof-rewrite-min-size 64mb

AOF文件可能在尾部是不完整的抑片。那redis重啟時(shí)load進(jìn)內(nèi)存的時(shí)候就有問題了卵佛。

如果選擇的是yes杨赤,當(dāng)截?cái)嗟腶of文件被導(dǎo)入的時(shí)候敞斋,會(huì)自動(dòng)發(fā)布一個(gè)log給客戶端然后load。如果是no疾牲,用戶必須手動(dòng)redis-check-aof修復(fù)AOF文件才可以植捎。默認(rèn)值為 yes。

aof-load-truncated yes

開啟混合持久化

redis保證RDB轉(zhuǎn)儲(chǔ)跟AOF重寫不會(huì)同時(shí)進(jìn)行阳柔。

當(dāng)redis啟動(dòng)時(shí)焰枢,即便RDB和AOF持久化同時(shí)啟用且AOF,RDB文件都存在舌剂,則redis總是會(huì)先加載AOF文件济锄,這是因?yàn)锳OF文件被認(rèn)為能夠更好的保證數(shù)據(jù)一致性,

當(dāng)加載AOF文件時(shí)霍转,如果啟用了混合持久化荐绝,那么redis將首先檢查AOF文件的前綴,如果前綴字符是REDIS避消,那么該AOF文件就是混合格式的低滩,redis服務(wù)器會(huì)先加載RDB部分召夹,然后再加載AOF部分。

aof-use-rdb-preamble yes

################################ LUA SCRIPTING ###############################

Lua腳本執(zhí)行超時(shí)時(shí)間

設(shè)置成0或者負(fù)值表示不限時(shí)

lua-time-limit 5000

################################ REDIS CLUSTER ###############################

開啟集群功能恕沫,此redis實(shí)例作為集群的一個(gè)節(jié)點(diǎn)

cluster-enabled yes

集群配置文件

此配置文件不能人工編輯监憎,它是集群節(jié)點(diǎn)自動(dòng)維護(hù)的文件,主要用于記錄集群中有哪些節(jié)點(diǎn)婶溯、他們的狀態(tài)以及一些持久化參數(shù)等鲸阔,方便在重啟時(shí)恢復(fù)這些狀態(tài)。通常是在收到請(qǐng)求之后這個(gè)文件就會(huì)被更新

cluster-config-file nodes-6379.conf

集群中的節(jié)點(diǎn)能夠失聯(lián)的最大時(shí)間爬虱,超過這個(gè)時(shí)間隶债,該節(jié)點(diǎn)就會(huì)被認(rèn)為故障。如果主節(jié)點(diǎn)超過這個(gè)時(shí)間還是不可達(dá)跑筝,則用它的從節(jié)點(diǎn)將啟動(dòng)故障遷移死讹,升級(jí)成主節(jié)點(diǎn)

cluster-node-timeout 15000

如果設(shè)置成0,則無論從節(jié)點(diǎn)與主節(jié)點(diǎn)失聯(lián)多久曲梗,從節(jié)點(diǎn)都會(huì)嘗試升級(jí)成主節(jié)點(diǎn)赞警。

如果設(shè)置成正數(shù),則cluster-node-timeout*cluster-slave-validity-factor得到的時(shí)間虏两,是從節(jié)點(diǎn)與主節(jié)點(diǎn)失聯(lián)后愧旦,

此從節(jié)點(diǎn)數(shù)據(jù)有效的最長時(shí)間,超過這個(gè)時(shí)間定罢,從節(jié)點(diǎn)不會(huì)啟動(dòng)故障遷移笤虫。

假設(shè)cluster-node-timeout=5,cluster-slave-validity-factor=10祖凫,則如果從節(jié)點(diǎn)跟主節(jié)點(diǎn)失聯(lián)超過50秒琼蚯,此從節(jié)點(diǎn)不能成為主節(jié)點(diǎn)。

注意惠况,如果此參數(shù)配置為非0遭庶,將可能出現(xiàn)由于某主節(jié)點(diǎn)失聯(lián)卻沒有從節(jié)點(diǎn)能頂上的情況,從而導(dǎo)致集群不能正常工作稠屠,

在這種情況下峦睡,只有等到原來的主節(jié)點(diǎn)重新回歸到集群,集群才恢復(fù)運(yùn)作权埠。

cluster-replica-validity-factor 10

主節(jié)點(diǎn)需要的最小從節(jié)點(diǎn)數(shù)榨了,只有達(dá)到這個(gè)數(shù),主節(jié)點(diǎn)失敗時(shí)攘蔽,從節(jié)點(diǎn)才會(huì)進(jìn)行遷移龙屉。

cluster-migration-barrier 1

在部分key所在的節(jié)點(diǎn)不可用時(shí),如果此參數(shù)設(shè)置為"yes"(默認(rèn)值), 則整個(gè)集群停止接受操作秩彤;

如果此參數(shù)設(shè)置為”no”叔扼,則集群依然為可達(dá)節(jié)點(diǎn)上的key提供讀操作事哭。

cluster-require-full-coverage yes

在主節(jié)點(diǎn)失效期間,從節(jié)點(diǎn)不允許對(duì)master失效轉(zhuǎn)移

cluster-replica-no-failover no

########################## CLUSTER DOCKER/NAT support ########################

默認(rèn)情況下,Redis會(huì)自動(dòng)檢測自己的IP和從配置中獲取綁定的PORT瓜富,告訴客戶端或者是其他節(jié)點(diǎn)鳍咱。

而在Docker環(huán)境中,如果使用的不是host網(wǎng)絡(luò)模式与柑,在容器內(nèi)部的IP和PORT都是隔離的谤辜,那么客戶端和其他節(jié)點(diǎn)無法通過節(jié)點(diǎn)公布的IP和PORT建立連接。

如果開啟以下配置价捧,Redis節(jié)點(diǎn)會(huì)將配置中的這些IP和PORT告知客戶端或其他節(jié)點(diǎn)丑念。而這些IP和PORT是通過Docker轉(zhuǎn)發(fā)到容器內(nèi)的臨時(shí)IP和PORT的。

Example:

cluster-announce-ip 10.1.1.5

cluster-announce-port 6379

cluster-announce-bus-port 6380

################################## SLOW LOG ###################################

執(zhí)行時(shí)間大于slowlog-log-slower-than的才會(huì)定義成慢查詢结蟋,才會(huì)被slow-log記錄

這里的單位是微秒脯倚,默認(rèn)是 10ms

slowlog-log-slower-than 10000

慢查詢最大的條數(shù),當(dāng)slowlog超過設(shè)定的最大值后嵌屎,會(huì)將最早的slowlog刪除推正,是個(gè)FIFO隊(duì)列

slowlog-max-len 128

################################ LATENCY MONITOR ##############################

Redis延遲監(jiān)視子系統(tǒng)在運(yùn)行時(shí)對(duì)不同的操作進(jìn)行采樣,以便收集可能導(dǎo)致延時(shí)的數(shù)據(jù)根源宝惰。

通過LATENCY命令植榕,可以打印圖表并獲取報(bào)告。

系統(tǒng)僅記錄在等于或大于 latency-monitor-threshold 指定的毫秒數(shù)的時(shí)間內(nèi)執(zhí)行的操作尼夺。 當(dāng)其值設(shè)置為0時(shí)尊残,將關(guān)閉延遲監(jiān)視器。

默認(rèn)情況下淤堵,延遲監(jiān)視被禁用寝衫,因?yàn)槿绻鷽]有延遲問題,則通常不需要延遲監(jiān)視粘勒,并且收集數(shù)據(jù)會(huì)對(duì)性能產(chǎn)生影響竞端,雖然非常小屎即。

如果需要庙睡,可以使用命令“CONFIG SET latency-monitor-threshold <milliseconds>”在運(yùn)行時(shí)輕松啟用延遲監(jiān)視。

latency-monitor-threshold 0

############################# EVENT NOTIFICATION ##############################

Redis可以向Pub / Sub客戶端通知鍵空間發(fā)生的事件技俐。

例如乘陪,如果啟用了鍵空間事件通知,并且客戶端對(duì)存儲(chǔ)在數(shù)據(jù)庫0中的鍵 foo 執(zhí)行DEL操作雕擂,則將通過Pub / Sub發(fā)布兩條消息:

PUBLISH keyspace@0:foo del

PUBLISH keyevent@0:del foo

以 keyspace 為前綴的頻道被稱為鍵空間通知(key-space notification)啡邑, 而以 keyevent 為前綴的頻道則被稱為鍵事件通知(key-event notification)。

It is possible to select the events that Redis will notify among a set

of classes. Every class is identified by a single character:

K 鍵空間通知井赌,所有通知以 keyspace@<db> 為前綴.

E 鍵事件通知谤逼,所有通知以 keyevent@<db> 為前綴

g DEL 贵扰、 EXPIRE 、 RENAME 等類型無關(guān)的通用命令的通知

$ 字符串命令的通知

l 列表命令的通知

s 集合命令的通知

h 哈希命令的通知

z 有序集合命令的通知

x 過期事件:每當(dāng)有過期鍵被刪除時(shí)發(fā)送

e 驅(qū)逐(evict)事件:每當(dāng)有鍵因?yàn)?maxmemory 策略而被刪除時(shí)發(fā)送

A 參數(shù) g$lshzxe 的別名

輸入的參數(shù)中至少要有一個(gè) K 或者 E 流部, 否則的話戚绕, 不管其余的參數(shù)是什么, 都不會(huì)有任何通知被分發(fā)枝冀。

如果只想訂閱鍵空間中和列表相關(guān)的通知舞丛, 那么參數(shù)就應(yīng)該設(shè)為 Kl。將參數(shù)設(shè)為字符串 "AKE" 表示發(fā)送所有類型的通知果漾。

notify-keyspace-events ""

############################### ADVANCED CONFIG ###############################

hash類型的數(shù)據(jù)結(jié)構(gòu)在編碼上可以使用ziplist和hashtable球切。

ziplist的特點(diǎn)就是文件存儲(chǔ)(以及內(nèi)存存儲(chǔ))所需的空間較小,在內(nèi)容較小時(shí),性能和hashtable幾乎一樣。

因此redis對(duì)hash類型默認(rèn)采取ziplist绒障。如果hash中條目個(gè)數(shù)或者value長度達(dá)到閥值,內(nèi)部編碼將使用hashtable吨凑。

這個(gè)參數(shù)指的是ziplist中允許存儲(chǔ)的最大條目個(gè)數(shù),默認(rèn)為512户辱,建議為128

hash-max-ziplist-entries 512

ziplist中允許條目value值最大字節(jié)數(shù)怀骤,默認(rèn)為64,建議為1024

hash-max-ziplist-value 64

當(dāng)取正值的時(shí)候焕妙,表示按照數(shù)據(jù)項(xiàng)個(gè)數(shù)來限定每個(gè)quicklist節(jié)點(diǎn)上的ziplist長度蒋伦。比如,當(dāng)這個(gè)參數(shù)配置成5的時(shí)候焚鹊,表示每個(gè)quicklist節(jié)點(diǎn)的ziplist最多包含5個(gè)數(shù)據(jù)項(xiàng)痕届。

當(dāng)取負(fù)值的時(shí)候,表示按照占用字節(jié)數(shù)來限定每個(gè)quicklist節(jié)點(diǎn)上的ziplist長度末患。這時(shí)研叫,它只能取-1到-5這五個(gè)值

-5: max size: 64 Kb <-- not recommended for normal workloads

-4: max size: 32 Kb <-- not recommended

-3: max size: 16 Kb <-- probably not recommended

-2: max size: 8 Kb <-- good

-1: max size: 4 Kb <-- good

性能最高的選項(xiàng)通常為-2(8 Kb大小)或-1(4 Kb大需嫡搿)嚷炉。

list-max-ziplist-size -2

一個(gè)quicklist兩端不被壓縮的節(jié)點(diǎn)個(gè)數(shù)

參數(shù)list-compress-depth的取值含義如下:

0: 表示都不壓縮。這是Redis的默認(rèn)值

1: 表示quicklist兩端各有1個(gè)節(jié)點(diǎn)不壓縮探橱,中間的節(jié)點(diǎn)壓縮申屹。

So: [head]->node->node->...->node->[tail]

[head], [tail] 不壓縮; 內(nèi)部節(jié)點(diǎn)將被壓縮.

2: [head]->[next]->node->node->...->node->[prev]->[tail]

2:表示quicklist兩端各有2個(gè)節(jié)點(diǎn)不壓縮,中間的節(jié)點(diǎn)壓縮

3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail]

3: 表示quicklist兩端各有3個(gè)節(jié)點(diǎn)不壓縮隧膏,中間的節(jié)點(diǎn)壓縮哗讥。

etc.

list-compress-depth 0

數(shù)據(jù)量小于等于512用intset,大于512用set

set-max-intset-entries 512

數(shù)據(jù)量小于等于zset-max-ziplist-entries用ziplist胞枕,大于zset-max-ziplist-entries用zset

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

value大小小于等于hll-sparse-max-bytes使用稀疏數(shù)據(jù)結(jié)構(gòu)(sparse)

大于hll-sparse-max-bytes使用稠密的數(shù)據(jù)結(jié)構(gòu)(dense)杆煞,一個(gè)比16000大的value是幾乎沒用的,

建議的value大概為3000。如果對(duì)CPU要求不高决乎,對(duì)空間要求較高的队询,建議設(shè)置到10000左右

hll-sparse-max-bytes 3000

Streams宏節(jié)點(diǎn)最大大小。流數(shù)據(jù)結(jié)構(gòu)是基數(shù)編碼內(nèi)部多個(gè)項(xiàng)目的大節(jié)點(diǎn)樹构诚。使用此配置

可以配置單個(gè)節(jié)點(diǎn)的字節(jié)數(shù)娘摔,以及切換到新節(jié)點(diǎn)之前可能包含的最大項(xiàng)目數(shù)

追加新的流條目。如果以下任何設(shè)置設(shè)置為0唤反,忽略限制凳寺,因此例如可以設(shè)置一個(gè)

大入口限制將max-bytes設(shè)置為0,將max-entries設(shè)置為所需的值

stream-node-max-bytes 4096
stream-node-max-entries 100

主動(dòng)重新散列每100毫秒CPU時(shí)間使用1毫秒彤侍,以幫助重新散列主Redis散列表(將頂級(jí)鍵映射到值)肠缨。

Redis使用的散列表實(shí)現(xiàn)(請(qǐng)參閱dict.c)執(zhí)行延遲重新散列:您在重新散列的散列表中運(yùn)行的操作越多,執(zhí)行的重復(fù)“步驟”就越多盏阶,

因此如果服務(wù)器處于空閑狀態(tài)晒奕,則重新散列將永遠(yuǎn)不會(huì)完成 哈希表使用了一些內(nèi)存。

activerehashing yes

對(duì)客戶端輸出緩沖進(jìn)行限制可以強(qiáng)迫那些不從服務(wù)器讀取數(shù)據(jù)的客戶端斷開連接名斟,用來強(qiáng)制關(guān)閉傳輸緩慢的客戶端脑慧。

對(duì)于normal client,第一個(gè)0表示取消hard limit砰盐,第二個(gè)0和第三個(gè)0表示取消soft limit闷袒,normal client默認(rèn)取消限制

client-output-buffer-limit normal 0 0 0

對(duì)于slave client和MONITER client,如果client-output-buffer一旦超過256mb岩梳,又或者超過64mb持續(xù)60秒囊骤,那么服務(wù)器就會(huì)立即斷開客戶端連接。

client-output-buffer-limit replica 256mb 64mb 60

對(duì)于pubsub client冀值,如果client-output-buffer一旦超過32mb也物,又或者超過8mb持續(xù)60秒,那么服務(wù)器就會(huì)立即斷開客戶端連接列疗。

client-output-buffer-limit pubsub 32mb 8mb 60

客戶端查詢緩沖區(qū)累積新命令滑蚯。 默認(rèn)情況下,它被限制為固定數(shù)量抵栈,以避免協(xié)議失步(例如由于客戶端中的錯(cuò)誤)將導(dǎo)致查詢緩沖區(qū)中的未綁定內(nèi)存使用告材。

但是,如果您有非常特殊的需求竭讳,可以在此配置它创葡,例如我們巨大執(zhí)行請(qǐng)求浙踢。

client-query-buffer-limit 1gb

在Redis協(xié)議中绢慢,批量請(qǐng)求(即表示單個(gè)字符串的元素)通常限制為512 MB。 但是,您可以在此更改此限制胰舆。

proto-max-bulk-len 512mb

Redis調(diào)用內(nèi)部函數(shù)來執(zhí)行許多后臺(tái)任務(wù)骚露,例如在超時(shí)時(shí)關(guān)閉客戶端的連接,清除從未請(qǐng)求過期的過期密鑰等等缚窿。

并非所有任務(wù)都以相同的頻率執(zhí)行棘幸,但Redis會(huì)根據(jù)指定的“hz”值檢查要執(zhí)行的任務(wù)。

默認(rèn)情況下倦零,hz設(shè)置為10.提高值時(shí)误续,在Redis處于空閑狀態(tài)下,將使用更多CPU

但同時(shí)扫茅,當(dāng)有很多鍵同時(shí)到期時(shí)蹋嵌,Redis會(huì)響應(yīng)更快,并且可以更精確地處理超時(shí)葫隙。

范圍介于1到500之間栽烂,但超過100的值通常不是一個(gè)好主意。 大多數(shù)用戶應(yīng)使用默認(rèn)值10恋脚,除非僅在需要非常低延遲的環(huán)境中將此值提高到100腺办。

hz 10

通常,推薦使HZ的值與連接的客戶端數(shù)量成比例糟描。這有助于避免為每個(gè)后臺(tái)任務(wù)調(diào)用處理太多客戶端怀喉,以避免延遲峰值。

默認(rèn)情況下默認(rèn)的HZ值為10船响。Redis 提供并啟用自適應(yīng)HZ值的功能磺送,當(dāng)有很多連接的客戶端時(shí),該值會(huì)臨時(shí)增加灿意。

啟用動(dòng)態(tài)HZ時(shí)估灿,實(shí)際配置的HZ將用作基線,但是一旦連接了更多客戶端缤剧,將根據(jù)實(shí)際需要使用配置的HZ值的倍數(shù)馅袁。

通過這種方式,空閑實(shí)例將使用非常少的CPU時(shí)間荒辕,而繁忙的實(shí)例將更具響應(yīng)性汗销。

dynamic-hz yes

當(dāng)一個(gè)子進(jìn)程重寫AOF文件時(shí),如果啟用下面的選項(xiàng)抵窒,則文件每生成32M數(shù)據(jù)會(huì)被同步弛针。

aof-rewrite-incremental-fsync yes

當(dāng)redis保存RDB文件時(shí),如果啟用了以下選項(xiàng)李皇,則每生成32 MB數(shù)據(jù)將對(duì)文件進(jìn)行fsync削茁。 這對(duì)于以遞增方式將文件提交到磁盤并避免大延遲峰值非常有用。

rdb-save-incremental-fsync yes

可以調(diào)整Redis LFU(參見maxmemory設(shè)置)。 但是茧跋,最好使用默認(rèn)設(shè)置慰丛,僅在調(diào)查如何改進(jìn)性能以及LFU如何隨時(shí)間變化后更改它們,這可以通過OBJECT FREQ命令進(jìn)行檢查瘾杭。

Redis LFU實(shí)現(xiàn)中有兩個(gè)可調(diào)參數(shù):計(jì)數(shù)器對(duì)數(shù)因子和計(jì)數(shù)器衰減時(shí)間诅病。 在更改它們之前,了解這兩個(gè)參數(shù)的含義非常重要粥烁。

LFU計(jì)數(shù)器每個(gè)鍵只有8位贤笆,它的最大值是255,因此Redis使用具有對(duì)數(shù)行為的概率增量讨阻。 給定舊計(jì)數(shù)器的值苏潜,當(dāng)訪問密鑰時(shí),計(jì)數(shù)器以這種方式遞增:

1. A random number R between 0 and 1 is extracted.

2. A probability P is calculated as 1/(old_value*lfu_log_factor+1).

3. The counter is incremented only if R < P.

The default lfu-log-factor is 10. This is a table of how the frequency

counter changes with a different number of accesses with different

logarithmic factors:

+--------+------------+------------+------------+------------+------------+

| factor | 100 hits | 1000 hits | 100K hits | 1M hits | 10M hits |

+--------+------------+------------+------------+------------+------------+

| 0 | 104 | 255 | 255 | 255 | 255 |

+--------+------------+------------+------------+------------+------------+

| 1 | 18 | 49 | 255 | 255 | 255 |

+--------+------------+------------+------------+------------+------------+

| 10 | 10 | 18 | 142 | 255 | 255 |

+--------+------------+------------+------------+------------+------------+

| 100 | 8 | 11 | 49 | 143 | 255 |

+--------+------------+------------+------------+------------+------------+

NOTE: The above table was obtained by running the following commands:

redis-benchmark -n 1000000 incr foo

redis-cli object freq foo

NOTE 2: The counter initial value is 5 in order to give new objects a chance

to accumulate hits.

The counter decay time is the time, in minutes, that must elapse in order

for the key counter to be divided by two (or decremented if it has a value

less <= 10).

The default value for the lfu-decay-time is 1. A Special value of 0 means to

decay the counter every time it happens to be scanned.

lfu-log-factor 10

lfu-decay-time 1

########################### ACTIVE DEFRAGMENTATION #######################

WARNING THIS FEATURE IS EXPERIMENTAL. However it was stress tested

even in production and manually tested by multiple engineers for some

time.

What is active defragmentation?

-------------------------------

Active (online) defragmentation allows a Redis server to compact the

spaces left between small allocations and deallocations of data in memory,

thus allowing to reclaim back memory.

Fragmentation is a natural process that happens with every allocator (but

less so with Jemalloc, fortunately) and certain workloads. Normally a server

restart is needed in order to lower the fragmentation, or at least to flush

away all the data and create it again. However thanks to this feature

implemented by Oran Agra for Redis 4.0 this process can happen at runtime

in an "hot" way, while the server is running.

Basically when the fragmentation is over a certain level (see the

configuration options below) Redis will start to create new copies of the

values in contiguous memory regions by exploiting certain specific Jemalloc

features (in order to understand if an allocation is causing fragmentation

and to allocate it in a better place), and at the same time, will release the

old copies of the data. This process, repeated incrementally for all the keys

will cause the fragmentation to drop back to normal values.

Important things to understand:

1. This feature is disabled by default, and only works if you compiled Redis

to use the copy of Jemalloc we ship with the source code of Redis.

This is the default with Linux builds.

2. You never need to enable this feature if you don't have fragmentation

issues.

3. Once you experience fragmentation, you can enable this feature when

needed with the command "CONFIG SET activedefrag yes".

The configuration parameters are able to fine tune the behavior of the

defragmentation process. If you are not sure about what they mean it is

a good idea to leave the defaults untouched.

啟用主動(dòng)碎片整理

activedefrag yes

啟動(dòng)活動(dòng)碎片整理的最小碎片浪費(fèi)量

active-defrag-ignore-bytes 100mb

啟動(dòng)碎片整理的最小碎片百分比

active-defrag-threshold-lower 10

使用最大消耗時(shí)的最大碎片百分比

active-defrag-threshold-upper 100

在CPU百分比中進(jìn)行碎片整理的最小消耗

active-defrag-cycle-min 5

在CPU百分比達(dá)到最大值時(shí)变勇,進(jìn)行碎片整理

active-defrag-cycle-max 75

從set / hash / zset / list 掃描的最大字段數(shù)

active-defrag-max-scan-fields 1000

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恤左,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子搀绣,更是在濱河造成了極大的恐慌飞袋,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件链患,死亡現(xiàn)場離奇詭異巧鸭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)麻捻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門纲仍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贸毕,你說我怎么就攤上這事郑叠。” “怎么了明棍?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵乡革,是天一觀的道長。 經(jīng)常有香客問我摊腋,道長沸版,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任兴蒸,我火速辦了婚禮视粮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘橙凳。我一直安慰自己蕾殴,他們只是感情好笑撞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著区宇,像睡著了一般娃殖。 火紅的嫁衣襯著肌膚如雪值戳。 梳的紋絲不亂的頭發(fā)上议谷,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音堕虹,去河邊找鬼卧晓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赴捞,可吹牛的內(nèi)容都是我干的逼裆。 我是一名探鬼主播昼汗,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼净刮,長吁一口氣:“原來是場噩夢啊……” “哼淆党!你這毒婦竟也來了麻裁?” 一聲冷哼從身側(cè)響起泼诱,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤菜拓,失蹤者是張志新(化名)和其女友劉穎垢夹,沒想到半個(gè)月后宗挥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掰派,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡从诲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了靡羡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片系洛。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖略步,靈堂內(nèi)的尸體忽然破棺而出描扯,到底是詐尸還是另有隱情,我是刑警寧澤趟薄,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布荆烈,位于F島的核電站,受9級(jí)特大地震影響竟趾,放射性物質(zhì)發(fā)生泄漏憔购。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一岔帽、第九天 我趴在偏房一處隱蔽的房頂上張望玫鸟。 院中可真熱鬧,春花似錦犀勒、人聲如沸屎飘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钦购。三九已至檐盟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間押桃,已是汗流浹背葵萎。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唱凯,地道東北人羡忘。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像磕昼,于是被迫代替她去往敵國和親卷雕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容