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

【Docker】Redis基础命令在Docker中的使用

文章目录

  • 一 Redis 容器化部署指南
    • 1 获取 Redis 镜像
    • 2 服务启动
      • 2.1 首次启动新容器
      • 2.2 重启已有容器
    • 3 服务验证
    • 4 连接 Redis
    • 5 数据持久化方案
      • 5.1 使用 Docker 卷
      • 5.2 启用 AOF 持久化
    • 6 容器管理
      • 6.1 停止容器
      • 6.2 删除容器
    • 7 数据清理
      • 7.1 清空 Redis 数据
      • 7.2 完全移除
      • 7.3 删除数据卷
    • 8 最佳实践
  • 二 Redis 常用命令速查指南
    • 1 进入 Redis 终端
    • 2 安装 nano 编辑器
    • 3 查找 redis.conf 配置文件
    • 4 获取 Redis 服务器信息
    • 5 启用持久化配置
    • 6 检查 AOF 持久化状态
    • 7 查看容器日志
  • 三 Python脚本连接Redis的实践
  • 四 其它
    • 1 Redis基础数据操作命令
    • 2 Redis键管理命令
    • 3 Redis数据结构命令
    • 4 Redis持久化与性能相关命令

一 Redis 容器化部署指南

1 获取 Redis 镜像

docker pull redis:7.2-alpine  # 获取轻量级最新版本

2 服务启动

2.1 首次启动新容器

docker run -d -p 6379:6379 --name myredis redis:7.2-alpine  # 返回容器ID表示成功
  • 参数说明:

    -d:后台运行容器(detached模式)
    -p 6379:6379:容器到主机的端口映射
    --name myredis:容器命名
    redis:7.2-alpine:指定镜像版本

2.2 重启已有容器

docker start myredis

3 服务验证

docker ps -f name=myredis  # 检查容器状态

4 连接 Redis

docker exec -it myredis redis-cli  # 可附加参数:-h <host> -p <port> -a <password>
  • 参数说明:

    docker exec:在运行中容器执行命令
    -it:交互式终端
    redis-cli:Redis命令行工具
    -h/-p/-a:远程连接参数

5 数据持久化方案

5.1 使用 Docker 卷

docker run -d -p 6379:6379 -v redis-data:/data --name myredis redis:7.2-alpine
  • 说明:-v redis-data:/data将数据目录挂载到卷

5.2 启用 AOF 持久化

docker run -d -p 6379:6379 --name myredis redis:7.2-alpine redis-server --appendonly yes
  • 说明:--appendonly yes启用操作日志记录

6 容器管理

6.1 停止容器

docker stop myredis  # 持久化数据不受影响

6.2 删除容器

docker rm myredis  # 未持久化的数据将丢失

7 数据清理

7.1 清空 Redis 数据

docker exec -it myredis redis-cli FLUSHALL  # 保留容器

7.2 完全移除

docker stop myredis
docker rm myredis

7.3 删除数据卷

docker volume rm redis-data

8 最佳实践

  • 推荐使用 Docker 卷或目录挂载实现数据持久化
  • 配置持久化后,容器停止不会影响数据安全

二 Redis 常用命令速查指南

1 进入 Redis 终端

docker exec -it myredis sh
  • 参数说明:

docker exec:在运行中的容器内执行命令
myredis:目标容器名称
sh:启动Shell终端(通常为/bin/sh
注:sh与bash功能等价

2 安装 nano 编辑器

apk add --no-cache --virtual .editors nano
  • 参数说明:

--no-cache:跳过本地缓存,直接从远程仓库获取最新版本
--virtual .editors:创建.editors虚拟包组,便于后续批量卸载
nano:轻量级终端文本编辑器

3 查找 redis.conf 配置文件

find / -name redis.conf 2>/dev/null
  • 参数说明:

/:从根目录开始递归搜索
-name redis.conf:精确匹配文件名
2>/dev/null:屏蔽权限错误提示

4 获取 Redis 服务器信息

redis-cli INFO server
  • 参数说明:

INFO:Redis状态查询命令
server:返回版本号、运行时长等核心数据

5 启用持久化配置

redis-cli CONFIG SET appendonly yes
redis-cli CONFIG REWRITE

6 检查 AOF 持久化状态

docker exec -it myredis redis-cli CONFIG GET appendonly
# 返回yes表示已启用AOF持久化

7 查看容器日志

docker logs myredis

用于调试和监控Redis运行状态

三 Python脚本连接Redis的实践

import redis# 初始化Redis连接,设置主机、端口和编码等参数
r = redis.Redis(host='127.0.0.1', port=6379, decode_responses=True, encoding='utf-8', max_connections=100# 如需密码验证,添加password参数
)try:# 测试连接print('Redis连接测试:', r.ping())# 存储和获取数据r.set('name', 'Alice')print('获取name值:', r.get('name'))# 计数器操作r.incr('counter', 5)print('计数器增加5后的值:', r.get('counter'))# 删除和检查键r.delete('name')print('检查name键是否存在:', r.exists('name'))print('检查counter键是否存在:', r.exists('counter'))except redis.exceptions.ConnectionError as e:print('连接错误:', e)# 预期输出
"""
Redis连接测试: True
获取name值: Alice
计数器增加5后的值: 25
检查name键是否存在: 0
检查counter键是否存在: 1
"""

容器化部署注意事项:当Redis运行在Docker容器中且Python脚本位于另一容器时,需将host参数设为Redis容器名称(如’myredis’)或内部网络IP地址。

四 其它

1 Redis基础数据操作命令

SET key value 设置键值对,例如 SET username "admin"username 存储为"admin"
GET key 获取键的值,如 GET username 返回存储的 "admin"
DEL key 删除键,如 DEL username 移除 username 键及其值。

2 Redis键管理命令

KEYS pattern 查找匹配模式的键,如 KEYS * 列出所有键。
EXISTS key 检查键是否存在,返回10
EXPIRE key seconds 设置键的过期时间,例如 EXPIRE session_id 3600使 session_id 在 3600 秒后失效。

3 Redis数据结构命令

LPUSH list_key value 向列表左侧插入值,如 LPUSH tasks "task1"
RPOP list_key 移除并返回列表右侧的值。
HSET hash_key field value 设置哈希字段值,如 HSET user:id1 name "Alice"
HGET hash_key field 获取哈希字段的值,如 HGET user:id1 name 返回 "Alice"

4 Redis持久化与性能相关命令

SAVE 手动触发 RDB 持久化,将数据同步保存到磁盘。
BGSAVE 后台异步保存数据到磁盘,不阻塞客户端请求。
INFO 查看 Redis 服务器状态信息,包括内存、客户端、持久化等数据。

http://www.xdnf.cn/news/17188.html

相关文章:

  • 试用一个用v语言编写的单文件数据库vsql
  • 计算机视觉--opencv(代码详细教程)
  • 投资股票心态
  • Swift 实战:高效设计 Tic-Tac-Toe 游戏逻辑(LeetCode 348)
  • 微算法科技(NASDAQ:MLGO)利用集成学习方法,实现更低成本、更稳健的区块链虚拟货币交易价格预测
  • 软件运行时 ffmpeg.dll 丢失怎么办?从原因排查到完美修复的完整方案
  • 开源大模型实战:GPT-OSS本地部署与全面测评
  • [失败记录] 使用HBuilderX创建的uniapp vue3项目添加tailwindcss3的完整过程
  • 前端三大核心要素以及前后端通讯
  • VBA之Word应用第四章第一节:段落集合Paragraphs对象(一)
  • 告别复杂配置!cpolar让Prometheus监控突破网络限制
  • 在新建word中使用以前文件中的列表样式
  • 使用nvm管理多个node版本(附安装教程)
  • Mac+Chrome滚动截图
  • windows内核研究(内存管理-线性地址的管理)
  • 前端百分比展示导致后端 BigDecimal 转换异常的排查与解决
  • 【数据库】如何从本地电脑连接服务器上的MySQL数据库?
  • 第二集 测试概念
  • 3a服务器的基本功能1之身份认证
  • 【ee类保研面试】数学类---概率论
  • 嵌入式硬件学习(十一)—— platform驱动框架
  • 基于 HT 引擎实现 3D 智慧物流转运中心一体化管控系统
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的用户留存策略研究
  • 计算机基础·linux系统
  • 解决Git提交人信息默认全局化问题:让提交人自动关联当前用户
  • 阿里云部署若依后,浏览器能正常访问,但是apifox和小程序访问后报错链接被重置
  • 【保姆级喂饭教程】python基于mysql-connector-python的数据库操作通用封装类(连接池版)
  • 动态代理常用的两种方式?
  • 大疆无人机使用eport连接Jetson主板实现目标检测
  • 异构系统数据集成之数据源管理:打通企业数据孤岛的关键一步