centos7 通过docker安装redis

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
  1. docker的安装参考连接

https://blog.csdn.net/u014069688/article/details/100532774

https://www.docker.org.cn/dockerppt/106.html

  1. 通过docker安装redis

# 拉取最后的版本
docker pull redis
 
# 拉取指定版本
docker pull redis:6.2.5

上图是拉取过后重新拉取的结果显示。

查看镜像

# 查看镜像
docker images
 
# 查看镜像
docker image ls

获取 Redis 的默认配置模版

可以通过官网下载

# 获取 redis 的默认配置模版
# redis 的 docker 运行参数提供了 --appendonly yes 但没 password
wget https://raw.githubusercontent.com/antirez/redis/6.0/redis.conf -O XXX
 
XXX 替换为自己需要存放的目录--》例如我的/data/home/docker/redis/conf

配置例子

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~redis 配置~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 指定Redis 只接收来自于该IP 地址的请求如果不进行设置那么将处理所有请求在生产环境中为了安全最好设置该项。默认注释掉不开启
#bind 127.0.0.1
 
# #默认yes开启保护模式限制为本地访问
protected-mode no
# 监听端口默认为6379
port 6379
 
# 链接密码
requirepass 123456
 
tcp-backlog 511
 
# 设置客户端连接时的超时时间单位为秒。当客户端在这段时间内没有发出任何指令那么关闭该连接
timeout 0
 
# 指定TCP连接是否为长连接,"侦探"信号有server端维护。默认为0.表示禁用
tcp-keepalive 300
 
# 默认情况下redis 不是在后台运行的如果需要在后台运行把该项的值更改为yes。
daemonize no
 
supervised no
 
# 当Redis 在后台运行的时候Redis 默认会把pid 文件放在/var/run/redis.pid你可以配置到其他地址。当运行多个redis 服务时需要指定不同的pid 文件和端口
pidfile /var/run/redis_6379.pid
 
# log 等级分为4 级debug,verbose, notice, 和warning。生产环境下一般开启notice
loglevel notice
 
# 配置log 文件地址默认使用标准输出即打印在命令行终端的窗口上修改为日志文件目录
logfile ""
 
# 设置数据库的个数可以使用SELECT 命令来切换数据库。默认使用的数据库是0号库。默认16个库
databases 16
 
always-show-logo yes
 
# 保存数据快照的频率即将数据持久化到dump.rdb文件中的频度。用来描述"在多少秒期间至少多少个变更操作"触发snapshot数据保存动作
#默认设置意思是
# if(在60 秒之内有10000 个keys 发生变化时){
# 进行镜像备份
# }else if(在300 秒之内有10 个keys 发生了变化){
# 进行镜像备份
# }else if(在900 秒之内有1 个keys 发生了变化){
# 进行镜像备份
# }
save 900 1
save 300 10
save 60 10000
 
# 当持久化出现错误时是否依然继续进行工作是否终止所有的客户端write请求。默认设置"yes"表示终止一旦snapshot数据保存故障那么此server为只读服务。如果为"no"那么此次snapshot将失败但下一次snapshot不会受到影响不过如果出现故障,数据只能恢复到"最近一个成功点"、
stop-writes-on-bgsave-error yes
 
# 在进行数据镜像备份时是否启用rdb文件压缩手段默认为yes。压缩可能需要额外的cpu开支不过这能够有效的减小rdb文件的大有利于存储/备份/传输/数据恢复 读取和写入时候会损失10%性能
rdbcompression yes
 
# 是否进行校验和是否对rdb文件使用CRC64校验和,默认为"yes"那么每个rdb文件内容的末尾都会追加CRC校验和利于第三方校验工具检测文件完整性
rdbchecksum yes
 
# 镜像备份文件的文件名默认为 dump.rdb
dbfilename dump.rdb
 
rdb-del-sync-files no
 
# 数据库镜像备份的文件rdb/AOF文件放置的路径。这里的路径跟文件名要分开配置是因为Redis 在进行备份时先会将当前数据库的状态写入到一个临时文件中等备份完成时再把该临时文件替换为上面所指定的文件而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中
dir ./
 
replica-serve-stale-data yes
 
replica-read-only yes
 
repl-diskless-sync no
 
repl-diskless-sync-delay 5
 
repl-diskless-load disabled
 
repl-disable-tcp-nodelay no
 
replica-priority 100
 
acllog-max-len 128
 
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
 
lazyfree-lazy-user-del no
 
# 默认情况下redis 会在后台异步的把数据库镜像备份到磁盘但是该备份是非常耗时的而且备份也不能很频繁。所以redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。开启append only 模式之后redis 会把所接收到的每一次写操作请求都追加到appendonly.aof 文件中当redis 重新启动时会从该文件恢复出之前的状态。但是这样会造成appendonly.aof 文件过大所以redis 还支持了BGREWRITEAOF 指令对appendonly.aof 进行重新整理。如果不经常进行数据迁移操作推荐生产环境下的做法为关闭镜像开启appendonly.aof同时可以选择在访问较少的时间每天对appendonly.aof 进行重写一次。
appendonly no
 
 
appendfilename "appendonly.aof"
 
# 设置对appendonly.aof 文件进行同步的频率。always 表示每次有写操作都进行同步everysec 表示对写操作进行累积每秒同步一次。no不主动fsync由OS自己来完成。这个需要根据实际业务场景进行配置
appendfsync everysec
 
no-appendfsync-on-rewrite no
 
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
 
aof-load-truncated yes
 
aof-use-rdb-preamble yes
 
lua-time-limit 5000
 
slowlog-log-slower-than 10000
 
slowlog-max-len 128
 
latency-monitor-threshold 0
 
notify-keyspace-events ""
 
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
 
list-max-ziplist-size -2
 
list-compress-depth 0
 
set-max-intset-entries 512
 
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
 
hll-sparse-max-bytes 3000
 
stream-node-max-bytes 4096
stream-node-max-entries 100
 
# 是否开启顶层数据结构的rehash功能,如果内存允许,请开启。rehash能够很大程度上提高K-V存取的效率
activerehashing yes
 
# 客户端buffer控制。在客户端与server进行的交互中,每个连接都会与一个buffer关联,此buffer用来队列化等待被client接受的响应信息。如果client不能及时的消费响应信息,那么buffer将会被不断积压而给server带来内存压力.如果buffer中积压的数据达到阀值,将会导致连接被关闭,buffer被移除。
 
#buffer控制类型包括:normal -> 普通连接slave ->与slave之间的连接pubsub ->pub/sub类型连接此类型的连接往往会产生此种问题;因为pub端会密集的发布消息,但是sub端可能消费不足.
#指令格式:client-output-buffer-limit <class> <hard> <soft> <seconds>",其中hard表示buffer最大值,一旦达到阀值将立即关闭连接;
#soft表示"容忍值",它和seconds配合,如果buffer值超过soft且持续时间达到了seconds,也将立即关闭连接,如果超过了soft但是在seconds之后buffer数据小于了soft,连接将会被保留.
#其中hard和soft都设置为0,则表示禁用buffer控制.通常hard值大于soft.
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
 
# Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁(次数/秒)。"间歇性task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于0且小于500。此值过小就意味着更多的cpu周期消耗,后台task被轮询的次数更频繁。此值过大意味着"内存敏感"性较差。建议采用默认值。
hz 10
 
dynamic-hz yes
 
aof-rewrite-incremental-fsync yes
 
rdb-save-incremental-fsync yes
 
jemalloc-bg-thread yes

设置配置文件运行redis

# 删除redis容器
docker rm -f myredis
 
# 设置挂载重新运行redis
docker run -d --privileged=true -p 8808:8808 --restart always -v /usr/local/docker/redis_8808/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis_8808/data:/data --name myredis redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass "123456"
-d                                                  -> 以守护进程的方式启动容器
-p 6379:6379                                        -> 绑定宿主机端口
--name myredis                                      -> 指定容器名称
--restart always                                    -> 开机启动
--privileged=true                                   -> 提升容器内权限
-v /root/docker/redis-6379/conf:/etc/redis/redis.conf    -> 映射配置文件
-v /root/docker/redis-6379/data:/data                    -> 映射数据目录
redis-server /etc/redis/redis.conf --appendonly yes -> 在容器里执行redis-server命令打开redis持久化

--requirepass                                                 -> 密码

开启两个redis容器例程

配置文件结构

配置文件区别只是修改这两处地方为对应的端口号

启动端口号为8808的redis 的容器

docker run -d --privileged=true -p 8808:8808 --restart always -v /usr/local/docker/redis_8808/conf/redis.conf:/etc/redis/redis_8808.conf -v /usr/local/docker/redis_8808/data:/data_8808 --name redis_8808 redis redis-server /etc/redis/redis_8808.conf --appendonly no --requirepass "123456"

启动端口号为6379的redis 的容器

docker run -d --privileged=true -p 6379:6379 --restart always -v /usr/local/docker/redis_6379/conf/redis.conf:/etc/redis/redis_6379.conf -v /usr/local/docker/redis_6379/data:/data_6379 --name redis_6379 redis redis-server /etc/redis/redis_6379.conf --appendonly no --requirepass "123456"

测试工具测试

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“centos7 通过docker安装redis” 的相关文章