Redis配置

  1. Redis 安装
  2. Redis 配置与启动
  3. 数据持久化
  4. Sentinel配置与启动
  5. Sentinel基本命令与参数
  6. Redis性能测试
  7. 关闭所有Redis进程
  8. 关闭所有Sentinel进程
  9. Redis 相关命令
  10. 参考

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操作。

  1. RDB方式相关配置
    以RDB的方式保存可能有磁盘IO尖峰,易造成redis操作超时等问题,适用于数量较小的缓存。
    stop-writes-on-bgsave-error 写入报错时是否继续接受redis数据更新
    rdbcompression 写入时是否要压缩数据,耗CPU
    rdbchecksum 文件校验和,加载和储存时造成约10%的性能下降
    save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error no
    rdbcompression no
    rdbchecksum no
    
  2. AOF(Append-Only-File)相关配置
    AOF是一种增量保存方式,通过保存Redis的写操作来实现
    appendonly yes 开启AOF持久化,默认是关闭的
    appendfsync everysec 每秒写入
    no-appendfsync-on-rewrite no 日志压缩重写时,不进程磁盘追加操作,避免同时执行占用IO
    auto-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

  1. protected-mode no
    关闭保护模式

  2. sentinel auth-pass <master-name> <password>
    设置master的密码(如果master有密码)

  3. sentinel monitor <master-name> <ip> <redis-port> <quorum>
    当前Sentinel节点监控 ip:redis-port 这个主节点,判断主节点失败至少需要quorum个Sentinel节点同意,master-name 是主节点的别名
    ip地址不能配置为127.0.0.1,因为sentinel会将这个地址发给连接端,连接端通过这个地址访问对应的内网服务器。

  4. sentinel failover-timeout <master-name> <milliseconds>
    故障转移超时时间为milliseconds毫秒

  5. sentinel down-after-milliseconds <master-name> <milliseconds>
    定时PING命令,如果超过milliseconds毫秒没有回复,则判定不可达

  6. 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基本命令与参数

  1. info 查看sentinel的状态
  2. sentinel masters 获取sentinel中监控的所有master的节点
  3. sentinel slaves <master-name> 获取指定master-name节点redis的状态信息
  4. sentinel sentinels
  5. 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] 重命名

参考

https://redis.io/download

http://download.redis.io/redis-stable/sentinel.conf

http://download.redis.io/redis-stable/redis.conf

Redis配置文件详解

Redis超时原因排查

Redis配置RDB、AOF

Redis Sentinel 介绍与部署

Redis Sentinel design draft 1.3

Redis Sentinel基本命令与参数

redis-benchmark测试Redis性能

Redis中Set集合SortSet有序集合的复制


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 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" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏