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

Redis 单机和集群环境部署教程

目录

    • 一、Redis 单机环境部署
      • 1. 环境准备
      • 2. 安装 Redis
        • 2.1 安装依赖
        • 2.2 下载并编译 Redis
        • 2.3 配置 Redis
        • 2.4 设置 Redis 为系统服务
      • 3. Redis 配置选项详解
      • 4. 注意事项
    • 二、Redis 集群环境部署
      • 1. 环境准备
      • 2. 安装 Redis
      • 3. 配置 Redis 集群
        • 3.1 配置文件调整
        • 3.2 启动 Redis 实例
        • 3.3 创建 Redis 集群
      • 4. Redis 集群配置详解
      • 5. 注意事项
    • 三、Redis 使用案例:简单计数器
      • 1. Java 实现 Redis 计数器
        • 1.1 添加依赖
        • 1.2 编写 Java 程序
        • 1.3 运行 Java 程序
      • 2. Python 实现 Redis 计数器
        • 2.1 安装 Redis 库
        • 2.2 编写 Python 程序
        • 2.3 运行 Python 程序
      • 3. 注意事项
    • 总结
      • 部署过程中的注意事项

下面是 Redis 单机和集群环境部署的详细教程,包括部署过程中的注意事项以及一个使用案例。Redis 是一个开源的内存中数据结构存储系统,广泛应用于缓存、消息队列、实时分析等场景。


一、Redis 单机环境部署

1. 环境准备

  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7)
  • C 编译器:GCC 或 Clang
  • tcl:用于运行 Redis 自检(可选)

2. 安装 Redis

2.1 安装依赖

在 Ubuntu 上:

sudo apt update
sudo apt install build-essential tcl

在 CentOS 上:

sudo yum groupinstall 'Development Tools'
sudo yum install tcl
2.2 下载并编译 Redis
  1. 从 Redis 官网 下载最新版本的 Redis 源代码:

    wget http://download.redis.io/releases/redis-6.2.6.tar.gz
    tar xzf redis-6.2.6.tar.gz
    cd redis-6.2.6
    
  2. 编译 Redis:

    make
    
  3. 运行测试(可选):

    make test
    
  4. 安装 Redis:

    sudo make install
    
2.3 配置 Redis
  1. 创建配置文件目录:

    sudo mkdir /etc/redis
    
  2. 复制默认配置文件:

    sudo cp redis.conf /etc/redis/
    
  3. 编辑配置文件 /etc/redis/redis.conf

    sudo nano /etc/redis/redis.conf
    
    • supervised 设置为 systemd

      supervised systemd
      
    • 指定数据持久化目录:

      dir /var/lib/redis
      
    • 指定日志文件:

      logfile "/var/log/redis.log"
      
    • 配置内存限制(根据机器实际情况调整):

      maxmemory 256mb
      
2.4 设置 Redis 为系统服务
  1. 创建 Redis 数据目录:

    sudo mkdir /var/lib/redis
    sudo chown redis:redis /var/lib/redis
    
  2. 创建 systemd 服务文件 /etc/systemd/system/redis.service

    [Unit]
    Description=Redis In-Memory Data Store
    After=network.target[Service]
    User=redis
    Group=redis
    ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
    ExecStop=/usr/local/bin/redis-cli shutdown
    Restart=always[Install]
    WantedBy=multi-user.target
    
  3. 启动并启用 Redis 服务:

    sudo systemctl start redis
    sudo systemctl enable redis
    
  4. 验证 Redis 是否运行正常:

    redis-cli ping
    

    输出 PONG 表示 Redis 运行正常。

3. Redis 配置选项详解

  • 持久化配置

    • appendonly yes:启用 AOF 持久化。
    • save 900 1:每 900 秒至少有 1 个键被修改时触发 RDB 快照。
  • 安全配置

    • requirepass <password>:设置访问密码。
    • bind 127.0.0.1:限制访问到本地。
  • 性能优化

    • maxmemory-policy volatile-lru:内存达到上限时移除最少使用的键。

4. 注意事项

  • 内存限制:确保 maxmemory 设置合适,避免 Redis 进程使用过多内存导致系统不稳定。
  • 安全性:在生产环境中启用 requirepass,并限制外部访问。
  • 持久化策略:根据业务需要选择合适的持久化策略(AOF 或 RDB)。
  • 日志文件大小:监控日志文件大小,避免占用过多磁盘空间。
  • 备份与恢复:定期备份 Redis 数据文件,以防数据丢失。

二、Redis 集群环境部署

Redis 集群可以提供高可用性和数据分片,适用于大规模数据场景。

1. 环境准备

  • 多台服务器:至少 6 台节点(3 主 3 从)
  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7)
  • 网络配置:各节点之间需要相互通信

2. 安装 Redis

在每台服务器上按照单机部署的步骤安装 Redis。

3. 配置 Redis 集群

3.1 配置文件调整

在每个节点上编辑 /etc/redis/redis.conf,修改以下配置:

port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
3.2 启动 Redis 实例

在每台机器上启动 Redis 实例:

redis-server /etc/redis/redis.conf
3.3 创建 Redis 集群
  1. 在任一节点上执行以下命令:

    redis-cli --cluster create \192.168.1.1:6379 192.168.1.2:6379 192.168.1.3:6379 \192.168.1.4:6379 192.168.1.5:6379 192.168.1.6:6379 \--cluster-replicas 1
    
    • 以上命令创建一个 3 主 3 从的 Redis 集群。
    • --cluster-replicas 1 指定每个主节点有一个从节点。
  2. 确认集群状态:

    redis-cli -c -h 192.168.1.1 -p 6379 cluster info
    

    你应该看到类似以下输出:

    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:3
    

4. Redis 集群配置详解

  • 节点配置

    • cluster-enabled yes:启用集群模式。
    • cluster-node-timeout:节点通信超时时间。
  • 持久化配置

    • appendonly yes:启用 AOF 持久化,适合需要实时持久化的应用。
    • save "":在集群模式下禁用 RDB 持久化,以提高性能。

5. 注意事项

  • 网络配置:确保所有节点的 6379 端口对其他节点开放。
  • 节点数量:建议使用至少 3 主 3 从,以提高数据可靠性。
  • 数据备份:定期备份 appendonly.aof 文件,确保数据安全。
  • 故障恢复:使用 redis-cli --cluster fix 修复节点故障。

三、Redis 使用案例:简单计数器

1. Java 实现 Redis 计数器

1.1 添加依赖

在 Maven 项目中添加 Redis 的依赖:

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.2.3</version>
</dependency>
1.2 编写 Java 程序
import redis.clients.jedis.Jedis;public class RedisCounter {public static void main(String[] args) {// 连接到 RedisJedis jedis = new Jedis("localhost", 6379);// 清空计数器jedis.del("counter");// 增加计数器for (int i = 0; i < 10; i++) {jedis.incr("counter");System.out.println("Counter value: " + jedis.get("counter"));}// 关闭连接jedis.close();}
}
1.3 运行 Java 程序

编译并运行程序:

mvn compile
mvn exec:java -Dexec.mainClass="RedisCounter"

2. Python 实现 Redis 计数器

2.1 安装 Redis 库
pip install redis
2.2 编写 Python 程序
import redisdef main():# 连接到 Redisr = redis.Redis(host='localhost', port=6379, db=0)# 清空计数器r.delete('counter')# 增加计数器for i in range(10):r.incr('counter')print(f'Counter value: {r.get("counter").decode()}')if __name__ == '__main__':main()
2.3 运行 Python 程序
python redis_counter.py

3. 注意事项

  • 错误处理:在实际应用中,需要处理连接异常和网络问题。
  • 线程安全:Redis 自带的原子操作支持多线程环境。
  • 持久化:根据业务需要选择合适的持久化策略。

总结

通过以上步骤,我们完成了 Redis 的单机和集群环境部署,并实现了一个简单的计数器应用。Redis 提供了高性能和丰富的数据结构,适合各种场景下的缓存和数据存储需求。

部署过程中的注意事项

  • 环境配置:确保各节点环境一致,网络连接正常。
  • 内存管理:合理设置内存限制,避免系统资源耗尽。
  • 安全性:在生产环境中,建议启用密码和网络访问限制。
  • 监控与优化:使用工具(如 Redis Insight)监控 Redis 性能,并根据需要进行优化。
  • 故障恢复:定期备份数据,确保出现故障时可以快速恢复。

通过合理的配置和优化,Redis 可以为应用程序提供快速、可靠的数据访问服务,是构建高性能分布式系统的重要组件。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • React前端面试基础(一)
  • LeetCode:2110. 股票平滑下跌阶段的数目(数学 Java)
  • 【Rust光年纪】构建高效终端用户界面:Rust库全面解析
  • 【ARM】应用ArmDS移植最小FreeRTOS系统
  • Visual Studio 调试时加载符号慢
  • Web-server日志分析命令
  • Qt自定义TreeWidget,实现展开折叠按钮在右侧,且一条竖直线上对齐
  • 通过指令深入了解Linux 3
  • 基于深度学习的工业系统仿真
  • 网络安全测试工具Burp Suite基本使用
  • AWS Lambda 十年回顾:功能总览、更新记录与入门指南
  • 【微信小程序开发】——奶茶点餐小程序的制作(二)
  • OrangePi AIpro学习3 —— vscode开发昇腾DVPP程序
  • VMware-converter 4.0 5.0 6.2.0 版本 下载 P2V 物理机转虚拟机 实体机转虚拟机 V2V 虚拟机转虚拟机
  • Ubuntu 20.04 中安装 Nginx (通过传包编译的方式)、开启关闭防火墙、开放端口号
  • [笔记] php常见简单功能及函数
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 11111111
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux各目录及每个目录的详细介绍
  • Mithril.js 入门介绍
  • mysql 5.6 原生Online DDL解析
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • 关于字符编码你应该知道的事情
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 基于web的全景—— Pannellum小试
  • 目录与文件属性:编写ls
  • 自定义函数
  • #07【面试问题整理】嵌入式软件工程师
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (2)空速传感器
  • (done) 两个矩阵 “相似” 是什么意思?
  • (poj1.3.2)1791(构造法模拟)
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (论文阅读11/100)Fast R-CNN
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (四)JPA - JQPL 实现增删改查
  • (转)fock函数详解
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .NET 表达式计算:Expression Evaluator
  • .NET 读取 JSON格式的数据
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net 获取url的方法
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET开源、简单、实用的数据库文档生成工具
  • @ModelAttribute 注解
  • @Valid和@NotNull字段校验使用
  • [20170728]oracle保留字.txt
  • [Android 数据通信] android cmwap接入点
  • [Codeforces] combinatorics (R1600) Part.2
  • [CTF夺旗赛] CTFshow Web1-12 详细过程保姆级教程~