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 都行),执行:
dockerrun-d--nameredis-demo-p6379: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(推荐,不用装额外东西)
dockerexec-itredis-demo redis-cli执行后你会看到127.0.0.1:6379>提示符,这就是 Redis 命令行界面了。
敲几个命令试试:
127.0.0.1:6379>SETname"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 最常用的几类命令,咱们先玩一遍:
# string 类型SET user:1001"zhangsan"GET user:1001# 给数字加一SET views0INCR views INCRBY views10# 列表操作LPUSH queue"task1"LPUSH queue"task2"RPOP queue# 弹出 "task1"# 哈希操作HSET user:1002 name"lisi"age25HGET user:1002 name HGETALL user:1002# 查看所有 key(生产环境慎用,这里只是试试)KEYS *每一条命令你都能看到即时返回结果。后面我会有专门的文章讲每种数据结构。
五、给 Redis 加点配置:挂载自定义 redis.conf
默认的 Redis 是“裸奔”的:没有密码、内存不限制、持久化也没开。如果你想改配置,可以自己写一个redis.conf。
5.1 创建一个最小配置文件
在你电脑上新建一个目录,比如D:\redis-conf,里面创建一个redis.conf文件,内容如下:
# 允许所有 IP 访问 bind 0.0.0.0 # 设置密码 requirepass mypassword # 最大内存 256MB maxmemory 256mb # 内存满了之后驱逐策略 maxmemory-policy allkeys-lru # 开启 AOF 持久化(每秒钟 fsync 一次) appendonly yes appendfsync everysec5.2 用配置文件启动容器
先停掉之前的容器:
dockerstop redis-demodockerrmredis-demo然后重新启动,并挂载配置文件:
dockerrun-d--nameredis-demo-p6379:6379-vD:/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时就需要认证:
dockerexec-itredis-demo redis-cli-amypassword或者连上之后再输入AUTH mypassword。
六、持久化数据:别让 Redis 失忆
上面已经通过appendonly yes打开了 AOF,所有写操作会记录到appendonly.aof文件里。
但这个文件存在容器内部,一旦删掉容器,数据也就没了。所以还需要把数据目录挂载出来:
# 先创建数据目录,比如 D:\redis-datadockerrun-d--nameredis-demo-p6379:6379\-vD:/redis-conf/redis.conf:/usr/local/etc/redis/redis.conf\-vD:/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,本次导航结束,下次继续。