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

Docker 安装 Redis

以下是基于 Docker 安装 Redis 的完整步骤,整合自多个可信度较高的来源:

一、拉取 Redis 镜像

docker pull redis:latest  # 拉取最新版本
# 或指定版本,如:docker pull redis:7.0.12

💡 提示:建议使用官方镜像并指定稳定版本号以保障兼容性。


二、准备配置文件与目录

  1. 创建本地目录(Linux/macOS):
    mkdir -p /opt/docker/redis/{conf,data}  # 配置文件与数据存储目录
    
  2. 下载并修改配置文件
    wget -O /opt/docker/redis/conf/redis.conf \https://raw.githubusercontent.com/redis/redis/7.0/redis.conf  # 获取官方模板
    
  3. 关键配置项修改(编辑 redis.conf):
    bind 0.0.0.0              # 允许所有 IP 访问
    protected-mode no         # 关闭保护模式(需配合密码使用)
    requirepass yourpassword  # 设置访问密码(替换 yourpassword)
    appendonly yes            # 启用 AOF 持久化
    dir /data                 # 容器内数据存储路径(需与挂载目录对应)
    daemonize no              # Docker 中必须设为 no
    

三、启动 Redis 容器

docker run -d --name redis-server \-p 6379:6379 \  # 宿主机端口:容器端口-v /opt/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \  # 挂载配置文件-v /opt/docker/redis/data:/data \  # 挂载数据目录(持久化存储)--restart always \  # 容器退出时自动重启redis:latest \redis-server /usr/local/etc/redis/redis.conf  # 指定配置文件启动

Windows 路径注意
若在 Windows 使用 Docker Desktop,需将路径如 C:\RedisConfig 转换为 /c/RedisConfig


四、验证与连接

  1. 检查容器状态
    docker ps -f name=redis-server  # 查看运行状态
    
  2. 命令行连接测试
    docker exec -it redis-server redis-cli
    127.0.0.1:6379> AUTH yourpassword  # 认证密码
    127.0.0.1:6379> SET test "OK"      # 测试写入
    

关键配置说明

配置项作用必要性
requirepass设置客户端连接密码生产环境必选
appendonly yes启用 AOF 持久化(避免数据丢失)推荐启用
dir /data指定容器内数据存储目录需与挂载目录匹配
protected-mode no关闭保护模式(允许远程连接)依赖网络访问时必选

🔒 安全建议
若需公网访问,应通过防火墙限制 IP 或启用 Redis ACL 功能。

引用链接:
1.5分钟教你docker安装启动redis全教程(全新方式) - 简书社区
2.Quick starts - Redis官网
3.docker安装redis - CSDN博客
4.Docker安装Redis - 博客园
5.在Windows 上使用 Docker Desktop 通过配置文件启动 Redis 容器 - 神龙大侠阿宝
6.在Centos Stream 9上Docker的实操教程(五)- Dockerfile详解 - Micro麦可乐
7.使用Docker 安装 Redis 的完整指南 - CSDN博客
8.Linux使用Docker部署安装应用 - CSDN博客
9.018-docker方式安装redis软件 - 哔哩哔哩
10.【尚学堂】四分钟教会你用docker安装redis; - 哔哩哔哩
11.基于Docker环境快速安装使用Redis6 - 知乎
12.40Docker安装和部署容器化Redis - 哔哩哔哩
13.MacOS安装Redis完全指南 - Homebrew与Docker两种方式详解 - 哔哩哔哩
14.Docker学习实践-如何在线或离线安装Redis Docker镜像 - 哔哩哔哩
15.云服务器java环境搭建一条龙(7)—— docker安装redis - 哔哩哔哩
16.【GeekHour】一小时Redis教程 - 哔哩哔哩
17.009-快速入门-微服务环境搭建-使用docker安装redis - 哔哩哔哩
18.使用Docker安装MySQL和Redis的详细步骤 - 哔哩哔哩
19.Install Redis Open Source - Redis官网
20.Accelerate how you build, share, and run applications - Docker官网


以下是 Redis 五种核心数据类型的典型应用场景及示例代码,结合生产环境常见需求整理:


1. String(字符串)

应用场景:缓存、计数器、分布式锁
示例

# 缓存用户信息(JSON格式)
SET user:1001 '{"name":"Alice","age":30}' EX 3600  # 缓存1小时# 实现分布式锁(SETNX + EXPIRE)
SETNX lock:order_123 1  # 获取锁(非阻塞)
EXPIRE lock:order_123 10  # 设置10秒过期# 计数器(原子递增)
INCR page_views:home  # 主页访问量+1

2. Hash(哈希)

应用场景:存储对象属性、购物车
示例

# 存储用户属性(避免频繁全量更新)
HSET user:1001 name "Bob" age 25 email "bob@example.com"# 查询部分字段(节省带宽)
HGET user:1001 name  # 返回 "Bob"# 购物车商品
HMSET cart:user_456 item1_sku "123" item1_qty 2
HINCRBY cart:user_456 item1_qty 1  # 商品数量+1

3. List(列表)

应用场景:消息队列、最新消息列表
示例

# 简单消息队列(LPUSH + RPOP)
LPUSH my_queue "task1"  # 生产者入队
RPOP my_queue           # 消费者出队# 朋友圈时间线(LPUSH + LRANGE)
LPUSH timeline:1001 "post1"  # 用户发帖
LRANGE timeline:1001 0 9     # 获取最近的10条

4. Set(集合)

应用场景:标签系统、去重
示例

# 用户兴趣标签
SADD user:1001:tags "music" "travel" "photography"# 共同兴趣(交集)
SINTER user:1001:tags user:1002:tags  # 返回 "music"# 防止重复提交
SADD submissions:today "user_123"  # 记录已提交用户

5. Sorted Set(有序集合)

应用场景:排行榜、延时任务
示例

# 游戏排行榜(分数越高排名越前)
ZADD leaderboard 5000 "player1" 3000 "player2" 2000 "player3"
ZREVRANGE leaderboard 0 2 WITHSCORES  # 返回前3名# 延时任务队列(时间戳为分数)
ZADD delayed_jobs 1712345678 "task1"  # 1712345678秒后执行
ZRANGEBYSCORE delayed_jobs 0 1712345678  # 获取到期的任务

类型选择建议

数据类型适用场景时间复杂度
String简单键值、计数器O(1)
Hash嵌套对象、部分更新O(1)
List消息队列、时间线O(1)(头尾操作)
Set去重、标签系统O(1)(基础操作)
Sorted Set排行榜、优先级队列O(log(N))

性能提示
大对象(如超长字符串)建议拆分为Hash或使用外部存储,避免阻塞Redis。


以下是 Redis 五种数据类型的 Java 代码应用示例(使用 Jedis 客户端):

1. String 类型

// 缓存用户会话信息
jedis.setex("user:1001:session", 3600, "active"); // 设置1小时过期
String sessionStatus = jedis.get("user:1001:session");// 原子计数器
jedis.incr("page:home:views"); // 访问量+1

2. Hash 类型

// 存储商品信息
Map<String, String> product = new HashMap<>();
product.put("name", "iPhone15");
product.put("price", "6999");
jedis.hset("product:1001", product);// 获取部分字段
String price = jedis.hget("product:1001", "price");

3. List 类型

// 消息队列(生产者)
jedis.lpush("order:queue", "order1001");// 消息队列(消费者)
String orderId = jedis.rpop("order:queue");// 最新10条动态
jedis.lpush("user:1001:posts", "post1", "post2");
List<String> recentPosts = jedis.lrange("user:1001:posts", 0, 9);

4. Set 类型

// 用户标签系统
jedis.sadd("user:1001:tags", "tech", "sports");// 共同好友计算
jedis.sinterstore("common:1001:1002", "user:1001:friends", "user:1002:friends");// 内容去重
if(jedis.sadd("articles:20230808", "article123") == 1) {System.out.println("新文章入库");
}

5. Sorted Set 类型

// 游戏排行榜
jedis.zadd("game:leaderboard", 5000, "player1");
jedis.zadd("game:leaderboard", 3000, "player2");// 获取TOP3
Set<Tuple> topPlayers = jedis.zrevrangeWithScores("game:leaderboard", 0, 2);// 延时任务
long futureTime = System.currentTimeMillis()/1000 + 60;
jedis.zadd("delayed:tasks", futureTime, "task:clean_cache");

完整示例项目结构

若需要完整可运行项目,建议 Maven 配置:

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.1</version>
</dependency>

关键注意事项:

  1. 使用 try-with-resources 确保连接关闭
  2. 生产环境建议使用连接池
  3. 所有写操作建议检查返回值
  4. 注意序列化/反序列化处理(推荐JSON)

需要完整可运行示例项目时,可告知具体应用场景(如电商/社交等),我可提供针对性实现方案。

http://www.dtcms.com/a/321855.html

相关文章:

  • 机柜中不同类型板卡的操作系统配置情况一览
  • 解决苍穹外卖项目中 MyBatis - Plus 版本冲突问题
  • 【Linux运维】深入理解Cookie与Session机制:安全性与性能的平衡艺术
  • SAP接口日志查询
  • 多级缓存架构:新品咖啡上线引发的数据库压力风暴与高并发实战化解方案
  • 数据返回后需要刷新才会展示的解决方法
  • Vue3 组合式API
  • 飞算JavaAI深度解析:专为Java生态而生的智能引擎
  • 快速了解svm算法
  • Java 执行 SFTP 文件上传和下载
  • ​​《深入浅出K-means算法:从原理到实战全解析》​预告(提纲)
  • 【Spring Boot 快速入门】八、登录认证(一)基础登录与认证校验
  • 阿里巴巴高级Java工程师面试算法真题解析:LRU Cache实现
  • 详解 RT-Thread 串口一配置、设备查找与打印功能(rt_kprintf)的绑定机制
  • 完整设计 之 运行时九宫格 (太乙九宫 播放器)
  • AI 记忆管理系统:工程实现设计方案
  • 【感知机】感知机(perceptron)学习算法知识点汇总
  • 代码随想录算法训练营第三十八天、三十九天|动态规划part11、12
  • 【LLM开发学习】
  • 小程序实现二维码图片Buffer下载
  • C#结合HALCON去除ROI选中效果的实现方法
  • django uwsgi启动报错failed to get the Python codec of the filesystem encoding
  • 如何永久删除三星手机中的照片?
  • Nestjs框架: 接口安全与响应脱敏实践 --- 从拦截器到自定义序列化装饰器
  • Charles中文版抓包工具功能解析,提升API调试与网络性能优化
  • Redis原理,命令,协议以及异步方式
  • 【数字投影】艺术视觉在展厅中的多维传达与设计创新
  • 【MySQL】初识索引
  • 51c视觉~合集16
  • 批量把在线网络JSON文件(URL)转换成Excel工具 JSON to Excel by WTSolutions