Redis - 02. 配置Redis

Posted PhiloChou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis - 02. 配置Redis相关的知识,希望对你有一定的参考价值。

1. 创建配置文件

# mkdir /etc/redis
# cp ~/download/redis-3.0.4/redis.conf /etc/redis/6379.conf

之所以重命名为6379.conf,是用redis的默认端口号6379命名的。
一是为了部署多redis服务,二来官方为我们提供了启动脚本,里面的规范是这样,后面在配置自启动时就不用改了。

2. 修改配置

优先推荐看redis.conf文件内的注释(版本不同会与本文略有差异)

# vim /etc/redis.conf

2.1 守护进程运行(建议修改)

daemonize yes
pidfile /var/run/redis_6379.pid

之所以pidfile要命名为redis_6379.pid,也是基于上面的原因

2.2 监听端口

port 6379

2.3 监听IP

bind 127.0.0.1

2.4 超时(单位:秒)

timeout 300

2.5 日志等级

loglevel notice

2.6 日志位置

logfile /var/log/redis.log

2.7 数据库数量

databases 16

2.8 保存到磁盘的时间间隔

save 900 1
save 300 10
save 60 10000

以上的配置含义:
1. 900秒后,至少有1个key发生变化,就保存;
2. 300秒后,至少有10个key发生变化,就保存;
3. 60秒后,至少有10000个key发生变化,就保存;

2.9 意外情况禁止写入

stop-writes-on-bgsave-error no

默认是yes,若设置为no,但需要自己监控好redis的运行状态(包括持久化状态)

2.10 存储本地时,压缩文件

rdbcompression yes

2.11 启用文件校验

rdbchecksum yes

2.12 数据库文件名

dbfilename dump.rdb

默认为dump.rdb,可以根据需要修改

2.13 数据库存放目录

dir ./

2.14 设置为从库

# slaveof <主库的IP> <主库的端口>

这样会从主redis同步数据

2.15 设置连接主库的密码

# masterauth <master-password>

2.16 从库的client响应机制

slave-serve-stale-data yes

设置为yes,不论主从是否同步完成,都相应client请求
设置为no,在未同步完成时,会返回一个”“SYNC with master in progress”(正在与主服务器同步)的错误提示。

2.17 设置从库只读是否只读

slave-read-only yes

2.18 无磁盘同步

repl-diskless-sync no

目前版本仍然是试验阶段,所以设置no
若设置为yes,则采用无磁盘同步模式,主库新开一个进程,通过socket,直接发送给从库进行同步
若设置为no,则主库新开一个进程写入本地文件,然后增量传递给从库

2.19 无磁盘同步的时间间隔(单位:秒)

repl-diskless-sync-delay 5

若设置为0,即立即同步

2.20 从库ping主库的时间间隔(单位:秒)

# repl-ping-slave-period 10

默认是10

2.21 同步超时时间(单位:秒)

# repl-timeout 60

该值一定要大于repl-ping-slave-period的设置,否则会判断为一直超时

2.22 禁用tcp-nodelay设置

repl-disable-tcp-nodelay no

设置为yes,将会使用更少的tcp包及更小的带宽同步数据,但是同步会不及时
设置为no,同步会快,但更占带宽
如果主从同步需要很及时,可以设置为yes

2.23 backlog的文件大小

# repl-backlog-size 1mb

若从库与主库断开,下次连接主库时,可从backlog文件恢复。
文件越大,恢复时间越长

2.24 释放backlog文件的时间间隔(单位:秒)

# repl-backlog-ttl 3600

若主库长时间为与从库交互,就会释放backlog文件。这个值设置了从上次断开连接后,过多久释放backlog文件
设置为0表示永不释放

2.25 从库优先级

slave-priority 100

当主库不可用时,哪个服务器最先接管主库工作,该值越低越优先。
设置为0,表示永远不能接管主库

2.26 当可用从库少于指定数字,延迟小于指定数字,主库禁止写入操作

# min-slaves-to-write 3
# min-slaves-max-lag 10

2.27 密码设置

# requirepass <密码>

大多数可以不用设置,因为是自己的服务器通过内网访问

2.28 最大连接数

maxclients 10000

超过设置的数字,将禁止新的client连接redis

2.29 最大内存

maxmemory 1gb

超过最大内存,redis将会根据淘汰机制开始移除key,如果是作为缓存使用,那建议设置起来

2.30 超过内存后的键值淘汰机制

maxmemory-policy volatile-lru

有下面几种

# volatile-lru ->  利用 LRU 算法移除设置过过期时间的 key (LRU: 最近使用  Least RecentlyUsed )
# allkeys-lru ->  利用 LRU 算法移除任何 key
# volatile-random ->  移除设置过过期时间的随机 key
# allkeys->random -> remove a randomkey, any key
# volatile-ttl ->  移除即将过期的 key(minor TTL)
# noeviction ->  不移除任何可以,只是返回一个写错误

2.31 淘汰机制算法中的采样数

maxmemory-samples 5

建议是5

2.32 appendonly设置

appendonly no
appendfilename "appendonly.aof"

2.33 appendfsync设置

appendfsync everysec

3. 配置redis自启动

3.1 使用官方自带脚本

# cp ~/download/redis-3.0.4/utils/redis_init_script /etc/init.d/redisd
# cd /etc/init.d/
# vim redisd

按如下配置修改:

#!/bin/sh
# chkconfig: 2345 90 10
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_$REDISPORT.pid
CONF="/etc/redis/$REDISPORT.conf"

看到上面的PIDFILE为redis_$REDISPORT.pid,也就是我们第1步中提到的为何要将pid文件命名为redis_6379.pid
而CONF为$REDISPORT.conf,也就是我们第1步中提到为何要把配置文件命名为6379.conf,并放置到/etc/redis/

3.2 注册启动脚本

# chkconfig redisd on

3.3 启动和停止

# service redisd start
# service redisd stop

以上是关于Redis - 02. 配置Redis的主要内容,如果未能解决你的问题,请参考以下文章

redis持久化配置

Redis02(配置文件Redis6新数据类型:BitmapsHyperLogLogGeospatial,Redis_Jedis_及实例Redis与Spring Boot整合)

redis02---对于key的操作命令

redis13-----配置文件

Redis配置参数汇总

redis配置文件详解