Redis(四):Redis配置文件
本文主要是讲解的是Redis的配置文件(可以根据大标题进入配置文件中搜索):
但是Redis的配置文件实在太多了,以下列举几个比较重要的(详讲),和一些需要我们知道的
一、NETWORK
- pord
这是绑定的端口
- bind
绑定的主机地址
- timeout
设置客户端连接时的超时时间,单位为秒,当客户端再这段时间内没有发出任何指令,那么关闭该连接。默认值为0,表示不关闭。
- tcp-keepalive
单位时秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给的建议值时300s,如果设置为0,则不会周期性的检测。
二、GENERAL
- daemonize
默认情况下redis不作为一个守护线程,就是我们刚装好redis的时候出来的是no,我们需要改成yes
- pidfile
当redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
- loglevel
定义日志级别,默认为notice
1、debug(记录大量日志信息,适用于开发和测试阶段)
2、verbose(较多日志信息)
3、notice(适量日志信息。适用于生产环境)
4、warning(仅有部分重要、关键信息才会被记录)
- logfile
配置log文件地址,默认打印在命令行终端的窗口上
- databases
设置数据库的数目。默认的数据库是0号数据库,可以在redis的连接上切换数据库 select db,Redis默认有16个数据库
三、SNAPSHOTTING(配置持久化操作)
- save
这里是用来触发Redis持久化条件,也就是当条件触发的时候将内存的数据保存到硬盘
save 900 1 : 表示900秒内如果至少有1个key的值变化,则保存。
save 300 10 : 表示300秒如果至少有10个key的值变化,则保存。
save 60 10000 : 表示60秒如果至少有10000个key的值变化,则保存。
如果不需要Redis的持久化,那可以注释掉这里的配置,用save “” 来代替
- stop-writes-on-bgsave-error
默认值为yes。当启用了RDB且最后一次后台保存数据失败,Redis是否停止接收数据
- rdbcompression
默认值是yes,对于存储到磁盘中的快照,可以设置是否进行压缩存储,如果开启的话,redis会采用LZF算法进行压缩,但是会消耗cpu来进行压缩,关闭该功能之后,存储在磁盘上的快照会比较大。
- ==rdbchecksum ==
默认值是yes,在存储快照之后,可以使用Redis的CRC64算法来进行数据的校验,但会增加性能的消耗。
- dbfilename
设置快照的文件名,默认是dump.rdb
- dir
设置快照文件的存放路径,这个配置项一定是个目录,而不是文件名,使用上面的dbfilename作为保存的文件名。
四、REPLICATION
- slave-serve-stale-data
slave-serve-stale-data:默认值为yes。当一个 slave 与 master 失去联系,或者复制正在进行的时候,slave 可能会有两种表现:
1、 如果为 yes ,slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候
2、如果为 no ,在你执行除了 info he salveof 之外的其他命令时,slave 都将返回一个 “SYNC with master in progress” 的错误
- slave-read-only
配置Redis的从节点是否为只读,即如果配置为no,那么为读写,默认值为yes.
五、SECURITY
-rename-command
flushdb(清空数据库)
flushall(清空所有记录)
config(客户端连接后可配置服务器)
keys (客户端连接后可查看所有存在的键)
作为服务端redis-server,常常需要禁用以上命令来使得服务器更加安全,禁用的具体做法是是:
rename-command FLUSHALL “”
也可以保留命令但是不能轻易使用,重命名这个命令即可:
rename-command FLUSHALL abcdefg
这样,重启服务器后则需要使用新命令来执行操作,否则服务器会报错unknown command。
六、MEMORY MANAGEMENT
- maxmemory
设置客户端最大并发连接数,默认无限制,当达到最大连接数的时候,会出现:
max number of clients reached错误
- maxmemory-policy
当内存使用达到最大值时,redis使用的清楚策略。有以下几种可以选择:
1、volatile-lru 利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used )
2、allkeys-lru 利用LRU算法移除任何key
3、volatile-random 移除设置过过期时间的随机key
4、allkeys-random 移除随机key
5、volatile-ttl 移除即将过期的key(minor TTL)
6、noeviction noeviction 不移除任何key,只是返回一个写错误 ,默认选项
maxmemory-samples :LRU 和 minimal TTL 算法都不是精准的算法,但是相对精确的算法(为了节省内存)。随意你可以选择样本大小进行检,redis默认选择3个样本进行检测,你可以通过maxmemory-samples进行设置样本数。
七、APPEND ONLY MODE
- appendonly
Redis是使用的rdb方式持久化,但是当reids宕机的时候,会导致可能几分钟的数据丢失,而appendonly是另一种存储方式,每次启动Redis都会把这个文件数据读入内存中,先忽略rdb文件,默认为no
- appendfilename
aof文件名,默认是“appendonly.aof”
- appendfsync
aof持久化策略的配置;no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快;always表示每次写入都执行fsync,以保证数据同步到磁盘;everysec表示每秒执行一次fsync,可能会导致丢失这1s数据
- no-appendfsync-on-rewrite
在aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来说,执行fsync会造成阻塞过长时间,no-appendfsync-on-rewrite字段设置为默认设置为no。如果对延迟要求很高的应用,这个字段可以设置为yes,否则还是设置为no,这样对持久化特性来说这是更安全的选择。 设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes。Linux的默认fsync策略是30秒。可能丢失30秒数据。默认值为no。
- auto-aof-rewrite-percentage
默认值为100。aof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。
- auto-aof-rewrite-min-size
64mb。设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写
八、REDIS CLUSTER
- cluster-enabled
集群开关,默认不开启集群模式
- cluster-config-file
集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。 这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件。请确保与实例运行的系统中配置文件名称不冲突。默认配置为nodes-6379.conf。
- cluster-node-timeout
可以配置值为15000。节点互连超时的阀值,集群节点超时毫秒数