当前所用Redis版本为2.6.14,以内Redis.conf中已有比较详细的注释,本文多为翻译,外加个人实际配置过程中遇到的一些问题。
1. 备释
当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写):
2. daemonize no
默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes
3. pidfile /var/run/redis.pid
当redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个redis服务时,需要指定不同的pid文件和端口。
4. port 6379
指定redis运行的端口
5. bind 127.0.0.1
翻看网上的文章,此处多翻译为“指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项”。这种解释会totally搞糊涂初学者,甚至是错误的。该处的英文原文为
1
2
3
|
# If you want you can bind a single interface, if the bind option is not
# specified all the interfaces will listen for incoming connections.
# bind 127.0.0.1
|
该处说明bind的是interface,也就是说是网络接口。服务器可以有一个网络接口(通俗的说网卡),或者多个。打个比方说机器上有两个网卡,分别为192.168.205.5 和192.168.205.6,如果bind 192.168.205.5,那么只有该网卡地址接受外部请求,如果不绑定,则两个网卡口都接受请求。
6. timeout 0
设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么server端关闭该连接。0为关闭该设置。
7. tcp-keepalive 0
指定TCP连接是否为长连接,”侦探”信号由server端维护,长连接将会额外的增加server端的开支
默认为0.表示禁用,非0值表示开启”长连接” ;”侦探”信号的发送间隔将有linux系统决定
在多次”侦探”后,如果对等端仍不回复,将会关闭连接,否则连接将会被保持开启.
client端socket也可以通过配置keepalive选项,开启”长连接”.
8. loglevel notice
server日志级别,合法值:debug,verbose,notice,warning 默认为notice
9. logfile
指定Redis日志记录方式,默认值为stdout
10. databases 16
设定redis所允许的最大”db簇”的个数,默认为16个簇.
客户端可以通过”select”指令指定需要使用的”db簇”索引号,默认为0.
redis的顶层数据结构中,所有K-V都潜在的包括了”db簇”索引号,任何一个key都将隶属于一个”db”.
任何对数据的检索,只会覆盖指定的”db”;例如数据被插入到”db 10″中,那么在”db 1″中去get,将会返回null.
对数据归类到不同的db簇中,可以帮助我们实现一些特定的需求,比如根据不同客户端连接,来指定不同的db索引号.
1. save
save
snapshot最终将生成新的dump.rdb文件
save “”用来禁用snapshot功能
例如save 300 1表示5分钟内至少一个key变更,触发snapshot
2. rdbcompression yes
是否启用rdb文件压缩手段,默认为yes.
压缩可能需要额外的cpu开支,不过这能够有效的减小rdb文件的大小,有利于存储/备份/传输/数据恢复.
3. rdbchecksum yes
是否对rdb文件使用CRC64校验和,默认为”yes”,那么每个rdb文件内容的末尾都会追加CRC校验和.
对于其他第三方校验工具,可以很方便的检测文件的完整性
4. dbfilename dump.rdb
指定rdb文件的名称
5. dir ./
指定rdb/AOF文件的目录位置,只能为文件夹不能为文件
1. slaveof
将当前server做为slave,并为其指定master信息.
requirepass foobared
当前server的授权密码
任何客户端或者slave与此server交互前,需要提交密码,其他server的masterauth配置和此参数值保持一致
密码应该足够复杂(64字节)
masterauth
以认证的方式连接到master。 如果master中使用了”密码保护”,slave必须交付正确的授权密码,才能连接成功。
“requirepass”配置项指定了当前server的密码。
此配置项中
slave-serve-stale-data yes
如果当前server是slave,那么当slave与master失去通讯时,是否继续为客户端提供服务,”yes”表示继续,”no”表示终止.