8.1 docker配置redis.conf
docker在一开始运行的时候是没有配置文件的,需要手动挂载。
# 1. 创建配置文件目录,这里使用/usr/local/redis
mkdir -p /usr/local/redis
# 2. 获取redis.conf配置文件,这里我使用第二种方式
# 方式一:可以直接创建空redis.conf文件,将配置复制进去
# 方式二:也可以下载redis,将redis.conf文件拷到之前配置的目录下,查看是否安装wget,没安装先安装,已安装跳过
yum -y install wget
# 3.下载、解压redis
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
cd redis-5.0.8.tar.gz
tar -zxvf redis-5.0.8.tar.gz
# 4.将配置文件移动到我们自定义的配置目录下
mv redis.conf /usr/local/redis
# 5. 指定redis.conf目录与dump.rdb目录
docker run -itd --name myredis -v /usr/local/redis/redis.conf:/etc/redis.conf -v /root/usr/local/redis/data:/data -p 6379:6379 -d redis:5.0.8 redis-server /etc/redis.conf
参数详解:
-p (指定端口) 对外暴露端口:容器内部端口(redis.conf内部配置端口)
-v 挂载目录 将当前宿主机的conf文件挂载到容器conf文件
-v .. 将当前宿主机的data目录挂载到容器的data目录
-d 在后台启动并使用 容器的conf文件
8.2 分析配置文件
8.2.1 单位
配置文件 unit单位 忽略大小写!
8.2.2 包含(INCLUDE)
相当于Spring中配置文件的import、include,一个文件可以引用多个配置文件
8.2.3 网络(NETWORK)
# 绑定的ip
bind 127.0.0.1
# 保护模式
protected-mode yes
# 端口设置
port 6379
8.2.4 通用(GENERAL)
# 以守护进程的方式运行,默认是 no,我们需要自己开启为yes
daemonize yes
# 如果以后台的方式运行,我们就需要指定一个 pid 文件!
pidfile /var/run/redis_6379.pid
# 日志
# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably) 生产环境
# warning (only very important / critical messages are logged)
loglevel notice
# 日志的文件位置名
logfile ""
# 数据库的数量,默认是 16 个数据库
databases 16
# 是否总是显示LOGO
always-show-logo yes
8.2.5 快照(SNAPSHOTTING)
在规定的时间内,执行了多少次操作,则会持久化到文件.rdb
、.aof
redis是内存数据库,如果没有持久化,那么数据会断电即失
# 如果900s内,如果至少有一个1 key进行了修改,我们及进行持久化操作
save 900 1
# 如果300s内,如果至少10 key进行了修改,我们及进行持久化操作
save 300 10
# 如果60s内,如果至少10000 key进行了修改,我们及进行持久化操作
save 60 10000
# 我们之后学习持久化,会自己定义这个测试!
# 持久化如果出错,是否还需要继续工作!
stop-writes-on-bgsave-error yes
# 是否压缩 rdb 文件,需要消耗一些cpu资源!
rdbcompression yes
# 保存rdb文件的时候,进行检查校验!
rdbchecksum yes
# rdb 文件保存的目录!
dir ./
8.2.6 安全(SECURITY)
外部设置密码
# 获取是否有密码
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) ""
# 设置密码
127.0.0.1:6379> CONFIG SET requirepass "123456"
OK
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
# 设置成功后,需要输入密码才可以访问
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG
# 清除密码
127.0.0.1:6379> config set requirepass ""
OK
127.0.0.1:6379> ping
PONG
配置文件设置密码
# requirepass foobared
8.2.7 限制 (CLIENTS)
# 设置能连接上redis的最大客户端的数量
maxclients 10000
# redis 配置最大的内存容量
maxmemory <bytes>
# 内存到达上限之后的处理策略
maxmemory-policy noeviction
1、volatile-lru:只对设置了过期时间的key进行LRU(默认值)
2、allkeys-lru : 删除lru算法的key
3、volatile-random:随机删除即将过期key
4、allkeys-random:随机删除
5、volatile-ttl : 删除即将过期的
6、noeviction : 默认,永不过期,返回错误
8.2.8 AOF配置 (APPEND ONLY 模式)
# 默认是不开启aof模式的,默认是使用rdb方式持久化的,在大部分的情况下,rdb完全够用!
appendonly no
# 持久化文件的名字
appendfilename "appendonly.aof"
# 每次修改都会 sync。消耗性能
# appendfsync always
# 每秒执行一次 sync,可能会丢失这1s的数据!
appendfsync everysec
# 不执行 sync,这个时候操作系统自己同步数据,速度最快!
# appendfsync no