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

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.xdnf.cn/news/17402.html

相关文章:

  • 【vue】Vue 重要基础知识清单
  • Vue3生命周期
  • wordpress的wp-config.php文件的详解
  • 三方相机问题分析七:【datespace导致GPU异常】三方黑块和花图问题
  • 专利服务系统平台|个人专利服务系统|基于java和小程序的专利服务系统设计与实现(源码+数据库+文档)
  • win11中Qt5.14.0+msvc2019+opencv4.9配置
  • Linux中的内核同步源码相关总结
  • GPT-5 is here
  • BUG调试案例十七:ENC424J600以太网掉线问题案例
  • Python实现点云PCA配准——粗配准
  • 板卡如何安装在主机系统(刀片服务器或计算节点)
  • 用browse实现菜单功能的方法
  • 数据结构--哈希表与排序、选择算法
  • 力扣-53.最大子数组和
  • 库函数版独立按键用位运算方式实现(STC8)
  • 解决阿里云盘不能分享压缩包【7-zip工具】(详细)
  • Linux多线程——生产者消费者模型
  • C/C++二维数组创建内存分配
  • 大模型——部署体验gpt-oss-20b
  • 云原生时代的 Linux:容器、虚拟化与分布式的基石
  • 复杂路况误报率↓78%!陌讯轻量化模型在车辆违停识别的边缘计算优化​
  • 抖音AI分身:帮助每个抖音创作者,打造自己的AI分身
  • Kotlin 数据容器 - MutableList(MutableList 概述、MutableList 增删改查、MutableList 遍历元素)
  • STM32学习笔记5-TIM定时器-1
  • cuda算子--softmax算子与优化
  • 如何将视频转为GIF格式,3大视频转为GIF工具
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第八天(Vue框架及其安装)(完结篇) 重点 ! ! !
  • AWS 云小白学习指南 (一)
  • 生产管理ERP系统|物联及生产管理ERP系统|基于SprinBoot+vue的制造装备物联及生产管理ERP系统设计与实现(源码+数据库+文档)
  • 【网络自动化】利用Python脚本与计划任务,实现H3C/HPE设备配置无人值守备份