Redis配置
Redis 安装
wget http://download.redis.io/releases/redis-4.0.12.tar.gz
tar xzf redis-4.0.12.tar.gz
cd redis-4.0.12
make
建立软连接,数据保存到大容量的磁盘 /home/data 上,通过 /data 访问: ln -s /home/data /data
Redis 配置与启动
若不配置 protected-mode no
,则非本地IP地址无法操作数据库。同样的,如果Sentinel不配置,也无法操作。
默认配置为只允许通过Sentinel进行操作,不允许直接操作Redis,所以只在Sentinel配置此项。(内网测试时可加此配置,方便查看数据。)
protected-mode no
如果master配置了 requirepass
, 则每个从服务器都需要配置 masterauth
,避免无法访问。在连接到有密码的服务器时,登录后使用 auth <password>
验证
requirepass <password>
masterauth <master-password>
数据持久化
视Redis使用时定位决定,是否要将数据持久化到磁盘上(Redis默认正常关闭时都会进行一次快照保存,相当于一次RDB持久化)。
主从结构不建议master进行持久化操作,从redis建议使用aof操作。
- RDB方式相关配置
以RDB的方式保存可能有磁盘IO尖峰,易造成redis操作超时等问题,适用于数量较小的缓存。stop-writes-on-bgsave-error
写入报错时是否继续接受redis数据更新rdbcompression
写入时是否要压缩数据,耗CPUrdbchecksum
文件校验和,加载和储存时造成约10%的性能下降save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error no rdbcompression no rdbchecksum no
- AOF(Append-Only-File)相关配置
AOF是一种增量保存方式,通过保存Redis的写操作来实现appendonly yes
开启AOF持久化,默认是关闭的appendfsync everysec
每秒写入no-appendfsync-on-rewrite no
日志压缩重写时,不进程磁盘追加操作,避免同时执行占用IOauto-aof-rewrite-percentage 100
日志大小翻倍时,启动重写(配置为0将禁用重写)auto-aof-rewrite-min-size 64mb
避免小文件频繁重写appendonly yes appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb appendfilename "appendonly-6380.aof"
redis-master-6379.conf
port 6379
daemonize yes
supervised no
databases 128
logfile "6379.log"
dbfilename "dump-6379.rdb"
dir "/data/redis_data"
protected-mode no
# requirepass <password>
# masterauth <master-password>
redis-slave-6380.conf
port 6380
daemonize yes
supervised no
databases 128
logfile "6380.log"
dbfilename "dump-6380.rdb"
dir "/data/redis_data"
slaveof 192.168.45.134 6379
protected-mode no
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
appendfilename "appendonly-6380.aof"
# requirepass <password>
# masterauth <master-password>
redis-slave-6381.conf
port 6381
daemonize yes
supervised no
databases 128
logfile "6381.log"
dbfilename "dump-6381.rdb"
dir "/data/redis_data"
slaveof 192.168.45.134 6379
protected-mode no
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
appendfilename "appendonly-6381.aof"
# requirepass <password>
# masterauth <master-password>
启动节点
src/redis-server redis-master-6379.conf
src/redis-server redis-slave-6380.conf
src/redis-server redis-slave-6381.conf
检测节点是否启动:
src/redis-cli -h 127.0.0.1 -p 6379 ping
src/redis-cli -h 127.0.0.1 -p 6380 ping
src/redis-cli -h 127.0.0.1 -p 6381 ping
确认主从关系
src/redis-cli -h 127.0.0.1 -p 6379 INFO replication
src/redis-cli -h 127.0.0.1 -p 6380 INFO replication
src/redis-cli -h 127.0.0.1 -p 6381 INFO replication
Sentinel配置与启动
多个Sentinel都只需要监听Redis主节点即可,启动后会自动发现从节点和其它Sentinel
protected-mode no
关闭保护模式sentinel auth-pass <master-name> <password>
设置master的密码(如果master有密码)sentinel monitor <master-name> <ip> <redis-port> <quorum>
当前Sentinel节点监控ip:redis-port
这个主节点,判断主节点失败至少需要quorum
个Sentinel节点同意,master-name
是主节点的别名
ip地址不能配置为127.0.0.1,因为sentinel会将这个地址发给连接端,连接端通过这个地址访问对应的内网服务器。sentinel failover-timeout <master-name> <milliseconds>
故障转移超时时间为milliseconds
毫秒sentinel down-after-milliseconds <master-name> <milliseconds>
定时PING命令,如果超过milliseconds
毫秒没有回复,则判定不可达sentinel parallel-syncs <master-name> <numreplicas>
当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为 1个
sentinel-26379.conf
port 26379
logfile "26379.log"
daemonize yes
protected-mode no
dir "/data/redis_data"
sentinel monitor g84_redis 192.168.45.134 6379 2
sentinel failover-timeout g84_redis 180000
sentinel down-after-milliseconds g84_redis 30000
sentinel parallel-syncs g84_redis 1
sentinel-26380.conf
port 26380
logfile "26380.log"
daemonize yes
protected-mode no
dir "/data/redis_data"
sentinel monitor g84_redis 192.168.45.134 6379 2
sentinel failover-timeout g84_redis 180000
sentinel down-after-milliseconds g84_redis 30000
sentinel parallel-syncs g84_redis 1
sentinel-26381.conf
port 26381
logfile "26381.log"
daemonize yes
protected-mode no
dir "/data/redis_data"
sentinel monitor g84_redis 192.168.45.134 6379 2
sentinel failover-timeout g84_redis 180000
sentinel down-after-milliseconds g84_redis 30000
sentinel parallel-syncs g84_redis 1
启动 Sentinel
src/redis-sentinel sentinel-26379.conf
src/redis-sentinel sentinel-26380.conf
src/redis-sentinel sentinel-26381.conf
确认 Sentinel
src/redis-cli -h 127.0.0.1 -p 26379 INFO Sentinel
src/redis-cli -h 127.0.0.1 -p 26380 INFO Sentinel
src/redis-cli -h 127.0.0.1 -p 26381 INFO Sentinel
Sentinel基本命令与参数
info
查看sentinel的状态sentinel masters
获取sentinel中监控的所有master的节点sentinel slaves <master-name>
获取指定master-name节点redis的状态信息sentinel sentinels
sentinel get-master-addr-by-name
Redis性能测试
官方自带Redis性能测试工具redis-benchmark
# 100个并发连接,100000个请求,检测指定redis的服务器性能
src/redis-benchmark -h 192.168.45.134 -p 6379 -c 100 -n 100000
# 只对部分命令进行测试
src/redis-benchmark -h 192.168.45.134 -p 6379 -t set,lpush -n 100000
# 检测某些操作的存取性能
src/redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 script load "redis.call('set','foo','bar')"
redis 在虚拟化环境中的表现性能是比较差的
关闭所有Redis进程
ps -aux|grep redis-server|grep -v grep|awk '{print $2}'|xargs kill
关闭所有Sentinel进程
ps -aux|grep redis-sentinel|grep -v grep|awk '{print $2}'|xargs kill
Redis 相关命令
redis> info commandstats 查看执行过的命令状态统计
redis> CONFIG GET slowlog-log-slower-than (10000us,Redis中的执行单位是微秒,相当于10ms)
redis> CONFIG GET slowlog-max-len (最多存储128条慢日志,应该是默认的吧)
redis> SLOWLOG LEN (当前慢查询日志数量)
redis> SLOWLOG GET (默认取10条)
redis> flushdb 清空当前所在DB的所有数据
redis> flushall 清空Redis缓存的全部数据
redis> ZUNIONSTORE zset2 1 zset1 集合拷贝
redis> bgsave 新建一个进程redis-rdb-bgsave保存RDB文件
redis> bgrewriteaof 手动进行一次AOF文件重写
redis> keys [pattern] 查看当前DB的所有键
redis> type [key] 返回对应值的存储的数据类型
redis> ttl [key] 返回key剩余秒数
redis> rename [key] 重命名
参考
http://download.redis.io/redis-stable/sentinel.conf
http://download.redis.io/redis-stable/redis.conf
Redis Sentinel design draft 1.3
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com
文章标题: Redis配置
文章字数: 1,774
本文作者: Jun
发布时间: 2018-12-27, 14:53:00
最后更新: 2019-03-19, 16:37:26
原始链接: http://yoursite.com/2018/12/27/Redis配置/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。