5 分钟跑起 Redis(Docker 版)

针对 Windows 开发者,只要你有 Docker Desktop,就能很方便的玩 Redis 。

本次导航:

  • 一条命令拉起来一个 Redis
  • 连上 Redis 并敲命令
  • 怎么给 Redis 配个自定义配置文件
  • 数据怎么存下来(不会一关容器就丢)
  • 怎么停、怎么删、怎么清空重来

发车前温馨提醒:

如果你对 Docker 还不太熟悉,强烈建议先看如下几篇文章:

👉 容器化技术之Docker-从入地到上天

👉 Windows 下 Docker 安装与使用全攻略

👉 Docker 真香定律:Windows 开发者如何用容器偷懒高效工作

👉 Docker 进阶指南-Windows版:从镜像定制到容器编排,手把手带你玩转 Docker 实战

👉 Docker 网络完全指南

它会帮你搞懂镜像、容器、卷挂载、端口映射这些概念,再回来看这篇就毫无压力了。

一、为什么用 Docker?

以前想在 Windows 上跑 Redis,要么装 WSL 自己编译,要么找第三方 exe(版本老不说,还容易缺依赖)。

有了 Docker Desktop,所有环境问题一句话解决:镜像拉下来就能跑,Linux 内核在容器里模拟好了。

总之,用 Docker 省时又省力!

二、一条命令跑起 Redis

打开你的终端(Windows 上用 PowerShell 或 CMD 都行),执行:

bash 复制代码
docker run -d --name redis-demo -p 6379:6379 redis:latest

解释一下这几个参数:

  • -d:后台运行,不霸占终端
  • --name redis-demo:给容器起个名字,方便后面操作
  • -p 6379:6379:把宿主机的 6379 端口映射到容器的 6379 端口(Redis 默认端口)
  • redis:latest:使用官方最新版镜像(目前是 8.6.2)

跑完之后,用 docker ps 看一眼,应该能看到一个叫 redis-demo 的容器在运行。

当然了,既然用了 Docker Desktop,我们还可以直接在 Desktop 查看镜像和容器,如下图所示:

三、连接 Redis 并敲命令

用容器自带的 redis-cli(推荐,不用装额外东西)

bash 复制代码
docker exec -it redis-demo redis-cli

执行后你会看到 127.0.0.1:6379> 提示符,这就是 Redis 命令行界面了。

敲几个命令试试:

powershell 复制代码
127.0.0.1:6379> SET name "redis-beginner"
OK
127.0.0.1:6379> GET name
"redis-beginner"
127.0.0.1:6379> INCR counter
(integer) 1
127.0.0.1:6379> INCR counter
(integer) 2
127.0.0.1:6379> GET counter
"2"
127.0.0.1:6379>

要退出 redis-cli,按 Ctrl+C 或输入 exit。

四、基本操作速览(先混个脸熟)

Redis 最常用的几类命令,咱们先玩一遍:

bash 复制代码
# string 类型
SET user:1001 "zhangsan"
GET user:1001

# 给数字加一
SET views 0
INCR views
INCRBY views 10

# 列表操作
LPUSH queue "task1"
LPUSH queue "task2"
RPOP queue   # 弹出 "task1"

# 哈希操作
HSET user:1002 name "lisi" age 25
HGET user:1002 name
HGETALL user:1002

# 查看所有 key(生产环境慎用,这里只是试试)
KEYS *

每一条命令你都能看到即时返回结果。后面我会有专门的文章讲每种数据结构。

五、给 Redis 加点配置:挂载自定义 redis.conf

默认的 Redis 是"裸奔"的:没有密码、内存不限制、持久化也没开。如果你想改配置,可以自己写一个 redis.conf。

5.1 创建一个最小配置文件

在你电脑上新建一个目录,比如 D:\redis-conf,里面创建一个 redis.conf 文件,内容如下:

conf 复制代码
# 允许所有 IP 访问
bind 0.0.0.0

# 设置密码
requirepass mypassword

# 最大内存 256MB
maxmemory 256mb

# 内存满了之后驱逐策略
maxmemory-policy allkeys-lru

# 开启 AOF 持久化(每秒钟 fsync 一次)
appendonly yes
appendfsync everysec

5.2 用配置文件启动容器

先停掉之前的容器:

bash 复制代码
docker stop redis-demo
docker rm redis-demo

然后重新启动,并挂载配置文件:

bash 复制代码
docker run -d --name redis-demo -p 6379:6379 -v D:/redis-conf/redis.conf:/usr/local/etc/redis/redis.conf redis:latest redis-server /usr/local/etc/redis/redis.conf

注意:

  • -v 前面是 Windows 上的路径,后面是容器内的路径(不要写反)
  • 最后的 redis-server /usr/local/etc/redis/redis.conf 告诉容器启动时用这个配置文件

启动后,如果你在 redis.conf 里设置了 requirepass,再连 redis-cli 时就需要认证:

bash 复制代码
docker exec -it redis-demo redis-cli -a mypassword

或者连上之后再输入 AUTH mypassword。

六、持久化数据:别让 Redis 失忆

上面已经通过 appendonly yes 打开了 AOF,所有写操作会记录到 appendonly.aof 文件里。

但这个文件存在容器内部,一旦删掉容器,数据也就没了。所以还需要把数据目录挂载出来:

bash 复制代码
# 先创建数据目录,比如 D:\redis-data
docker run -d --name redis-demo -p 6379:6379 \
  -v D:/redis-conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v D:/redis-data:/data \
  redis:latest redis-server /usr/local/etc/redis/redis.conf

容器里的 /data 目录会映射到 Windows 的 D:\redis-data,里面会生成 appendonly.aof 或 dump.rdb。以后删了容器重新跑,数据还在。

七、常用管理命令

  • 查看容器日志 :docker logs redis-demo
  • 停止容器 :docker stop redis-demo
  • 启动已存在的容器 :docker start redis-demo
  • 删除容器(彻底清空) :docker rm redis-demo
  • 进入容器内部 bash :docker exec -it redis-demo /bin/bash

OK,本次导航结束,下次继续。

相关推荐
m0_639906946 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
学长毕设6 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
todoitbo7 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
滴滴答答哒7 小时前
ASP.NET Core + FaceRecognitionDotNet 人脸识别实战:DI 单例、特征向量持久化与 1:N 比对
后端·asp.net
captain3769 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
IT_陈寒11 小时前
Java序列化踩坑记:对象循环引用让我加班两小时
前端·人工智能·后端
泡海椒11 小时前
05-雷达图多维画像-信用评级多维画像
后端
王中阳Go11 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
大哥430911 小时前
Modbus 的"字序":一个配错就变成天文数字,或者干脆变成 0
后端
岩钧11 小时前
New API 源码解析:一个生产级 AI 网关的架构与实现
后端