Redis配置文件初探

注意:redis版本为6.0.6
在安装目录下,查看redis.conf文件
1、可以启动多个服务在不同的端口,使用不同的配置文件

#注意,为了读取配置文件,Redis必须
#以文件路径作为第一个参数开始:
# ./redis-server /path/to/redis.conf
#启用redis服务,通过myconfig目录下的redis.conf配置文件
redis-server myconfig/redis.conf

2、可以配置内存大小

1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes

【注意】 这些单位对大小写是不敏感的喔。
3、可以包含一个或多个配置文件,通常include引入包含的配置。而且,由于Redis总是根据最后一个出现的相同的配置项的值作为配置值,所以如果我们不希望include的配置覆盖了当前文件的配置,那么请把include放在当前配置文件的前面。

# Include one or more other config files here.  This is useful if you
# have a standard template that goes to all Redis servers but also need
# to customize a few per-server settings.  Include files can include
# other files, so use this wisely.
# Notice option "include" won't be rewritten by command "CONFIG REWRITE"
# from admin or Redis Sentinel. Since Redis always uses the last processed
# line as value of a configuration directive, you'd better put includes
# at the beginning of this file to avoid overwriting config change at runtime.
# If instead you are interested in using includes to override configuration
# options, it is better to use include as the last line.
#
# include /path/to/local.conf
# include /path/to/other.conf

4、模板
在redis启动的时候会加载模板,如果服务器无法加载模板那么它就会终止,
,可以使用多个loadmodule指令。

# Load modules at startup. If the server is not able to load modules
# it will abort. It is possible to use multiple loadmodule directives.
# 停止执行的模板
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so

5、网络【这个比较重要】
可以设置绑定的IP

#默认情况下,如果你没有显式的指定bind参数,那么Redis将只接受服务器本地回环的连接
#如果你想监听网络上其它IP的连接,也可以像下面这样配置一个或多个IP地址
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
band 127.0.0.1 #此时默认绑定的是本机的IP

可以设置后台保护模式,一般情况下我们设置为yes,这样就能在后台运行了
下面给出官方的原话

#默认情况下,启用保护模式。只有在以下情况下,您才应该禁用它
#您确定要让其他主机的客户端连接到Redis
#即使没有配置身份验证,也没有配置特定的接口集
#是使用“bind”指令显式列出的。
#保护模式是
protected-mode yes

可以设置启动的端口

#指定redis的监听端口,默认端口是6379
port 6379

指定TCP连接中完成三次握手的长度, 当然此值必须不大于Linux
系统定义的/proc/sys/net/core/somaxconn值,默认是511。
接下来就是指定一些目录和权限

#指定unix socket目录
# unixsocket /tmp/redis.sock
#指定unix socket file的权限
# unixsocketperm 700
#链接空闲了多少秒之后会被链接,也就是超时时间,0的话就表示永不超时
timeout 0
#每隔多少秒向客户端发送ACKs来检测客户端是否还存活着
tcp-keepalive 300

套接字安全这里是关于SSL配置的,Redis默认是不开启SSL的,在这里就不再做讲解

通用配置

daemonize yes #以守护进程的方式运行,默认是no,我们需要自己开启为yes
pidfile /var/run/redis_6379.pid #如果以后台方式运行,就需要指定一个pid文件

# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing) 测试和开发的日志
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)
loglevel notice #部分重要的日志通知,生产环境适用
#日志记录等级,有4个可选值,debug(开发),verbose(默认值),notice(生产),warning(警告)
logfile "" #日志生成的文件位置名 默认为空
databases 16 #设置数据库数量,默认为16个数据库
always-show-logo yes #是否总是显示logo 默认是yes

快照
快照就是多少秒把数据保存到磁盘【这里将的是rdb形式的持久化】

#格式是:save <seconds> <changes>。意思是至少有changes条key数据被改变时,
#例如这里的第一条,在900秒内,如果至少有1个key进行了修改,我们就进行持久化操作,下面两条的也是类似的
save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes #持久化出错了,是否还需要继续工作
rdbcompression yes #是否压缩rdb文件,需要消耗cpu资源
rdbchecksum yes #保存rdb文件的时候,进行错误的检验检查
dbfilename dump.rdb #指定rdb文件的默认名称 默认是dump.rdb
rdb-del-sync-files no #在没有持久性的情况下删除复制中使用的RDB文件
dir ./ #rdb文件保存的目录
dir "/usr/local/bin" #默认数据库存放路径

主从复制

# Master-Replica replication. Use replicaof to make a Redis instance a copy of
# another Redis server. A few things to understand ASAP about Redis replication.
#
#   +------------------+      +---------------+
#   |      Master      | ---> |    Replica    |
#   | (receive writes) |      |  (exact copy) |
#   +------------------+      +---------------+
#
 配置主节点的IP和端口号
# replicaof <masterip> <masterport>
如果当前服务器为slave,那么这里配置的就是master的访问密码
# masterauth <master-password>
如果当前服务器为slave,那么这里配置的就是master的用户名
# masteruser <username>
当slave失去与master的连接,或正在拷贝中,如果为yes,slave会响应客户端的请求,
数据可能不同步甚至没有数据,如果为no,slave会返回错误"SYNC with master in progress"
replica-serve-stale-data yes
配置从节点只能进行读操作
replica-read-only yes
#	新的从节点和重连后不能继续备份的从站,需要做所谓的“完全备份”,即将一个RDB文件从主站传送到从站。
#这个传送有以下两种方式:
#	硬盘备份:redis主站创建一个新的进程,用于把RDB文件写到硬盘上。过一会儿,其父进程递增地将文件传送给从站。
#	无硬盘备份:redis主站创建一个新的进程,子进程直接把RDB文件写到从站的套接字,不需要用到硬盘。
#	在硬盘备份的情况下,主站的子进程生成RDB文件。一旦生成,多个从站可以立即排成队列使用主站的RDB文件。
#	在无硬盘备份的情况下,一次RDB传送开始,新的从站到达后,需要等待现在的传送结束,才能开启新的传送。
#	如果使用无硬盘备份,主站会在开始传送之间等待一段时间(可配置,以秒为单位),希望等待多个子站到达后并行传送。
#	在硬盘低速而网络高速(高带宽)情况下,无硬盘备份更好。
repl-diskless-sync no
#是否使用无磁盘加载,有三项:
#	1、disabled:不要使用无磁盘加载,先将rdb文件存储到磁盘
#	2、on-empty-db:只有在完全安全的情况下才使用无磁盘加载
#	3、swapdb:解析时在RAM中保留当前db内容的副本,直接从套接字获取数据。
repl-diskless-load disabled
#这里指定slave定期向master进行心跳检测的周期,默认10秒
# repl-ping-replica-period 10
#配置主节点的心跳检测超时时间
# repl-timeout 60

#当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,这个值越小,就越会被优先选中,
#但是如果是0,那是意味着这个slave不可能被选中。 默认优先级为100。
replica-priority 100

安全设置

可以使用命令行设置密码,redis默认是没有密码的
# requirepass foobared #登录密码设置

客户端

客户端最大连接数配置默认是10000。
# maxclients 10000

内存管理

maxclients 10000 #最大连接Redis的客户端连接数
maxmemory <bytes> #redis配置最大的内存容量

maxmemory-policy noeviction #内存到达上限之后的处理策略
	
maxmemory-policy 六种方式:
	1、volatile-lru:只对设置了过期时间的key进行LRU(默认值)
	2、allkeys-lru : 删除lru算法的key   
	3、volatile-random:随机删除即将过期key   
	4、allkeys-random:随机删除   
	5、volatile-ttl : 删除即将过期的   
	6、noeviction : 永不过期,返回错误
内存策略,默认是noeviction
# maxmemory-policy noeviction

AOF

appendonly no #默认是不开窍aof模式,默认使用rdb方式实现持久化【rdb完全够用】
appendfilename "appendonly.aof" #aof持久化文件的默认名字
 # appendfsync always #每次修改都同步,
appendfsync everysec #每秒执行一次同步,可能会丢失这一秒的数据,
# appendfsync no #不同步

auto-aof-rewrite-percentage 100
#当AOF文件大小超过64m时,就会新建一个aof文件,自动追加到原文件的后面
auto-aof-rewrite-min-size 64mb

后序再进行其他源码的分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值