当前位置: 首页 > article >正文

使用docker 安装Redis 带配置文件(x86和arm)版本

一、安装redis
1.1 拉去ARM镜像(7.4.2)

docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_redis:latest

1.2 拉去x86镜像(8.0.1)版本

docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest
新建文件夹
mkdir -p /data/redis/conf
cd /data/redis/conf
创建文件
touch redis.config
3-编写文件内容  (进入后 i 子母键插入,黏贴下面配置,:wq! 保存并退出)
vim redis.config

本次使用的配置文件 redis.config

# Redis服务器配置 
# 绑定IP地址
#解除本地限制 注释bind 127.0.0.1  
#bind 127.0.0.1  # 服务器端口号  
port 6379 #配置密码,不要可以删掉
requirepass 87vhqEneQ5u8#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定(自定义)
#pidfile /data/redis/redis/run/redis6379.pid  #默认为no,redis持久化,可以改为yes
appendonly yes#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 60
# 服务器系统默认配置参数影响 Redis 的应用
maxclients 10000
tcp-keepalive 300#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合(分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改)
save 900 1
save 300 10
save 60 10000# 按需求调整 Redis 线程数
tcp-backlog 511
# 设置数据库数量,这里设置为16个数据库  
databases 16
# 启用 AOF, AOF常规配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 慢查询阈值
slowlog-log-slower-than 10000
slowlog-max-len 128# 是否记录系统日志,默认为yes  
syslog-enabled yes  #指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel notice# 日志输出文件,默认为stdout,也可以指定文件路径  
logfile stdout# 日志文件
#logfile /var/log/redis/redis-server.log# 系统内存调优参数   
# 按需求设置
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

下面是关于配置文件详解,参考的使用:

daemonize no
默认情况下,redis不是在后台运行的。如果需要在后台运行,把该项的值更改为yes。pidfile /var/run/redis.pid
当redis在后台运行的时候,redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他位置。当运行多个redis服务时,需要指定不同的pid文件和端口。port 6379
指定redis运行的端口,默认是6379。bind 127.0.0.1
指定redis只接收来自于该IP地址的请求看,如果不进行设置,那么将处理所有请求。在生产环境中最好设置该项。loglevel debug
指定日志记录级别,其中redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose。
1 . debug表示记录很多信息,用于开发和测试
2.verbose表示记录有用的信息, 但不像debug会记录那么多
3.notice表示普通的verbose,常用于生产环境
4.warning 表示只有非常重要或者严重的信息会记录到日志logfile /var/log/redis/redis.log
配置log文件地址,默认值为stdout。若后台模式会输出到/dev/null。databases 16
可用数据库数,默认值为16,默认数据库为0,数据库范围在0~15之间切换,彼此隔离。save
保存数据到磁盘,格式为save,指出在多长时间内,有多少次更新操作,就将数据同步到数据文件rdb。相当于条件触发抓取快照,这个可以多个条件配合。
save 9001就表示900秒内至少有1个key被改变就保存数据到磁盘。rdbcompression yes
存储至本地数据库时(持久化到rdb文件)是否压缩数据,默认为yes。dbfilename dump.rdb
本地持久化数据库文件名,默认值为dump.rdb。dir ./
工作目录,数据库镜像备份的文件放置的路径。这里的路径跟文件名要分开配置是因为redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,再把该临时文件替换为上面所指定的文件。 而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中,AOF文件也会存放在这个目录下面。 注意这里必须指定一个目录而不是文件。slaveof
主从复制,设置该数据库为其他数据库的从数据库。设置当本机为slave服务时,设置master服务的IP地址及端口。 在redis启动时,它会自动从master进行数据同步。masterauth
​当master服务设置了密码保护时(用requirepass制定的密码)slave服务连接master的密码。slave-serve-stale-data yes
当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:
如果slave-serve-stale-data设置为 yes(默认设置),从库会继续相应客户端的请求。
如果slave-serve-stale-data是指为no,除去INFO和SLAVOF命令之外的任何请求都会返回一个错误"SYNC with master in progress"。repl-ping-slave-period 10
从库会按照一个时间间隔向主库发送PING,可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒。repl-timeout 60
设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒,一定要确保repl-timeout大于repl-ping-slave-period。requirepass foobared
设置客户端连接后进行任何其他指定前需要使用的密码。因为redis速度相当快,所以在一台比较好的服务器平台下, 一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常强大的密码来防止暴力破解。rename​command CONFIG “”
命令重命名,在一个共享环境下可以重命名相对危险的命令,比如把CONFIG重名为一个不容易猜测的字符:
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
如果想删除一个命令,直接把它重命名为一个空字符""即可:rename-command CONFIG “”。maxclients 128
设置同一时间最大客户端连接数,默认无限制。redis可以同时打开的客户端连接数为redis进程可以打开的最大文件描述符数。
如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,redis会关闭新的连接并向客户端返回max number of clients reached错误信息。maxmemory
指定redis最大内存限制。redis在启动时会把数据加载到内存中,达到最大内存后,redis会先尝试清除已到期或即将到期的key,redis同时也会移除空的list对象。当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。
注意:redis新的vm机制,会把key存放内存,value会存放在swap区。maxmemory-policy volatile-lru
当内存达到最大值的时候redis会选择删除哪些数据呢?有五种方式可供选择:
1.volatile-lru代表利用LRU算法移除设置过期时间的key(LRU:最近使用LeastRecentlyUsed)
2.allkeys-lru代表利用LRU算法移除任何key
3.volatile-random代表移除设置过过期时间的随机key
4.allkeys_random代表移除一个随机的key
5. volatile-ttl代表移除即将过期的key(minor TTL)
6. noeviction代表不移除任何key,只是返回一个写错误
注意:对于上面的策略,如果没有合适的key可以移除,写的时候redis会返回一个错误。appendonly no
默认情况下,redis会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁。 如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失,所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。
开启append only模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly. aof文件中。当redis重新启动时,会从该文件恢复出之前的状态,但是这样会造成appendonly. aof文件过大,所以redis还支持BGREWRITEAOF指令对appendonly.aof。appendfilename appendonly.aof
AOF文件名称,默认为"appendonly.aof"。appendfsync everysec
redis支持三种同步AOF文件的策略:
1.no代表不进行同步,系统去操作
2.always代表每次有写操作都进行同步
3.everysec代表对写操作进行累积,每秒同步一次,默认是"everysec",按照速度和安全折中这是最好的slowlog-log-slower-than 10000
记录超过特定执行时间的命令。执行时间不包括I/O计算,比如连接客户端,返回结果等。只是命令执行时间,可以通过两个参数设置slow log:一个是告诉Redis执行超过多少时间被记录的参数slowlog-log-slower-than(微妙),另一个是slow log 的长度。
当一个新命令被记录的时候最早的命令将被从队列中移除,下面的时间以微妙微单位,因此1000000代表一分钟。注意制定一个负数将关闭慢日志,而设置为0将强制每个命令都会记录。hash-max-zipmap-entries 512 && hash-maxz-ipmap-value 64
当hash中包含超过指定元素个数并且最大的元素没有超过临界时,hash将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值。Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现。这个Hash的成员比较少时redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObject的encoding为zipmap。当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。hash-max-zipmap-entries 512 512
list数据类型多少节点以下会采用去指针的紧凑存储格式。list-max-ziplist-value 64
数据类型节点值大小小于多少字节会采用紧凑存储格式。setmaxintsetentries 512
set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储。zsetmaxziplistentries 128
zsort数据类型多少节点以下会采用去指针的紧凑存储格式。zsetmaxziplistvalue 64
zsort数据类型节点值大小小于多少字节会采用紧凑存储格式。activerehashing yes
redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash,可以降低内存的使用。
当你的使用场景中,有非常严格的实时性需要,不能够接受redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可能快的释放内存。

三、运行容器,使用上面配置文件启动

docker run -d -it --privileged=true --restart=always -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/log/:/var/log/redis/ -v /data/redis/data:/data -d registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 87vhqEneQ5u8
–privileged=true :容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-p:端口映射,此处映射 主机6379端口 到 容器的6379端口
-v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
新建配置文件书卷:  -v /data/redis/conf/redis.config:/etc/redis/redis.config
redis数据保存数据卷  -v /data/redis/data:/data
reids日志文数据卷  -v /data/redis/logs:/var/log/redis/
-d : 表示使得容器后台一直运行
redis-server /etc/redis/redis.conf:指定配置文件启动redis-server进程
–appendonly yes:开启数据持久化
–requirepass 87vhqEneQ5u8:设置你的密码,设置密码比较安全
  1. 设置开机自动启动容器
docker update --restart=always <容器ID或名称>

作用:当宿主机重启或容器意外退出时,Docker 会自动重新启动该容器。
适用场景:
需要保持 Redis、MySQL 等关键服务长期运行。
希望容器能随 Docker 服务启动而自动启动(比如服务器重启后)。
2. 取消开机自动启动

docker update --restart=no <容器ID或名称>

作用:关闭容器的自动重启功能,容器退出后不会自动启动。
适用场景:
临时测试容器,不需要长期运行。
手动控制容器的启停。

相关文章:

使用docker 安装Redis 带配置文件(x86和arm)版本

一、安装redis 1.1 拉去ARM镜像&#xff08;7.4.2&#xff09; docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_redis:latest1.2 拉去x86镜像(8.0.1)版本 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest新建文件夹 mkd…...

在CSDN发布AWS Proton解决方案:实现云原生应用的标准化部署

引言&#xff1a;云原生时代的部署挑战 在云原生应用开发中&#xff0c;基础设施管理的复杂性已成为团队面临的核心挑战。随着微服务架构的普及&#xff0c;每个服务可能包含数十个AWS资源&#xff08;如Lambda、API Gateway、ECS集群等&#xff09;&#xff0c;传统的手动配置…...

小白的进阶之路系列之十----人工智能从初步到精通pytorch综合运用的讲解第三部分

本文将介绍Autograd基础。 PyTorch的Autograd特性是PyTorch灵活和快速构建机器学习项目的一部分。它允许在一个复杂的计算中快速而简单地计算多个偏导数(也称为梯度)。这个操作是基于反向传播的神经网络学习的核心。 autograd的强大之处在于它在运行时动态地跟踪你的计算,…...

[蓝桥杯]整理玩具

整理玩具 题目描述 小明有一套玩具&#xff0c;一共包含 NMNM 个部件。这些部件摆放在一个包含 NMNM 个小格子的玩具盒中&#xff0c;每个小格子中恰好摆放一个部件。 每一个部件上标记有一个 0 ~ 9 的整数&#xff0c;有可能有多个部件标记相同的整数。 小明对玩具的摆放有…...

C++11 Move Constructors and Move Assignment Operators 从入门到精通

文章目录 一、引言二、基本概念2.1 右值引用&#xff08;Rvalue References&#xff09;2.2 移动语义&#xff08;Move Semantics&#xff09; 三、移动构造函数&#xff08;Move Constructors&#xff09;3.1 定义和语法3.2 示例代码3.3 使用场景 四、移动赋值运算符&#xff…...

JavaScript 中的单例内置对象:Global 与 Math 的深度解析

JavaScript 中的单例内置对象&#xff1a;Global 与 Math 的深度解析 在 JavaScript 的世界中&#xff0c;单例内置对象是开发者必须了解的核心概念之一。它们是语言规范中预定义的对象&#xff0c;无需显式创建即可直接使用。本文将深入解析 JavaScript 中最重要的两个单例内…...

11 - ArcGIS For JavaScript -- 高程分析

这里写自定义目录标题 描述代码实现结果 描述 高程分析是地理信息系统(GIS)中的核心功能之一&#xff0c;主要涉及对地表高度数据(数字高程模型, DEM)的处理和分析。 ArcGIS For JavaScript4.32版本的发布&#xff0c;提供了Web端的针对高程分析的功能。 代码实现 <!doct…...

通道注意力

一、 什么是注意力 其中注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器&#xff0c;就像人类视觉会自动忽略背景&#xff0c;聚焦于图片中的主体&#xff08;如猫、汽车&#xff09;。 transformer中的叫做自注意力机制&#xff0c;他是一种自己学习自己的机制…...

2048游戏的技术实现分析-完全Java和Processing版

目录 简介Processing库基础项目构建指南项目结构核心数据结构游戏核心机制图形界面实现性能优化代码详解设计模式分析测试策略总结与展望简介 2048是一款由Gabriele Cirulli开发的经典益智游戏。本文将深入分析其Java实现版本的技术细节。该实现使用了Processing库来创建图形界…...

全国县域统计年鉴PDF-Excel电子版-2022年

全国县域统计年鉴PDF-Excel电子版-2022年.ziphttps://download.csdn.net/download/2401_84585615/89784662 https://download.csdn.net/download/2401_84585615/89784662 《中国县域统计年鉴》是一部全面反映中国县域社会经济发展状况的资料性年鉴。自2014年起&#xff0c;该年…...

平滑技术(数据处理,持续更新...)

一.介绍 “平滑”是一种用于减少数据中的短期波动、噪声或者异常值的技术&#xff0c;从而更清晰地揭示数据的长期趋势或周期性特征。 平滑的主要作用&#xff1a; 1.减少噪声。数据中常常包含各种随机噪声或误差&#xff0c;这些误差可能会掩盖数据的真实趋势。平滑可以降低…...

App 上线后还能加固吗?iOS 应用的动态安全补强方案实战分享(含 Ipa Guard 等工具组合)

很多开发者以为 App 一旦上线&#xff0c;安全策略也就定型了。但现实是&#xff0c;App 上线只是攻击者的起点——从黑产扫描符号表、静态分析资源文件、注入调试逻辑&#xff0c;到篡改功能模块&#xff0c;这些行为都可能在你“以为很安全”的上线版本里悄然发生。 本篇文章…...

gitlab CI/CD本地部署配置

背景: 代码管理平台切换为公司本地服务器的gitlab server。为了保证commit的代码至少编译ok&#xff0c;也为了以后能拓展test cases&#xff0c;现在先搭建本地gitlab server的CI/CD基本的编译job pipeline。 配置步骤&#xff1a; 先安装gitlab-runner: curl -L "ht…...

AI大模型在测试领域应用案例拆解:AI赋能的软件测试效能跃迁的四大核心引擎(顺丰科技)

导语 5月份QECon深圳大会已经结束&#xff0c;继续更新一下案例拆解&#xff0c;本期是来自顺丰科技。 文末附完整版材料获取方式。 首先来看一下这个案例的核心内容&#xff0c;涵盖了测四用例设计、CI/CD辅助、测试执行、监控预警四大方面&#xff0c;也是算大家比较熟悉的…...

从零搭建uniapp项目

目录 创建uni-app项目 基础架构 安装 uni-ui 组件库 安装sass依赖 easycom配置组件自动导入 配置view等标签高亮声明 配置uni-ui组件类型声明 解决 标签 错误 关于tsconfig.json中提示报错 关于非原生标签错误&#xff08;看运气&#xff09; 安装 uview-plus 组件库…...

数据库密码加密

数据库密码加密 添加jar包构建工具类具体使用优缺点 添加jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>构建工具类 public class PasswordUtil …...

GaLore:基于梯度低秩投影的大语言模型高效训练方法详解一

&#x1f4d8; GaLore&#xff1a;基于梯度低秩投影的大语言模型高效训练方法详解 一、论文背景与动机 随着大语言模型&#xff08;LLM&#xff09;参数规模的不断增长&#xff0c;例如 GPT-3&#xff08;175B&#xff09;、LLaMA&#xff08;65B&#xff09;、Qwen&#xff…...

OpenCV CUDA模块图像处理------图像融合函数blendLinear()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数执行 线性融合&#xff08;加权平均&#xff09; 两个图像 img1 和 img2&#xff0c;使用对应的权重图 weights1 和 weights2。 融合公式…...

Linux服务器如何安装wps?

1.到wps官网 https://www.wps.cn/product/wpslinux 2.到安装目录上执行命令 sudo dpkg -i wps-office*.deb 3.启动wps 在终端中输入 wps 命令即可启动 WPS...

图片压缩工具 | 图片生成PDF文档

OPEN-IMAGE-TINY&#xff0c;一个基于 Electron VUE3 的图片压缩工具&#xff0c;项目开源地址&#xff1a;https://github.com/0604hx/open-image-tiny ℹ️ 需求描述 上一版本发布后&#xff0c;有用户提出想要将图片转换&#xff08;或者说生成更为贴切&#xff09;PDF文档…...

Python的浅拷贝与深拷贝

一、浅拷贝 浅拷贝&#xff0c;指的是重新分配一块内存&#xff0c;创建一个新的对象&#xff0c;但里面的元素是原对象中各个子对象的引用。 浅拷贝有几种方法&#xff1a; 1、 使用数据类型本身的构造器 list1[1,2,3]list2 list(list1) # 使用了数据类型本身的构造器 list…...

VSCode - VSCode 放大与缩小代码

VSCode 放大与缩小代码 1、放大 点击顶部菜单栏【查看】 -> 点击外观 -> 点击【放大】 或者&#xff0c;使用快捷键&#xff1a;Ctrl # 操作方式先按住 Ctrl 键&#xff0c;再按 键2、缩小 点击顶部菜单栏【查看】 -> 点击外观 -> 点击【缩小】 或者&#x…...

消息队列处理模式:流式与批处理的艺术

&#x1f30a; 消息队列处理模式&#xff1a;流式与批处理的艺术 &#x1f4cc; 深入解析现代分布式系统中的数据处理范式 一、流式处理&#xff1a;实时数据的"活水" 在大数据时代&#xff0c;流式处理已成为实时分析的核心技术。它将数据视为无限的流&#xff0c;…...

11-Oracle 23ai Vector Embbeding和ONNX

Embedding &#xff08;模型嵌入&#xff09;是 AI 领域的一个核心概念 一、Embedding&#xff08;嵌入&#xff09;的含义 Embedding 是一种将 非结构化数据​&#xff08;如文本、图像、音频、视频&#xff09;转换为 数值向量的技术。 其核心是通过 嵌入模型​&#xff08;…...

Build a Large Language Model (From Scratch) 序章

关于本书 《从零构建大型语言模型》旨在帮助读者全面理解并从头创建类似GPT的大型语言模型&#xff08;LLMs&#xff09;。 全书首先聚焦于文本数据处理的基础知识和注意力机制的编码&#xff0c;随后指导读者逐步实现一个完整的GPT模型。书中还涵盖了预训练机制以及针对文本…...

【HarmonyOS 5】教育开发实践详解以及详细代码案例

以下是基于 ‌HarmonyOS 5‌ 的教育应用开发实践详解及核心代码案例&#xff0c;结合分布式能力与教育场景需求设计&#xff1a; 一、教育应用核心开发技术 ‌ArkTS声明式UI‌ 使用 State 管理学习进度状态&#xff0c;LocalStorageProp 实现跨页面数据同步&#xff08;如课程…...

NoSQL 之Redis哨兵

目录 一、Redis 哨兵模式概述 &#xff08;一&#xff09;背景与核心目标 &#xff08;二&#xff09;基本架构组成 &#xff08;三&#xff09;核心功能 二、哨兵模式实现原理 &#xff08;一&#xff09;配置关键参数 &#xff08;二&#xff09;哨兵节点的定时任务 …...

【nano与Vim】常用命令

使用nano编辑器 保存文件 &#xff1a; 按下CtrlO组合键&#xff0c;然后按Enter键确认文件名。 退出编辑器 &#xff1a; 按下CtrlX组合键。 使用vi或vim编辑器 保存文件 &#xff1a; 按Esc键退出插入模式&#xff0c;然后输入:w并按Enter键保存文件。 退出编辑器 &#xf…...

OpenCV 图像色彩空间转换与抠图

一、知识点: 1、色彩空间转换函数 (1)、void cvtColor( InputArray src, OutputArray dst, int code, int dstCn 0, AlgorithmHint hint cv::ALGO_HINT_DEFAULT ); (2)、将图像从一种颜色空间转换为另一种。 (3)、参数说明: src: 输入图像&#xff0c;即要进行颜…...

Amazing晶焱科技:电子系统产品在多次静电放电测试后的退化案例

在我们的电子设计世界里&#xff0c;ESD&#xff08;静电放电&#xff09;问题总是让人头疼。尤其是当客户面临系统失效的困境时&#xff0c;寻找一个能够彻底解决问题的方案就变得格外重要。这一次&#xff0c;我们要谈的是一个经典案例&#xff1a;电子系统产品在多次静电放电…...