redis.conf解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# General 通用常见标准化配置
1.Redis默认不是以守护进程的方式运行,可以通过修改配置项,使用yes启用守护进程
daemonize no -> yes

2.当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,
可以通过pidfile制定
pidfile /var/run/redis.pid

3.指定日志级别,Redis总共支持四个级别
debug、verbose、notice、warning, 默认为notice
debug建议开发阶段用notice生产环境用
真的出故障就用warning只打出故障日志
loglevel notice

4.日志的记录方式,默认为标准输出。
如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,
则日志会发送给/dev/null
logfile stdout

5.如果希望日志打印到 syslog 中,也很容易,通过 syslog-enabled 来控制。
syslog-enabled no

6.另外,syslog-ident 还可以指定syslog 里的日志标志,比如:
syslog-ident Redis

7.而且还支持指定 syslog 设备,值可以是 USER 或 LOCAL0-LOCAL7 。
具体可以参考 syslog 服务本身的用法。
syslog-facility local0

8.对于 Redis 来说,可以设置其数据库的总数量,
假如希望一个 Redis 包含16个数据库,那么设置如下:
databases 16

# NETWORK
1.指定Redis监听端口,默认端口为6379, 作者在博客中提到为什么用6379.
因为6379代表MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字。
port 6379

2.绑定的主机地址
bind 127.0.0.1

3.当客户端闲置太长时间后关闭链接,如果指定为0,则表示关闭该功能
(就像qq,30分钟没人给你发消息,你也没发消息,就终端连接减轻服务器负担)
timeout 300

4.tcp-backlog 511(默认511)
backlog其实是一个连接队列,
backlog队列总和=未完成三次握手队列+已经完成三次握手队列
在高并发的情况下,你需要一个高的backlog来避免慢客户端连接的问题,
注意linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值
所以需要确认增大somaxconn和tcp_max_syn_backlog两个值来达到想要的效果。

5.tcp-keepalive
TCP连接保活策略,可以通过 tcp-keepalive 配置项来进行设置,单位为秒,
假如设置为60秒,则 server 端会每60秒向连接空闲的客户端发起一次 ACK 请求,
以检查客户端是否已经挂掉,对于无响应的客户端则会关闭其连接。
所以关闭一个连接最长需要120秒的时间。如果设置为0,则不会进行保活检测。
tcp-keepalive 0

# SNAPSHTTING快照
备份
1.save save + second + changes
redis.conf的SNAPSHOTTING
出发条件
after 900 seconds if at least 1 key changed
after 300 seconds if at least 10 keys changed
after 60 seconds if at least 10000 keys changed
save 900 1
save 300 10
save 60 10000
2.如果想禁用(save指令)(禁用RDB持久化策略),把三个默认删除,
不要设置任何save指令或者给save传一个空字符串参数save “”
3.你也可以在set key之后马上save
set key
save(手动挡)
4.stop-writes-on-bgsave-error
默认yes,出错了就刹车。
5.rdbcompression yes
是否启动压缩算法,LZF(如果你要节约cpu和内存耗损)则关闭,默认都用出厂设置。
6.rdbchecksum
在存储快照后,还可以让redis使用CRC64算法来进行数据校验,
但这样会增加10%的性能消耗。继续用yes(mysql的checksum~)

7.dbfilename
叫dump.rdb

8.dir
config get dir可以获得,在哪里开启的该进程


# REPLICATION复制

# security安全
前提是认为内存缓存服务架构在一个安全加固环境里面
所以出厂服务是不用输入密码
config requirepass “123456”
这样每次都要输入密码才能获取值。

# limits回收机制
1.maxclients 10000
默认10000个人同时连接
2.maxmemory

3.maxmemory-policy当到达最大内存,你如何选择删除
(考过,它的缓存过期配置如何理解配置)
默认永不过期noeviction
对于内存移除规则来说, Redis 提供了多达6种的移除规则。他们是:
(1)volatile-lru:使用 LRU 算法移除过期集合中的 key
只对设置了过期时间的key
(2)allkeys-lru:使用 LRU 算法移除 key(所有)
(3)volatile-random:在过期集合中移除随机的 key
(4)allkeys-random:移除随机的 key
(5)volatile-ttl:移除那些 TTL 值最小的 key ,即那些最近要过期的
key
(6)noeviction:不进行移除。针对写操作,只是返回错误信息
LRU:LAST RECENT USE最近最少使用
4.maxmemory-sample
LRU算法和最小TTL算法都并非是精确的算法,而是估算值。
所以可以设置样本的大小。假如Redis默认会检查三个key并选择其中LRU的那个,
那么可以改变这个key样本的数量。默认5个,3个精确度没那么高,但快。
maxmemory-samples 3

分享到