redis单机(启用外部配置文件)使用docker compose部署

news/2025/1/10 16:00:12/文章来源:https://www.cnblogs.com/hxlasky/p/18664133

环境:
OS:Centos 7
redis:7.4.0

1.准备redis配置文件

[root@localhost redisconf]# more redis.conf 
##daemonize yes
dir ./
port 6379
tcp-backlog 511
timeout 300
tcp-keepalive 300
loglevel notice
logfile "redis-6379.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump-6379.rdb
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes
appendfilename "redis-6379.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated 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
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
# Generated by CONFIG REWRITE
masterauth "hxl123"
requirepass "hxl123"
protected-mode yes
maxmemory-policy allkeys-lfu
maxmemory 4gb
maxmemory-samples 5

关键点:
daemonize必须设置为no或是注释掉

 

2.准备目录
mkdir -p /home/middle/redis_docker_compose ##docker-compose.yml
mkdir -p /home/middle/redis_docker_compose/redis/config ##这个目录需要提前创建好,redis配置文件存放到该目录

 

3.准备yaml配置文件

 

[root@localhost redis_docker_compose]# more docker-compose.yml 
version: '3'
services:redis:image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/redis:7.4container_name: redisrestart: alwaysports:- "6379:6379"volumes:- "./redis/data:/data"- "./redis/config:/etc/redis"command: redis-server /etc/redis/redis.conf

 

关键点说明:
a.需要外挂整个配置目录,而不是单个配置文件
正确的:
- "./redis/config:/etc/redis"
错误的:
- "./redis/config/redis.conf:/etc/redis/redis.conf"
这种情况会出现使用config rewrite 保持修改提示权限不足的问题
192.168.1.134:6379> config rewrite
(error) ERR Rewriting config file: Permission denied

b.数据外挂目录./redis/data,不需要提前创建,容器启动的时候会自动创建.

 

4.启动
[root@localhost redis_docker_compose]# cd /home/middle/redis_docker_compose
[root@localhost redis_docker_compose]# docker compose up -d

 

5.客户端尝试登录
[root@host135 bin]# /usr/local/services/redis/bin/redis-cli -h 192.168.1.134 -a hxl123 -p 6379
尝试修改参数,然后保存
192.168.1.134:6379> config set maxmemory 5GB
OK
192.168.1.134:6379> config rewrite
(error) ERR Rewriting config file: Permission denied

提示权限不足

6.登录容器修改配置目录权限
docker exec -ti redis /bin/bash

root@4129d74bc933:/data# ls -al
total 4
drwxr-xr-x 3 redis root 49 Jan 10 07:32 .
drwxr-xr-x 1 root root 17 Jan 10 07:32 ..
drwx------ 2 redis redis 103 Jan 10 07:32 appendonlydir
-rw------- 1 redis redis 1284 Jan 10 07:32 redis-6379.log

我们看到容器里面的redis是使用redis账号启动的,我们查看下配置文件所在的目录权限
root@49cb89886715:/data# cd /etc/redis
root@49cb89886715:/etc/redis# ls -al
total 4
drwxrwxr-x 2 root root 24 Jan 10 07:39 .
drwxr-xr-x 1 root root 19 Jan 10 07:40 ..
-rw-rw-r-- 1 root root 1246 Jan 10 07:39 redis.conf


修改容器里的目录权限为redis
root@4129d74bc933:/etc/redis# chown -R redis:redis /etc/redis

再次保持执行就可以了
192.168.1.134:6379> config rewrite
OK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/867191.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异地多活架构进阶:如何解决写后立即读场景问题?【转】

在《醍醐灌顶!异地多活架构设计看这篇就够了》一文中,基于容灾需要,讨论了数据写入的架构模型。数据读取方面,重点在于解决读取请求的负载分担、路由选择的问题,对于容灾架构的选择影响不大。不过,其中的“写后立即读”场景,是个一致性范畴的问题,即写入的数据和写入后…

JAVA之面向对象

1、设计对象并使用类和对象 类(设计图):是对象共同特征的描述; 对象:是真实存在的具体实例; 在java中,必须先设计类,才能获得对象。 如何得到类的对象:类名 对象名 = new 类名(); 如何使用对象: 访问属性:对象名.成员变量 访问行为:对象名.方法…

免费手动打Windows Server补丁

免费手动打Windows Server 2008 R2补丁https://catalog.update.microsoft.com/search.aspx?q=kb4474419然后到windows上双击运行即可本文来自博客园,作者:六月OvO,转载请注明原文链接:https://www.cnblogs.com/chenlifan/p/18664077

pwn1_sctf_2016 1

打开ida反汇编看一下,是c++,无所谓,复制问一下ai先让我们输入s的数据,读取长度限制在32字节。然后replace函数会将s里面的 I 替换成 you 。最后输出s。 分析一下,s距离ebp为0x3C(60字节),且我们最多只能输入32字节的,但经过replace函数,一个字节的‘I’会被替换成三个…

UDS-ECU程序刷写

UDS(unified diagnostic services)统一诊断服务主要是针对汽车上对ECU进行诊断服务规范,下图是UDS在OSI分层中的具体规范,基于UDS的刷写应用逻辑体现在应用层的ISO14229规范。一、功能介绍 UDS(unified diagnostic services)统一诊断服务主要是针对汽车上对ECU进行诊断服…

主体分割技术,提升图像信息提取能力

在智能设备普及和AI技术进步的推动下,用户对线上互动的质量、个性化以及沉浸式体验的追求日益增强。例如,对于热衷于图片编辑或视频制作的用户来说,他们需要一种快速而简便的方法来将特定主体从背景中分离出来。 HarmonyOS SDK 基础视觉服务(Core Vision Kit)提供主体分割…

qt 实现窗口置顶,qtdesigner创建的widget窗口集成程序里的用法

参考 https://blog.csdn.net/Larry_Yanan/article/details/123518788 .ui文件如下新建的ui文件,编译一下就会生成对应的 ui_xxx.h 文件,文件内就有对应的 namespace Ui 声明的变量,这个变量要在mainwindow.h中声明,然后在mainwindow.cpp中new出来,具体使用如下 mainwindow…

如何在市场推广活动中实现精准的任务分配?5个项目管理技巧

一、引言 随着市场竞争的加剧和消费者需求的多样化,企业对市场推广活动的要求越来越高。市场推广活动不仅需要创意和精准的目标定位,还需要高效的执行和完善的管理。在这种背景下,如何通过有效的活动管理来提升推广活动的执行力,已成为市场团队面临的一个巨大挑战。 市场推…

Android编译 - 证书介绍

前言全局说明一、说明 1.1 环境: Android1.2 简介 在Android系统中,每个APK文件必须有一个有效的数字证书来证明其来源和完整性。当需要修改APK后再次发布时,原有的签名将不再有效,因此需要重新签名。二、证书工具 2.1 路径: android/build/tools/releasetools/sign_target…

域名解析的QPS防护值是什么?

在当今数字化的时代,互联网已经渗透到生活的方方面面,而域名解析作为互联网运行的关键环节之一,起着至关重要的作用。其中,域名解析的QPS防护值更是保障网络稳定、安全与高效的一个重要指标。 一、QPS 防护值的定义与内涵 QPS,即Queries Per Second,意为每秒查询次数。域…

远程开机详细教程

要实现远程开机,被控端必须满足以下条件: 1.目前仅支持windows系统实现远程开机 2.被控端所在局域网内,需要有另一台设备保持todesk在线 如:其他电脑、iPhone、iPad、Android 设备(手机、平板)、家人的手机(充当辅助开机设备) 如图,辅助开机设备需显示在线,离线状态无法发…

CH585的SPI驱动WS2812

目录 链接: https://pan.baidu.com/s/1Su5dgmVWLre5kH2fYiGwQQ?pwd=wch6 CH573系列/583系列/592系列MCU,在使用SPI模拟WS2812波形时,MISO-PA15引脚上的实时电平,会影响MOSI-PA14引脚上的空闲电平状态,故建议SPI驱动WS2812的场景下,固定PA15的电平,不要接其他外设。异常场…