5 分钟跑起 Redis(Docker 版)

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.aofdump.rdb。以后删了容器重新跑,数据还在。

七、常用管理命令

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

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

相关推荐
y = xⁿ2 小时前
MySQL:count(1)与count(*)有什么区别,深分页问题
android·数据库·mysql
m0_493934532 小时前
Go语言中 & 与 - 的本质区别及指针使用详解
jvm·数据库·python
gjc5922 小时前
踩坑案例:容器方式部署的MySQL无法访问?
数据库·mysql
Greyson12 小时前
Redis如何解决哨兵通知延迟问题_优化客户端连接池动态刷新拓扑的订阅监听机制
jvm·数据库·python
bekote2 小时前
笔记|数据库
数据库·笔记
Dream of maid2 小时前
Mysql(8)约束
数据库·mysql
程序边界3 小时前
KingbaseES 表空间目录自动创建特性深度解析(下篇)
数据库·oracle
Jul1en_3 小时前
【Redis】Zset类型、命令及应用场景
数据库·redis·缓存
晨曦夜月3 小时前
mysql事务的基本操作
数据库·mysql