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的主要内容,如果未能解决你的问题,请参考以下文章
Redis02(配置文件Redis6新数据类型:BitmapsHyperLogLogGeospatial,Redis_Jedis_及实例Redis与Spring Boot整合)