当前位置: 首页 > 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 可以为应用程序提供快速、可靠的数据访问服务,是构建高性能分布式系统的重要组件。

相关文章:

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

目录 一、Redis 单机环境部署1. 环境准备2. 安装 Redis2.1 安装依赖2.2 下载并编译 Redis2.3 配置 Redis2.4 设置 Redis 为系统服务 3. Redis 配置选项详解4. 注意事项 二、Redis 集群环境部署1. 环境准备2. 安装 Redis3. 配置 Redis 集群3.1 配置文件调整3.2 启动 Redis 实例3…...

华为hcip-big data 学习笔记《一》大数据应用开发总指导

一、大数据应用开发总指导 1. 前言 随着大数据技术的飞速发展和大数据应用的不断普及&#xff0c;大数据已经成为当今时代最热门的话题之一。不过对于大数据的了解&#xff0c;很多人还只是停留在表面&#xff0c;提到大数据&#xff0c;很多人只是直到它是最新的科技&#x…...

用户画像架构图

背景 本文讲述下实现一个画像平台的架构图 架构图 这里面的人群圈选我们这里主要采用ck和spark&#xff0c;不过也有很多使用es&#xff0c;如果使用es的话&#xff0c;需要把标签的数据也存储到es的表中&#xff0c;类似我们这里放到ck的表中一样&#xff0c;这样就可以通过…...

37.x86游戏实战-XXX遍历怪物数组

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...

go语言中map为什么不会自动初始化?

go语言中map为什么不会自动初始化&#xff1f; 在Go语言中&#xff0c;map类型不会自动初始化的原因在于其设计哲学和类型系统。以下是具体原因&#xff1a; 零值设计&#xff1a;Go语言中的每种类型都有一个零值&#xff0c;例如整型的零值是0&#xff0c;布尔型的零值是fals…...

大数据面试SQL(一):合并日期重叠的活动

文章目录 合并日期重叠的活动 一、题目 二、分析 三、SQL实战 四、样例数据参考 合并日期重叠的活动 一、题目 已知有表记录了每个品牌的活动开始日期和结束日期&#xff0c;每个品牌可以有多个活动。请编写一个SQL查询合并在同一个品牌举行的所有重叠的活动&#xff0c…...

stm32应用、项目、调试

主要记录实际使用中的一些注意点。 1.LCD 1.LCD1602 电路图&#xff1a; 看手册&#xff1a;电源和背光可以使用5v或者3.3v&#xff0c;数据和控制引脚直接和单片机引脚连接即可。 单片机型号&#xff1a;stm32c031c6t6 可以直接使用推完输出连接D0--D7,RS,EN,RW引脚&#…...

WEB渗透-未授权访问篇

WEB渗透未授权访问篇-Redis-CSDN博客 activemq 默认端口8161&#xff0c;默认账户密码admin/admin http://1.1.1.1:8161/admin/connections.jsp PUT /fileserver/%2F%2F2%083.jsp HTTP/1.0 Content-Length: 27 Host: 1.1.1.1:8161 Connection: Close Authorization: Basic YW…...

x86_64、AArch64、ARM32、LoongArch64、RISC-V

以下是对 x86_64、AArch64、ARM32、LoongArch64 和 RISC-V 这几种计算机架构的介绍&#xff0c;包括它们的应用场景、优缺点&#xff1a; 1. x86_64 简介: x86_64 是由 AMD 推出的 64 位扩展版 x86 架构&#xff0c;兼容于英特尔的 IA-32 架构。这一架构被广泛应用于桌面和服…...

git push上不去的问题Iremote reiectedl——文件过大的问题

在新建分支的时候&#xff0c;发现push怎么也上传不上去&#xff0c;一开始觉得是权限的问题&#xff0c;但是尝试了各种方案都没有用&#xff0c;后面再仔细看了一下是文件太大了&#xff0c;远程拒绝推送 接下来&#xff0c;和大家讲讲我的解决方案 1、把修改的代码迁移到新…...

Qt Creator卡顿

删除IDE的配置参数的保存文件夹QtProject&#xff0c;使得Qt Creator恢复出厂值。 C:\Users\替换为你的用户名\AppData\Roaming\QtProject 参考链接&#xff1a; Qt Creator 卡顿 卡死...

数据结构笔记(其五)--串

目录 12.串 12.1 基本操作 12.2 串的存储结构 12.3 字符串的模式匹配算法 (1).朴素模式匹配算法 (2).KMP算法 i.next[]数组的求解 ii.next[]数组的优化——nextval数组 iii.手算nextval数组 iiii.机算nextval数组 + KMP函数 12.串 串,即字符串(string),由零个或多…...

Python爬取高清美女图片

文章概述 本文将详细介绍如何使用Python编写一个简单的爬虫来抓取高清美女图片。我们将利用requests库来发送HTTP请求&#xff0c;使用BeautifulSoup库来解析HTML文档&#xff0c;从而提取出图片的URL并将其下载到本地。 技术栈 Python: 编程语言requests: HTTP客户端库Beau…...

gin路由

1主文件 package main import ("github.com/gin-gonic/gin""godade/user""net/http" ) func main() {router : gin.Default()router.GET("/", func(c *gin.Context) {c.String(http.StatusOK, "Hello World")})v1 : router…...

达梦数据库操作以及报错修改

执行失败(语句1) -6105:: 数据类型不匹配 第12 行附近出现错误 插入sql语句 INSERT INTO "by_ioc_rbac"."user_info" ("user_account", "user_name", "birthday", "password", "gender", "mobi…...

江科大/江协科技 STM32学习笔记P21

文章目录 ADC模数转换器ADC简介逐次逼近型ADCSTM32的ADCADC基本结构输入通道转换模式单次转换&#xff0c;非扫描模式连续转换&#xff0c;非扫描模式单次转换&#xff0c;扫描模式连续转换&#xff0c;扫描模式 触发控制数据对齐转换时间校准硬件电路电位器产生可调电压的电路…...

第三方jar自带logback导致本地日志文件不生成

1.问题及解决 这是依赖的jar包&#xff0c;自己有logback&#xff0c;只打印到控制台&#xff0c;导致我们项目里配置的error级别日志不会生成到日志文件中去。ai给的答案是自己控制加载顺序&#xff0c;但很麻烦&#xff0c;--logging.config也不行&#xff0c;最好下了个7z压…...

国产数据库备份恢复实现

数据库备份恢复是数据库高可用的基本能力&#xff0c;如何通过备份数据快速高效的恢复业务并且满足不同场景下的恢复需求&#xff0c;是各数据库厂商需要关注的要点。本文将介绍几种国产数据库的备份恢复功能&#xff0c;以加深了解。 1、数据库备份恢复方案 数据库备份是生产…...

数据仓库: 2- 数据建模

目录 2- 数据建模2.1 维度建模2.1.1 维度建模的基本概念2.1.1.1 事实表 (Fact Table)2.1.1.2 维度表 (Dimension Table)2.1.1.3 维度 (Dimension)2.1.1.4 度量 (Measure) 2.1.2 维度建模的主要模型2.1.2.1 星型模型 (Star Schema)2.1.2.2 雪花模型 (Snowflake Schema)2.1.2.3 星…...

Tomcat 漏洞

一.CVE-2017-12615 1.使用burp抓包 把get改成put jsp文件后加/ 添加完成后访问 木马 然后木马的网址 在哥斯拉测试并且添加 添加成功 然后我们就成功进去啦、 二.弱口令 点击后输入默认用户名、密码&#xff1a;tomcat/tomcat 登陆之后上传一个jsp文件 后缀改成war 然后访问我…...

别再乱用分支了!Flowable四种网关(排他/并行/包容/事件)实战选型指南

Flowable四大网关实战选型&#xff1a;从混乱到精准的决策艺术当你在设计一个请假审批流程时&#xff0c;是否遇到过这样的困惑&#xff1a;部门经理审批后需要同时通知HR和财务&#xff0c;但某些特殊情况下又需要跳过财务直接归档&#xff1f;这种看似简单的业务需求&#xf…...

Stitches API完全指南:从基础配置到自定义扩展

Stitches API完全指南&#xff1a;从基础配置到自定义扩展 【免费下载链接】stitches HTML5 Sprite Sheet Generator 项目地址: https://gitcode.com/gh_mirrors/sti/stitches Stitches是一款强大的HTML5 Sprite Sheet Generator&#xff0c;它提供了直观的API接口&…...

机器学习与深度学习在地球物理勘探中的应用:基于电阻率数据预测极化率模型

1. 项目概述与核心价值在花岗岩这类地质条件复杂的地区搞勘探&#xff0c;最头疼的就是地下情况“看不清”。传统的电阻率&#xff08;ERT&#xff09;和激发极化&#xff08;IP&#xff09;联合反演&#xff0c;就像用一把刻度模糊的尺子去量一块表面坑洼不平的石头——面对高…...

从入门到上岗,Java+AI 复合型人才养成攻略

当下编程行业格局正在悄然改变,纯 Java 后端岗位内卷日趋严重,薪资增长逐步放缓;纯粹的 AI 算法岗门槛居高不下,对学历、数理功底要求严苛,普通开发者很难入局。 而Java+AI 复合型开发顺势成为行业刚需岗位,既依托成熟的 Java 体系承接业务开发,又能融入人工智能技术实…...

极致精简,功能强大的PDF编辑工具

这是一款功能全面的PDF编辑工具 你只需要导入一份PDF格式文件 就可以快速的对它进行插入 批注编辑保护转换等各种操作 而且无需登录 也可以直接使用 在插入选项中可以进行插入文字图片 页面页眉页脚页码文档背景水印视频音频等 在批注选项中可以管理批注隐藏批注 高亮显示 文本…...

组态王通用扫码枪配置

使用组态王扫码枪驱动&#xff0c;是绑定变量&#xff0c;扫码后直接就可以显示扫码内容。解决每次扫码输入数据时必须先用鼠标点进输入框内的问题。驱动安装先添加驱动&#xff0c;亚控网站的文件为 barcodescanner&#xff0c;这个文件是组态王通用扫码枪的驱动&#xff0c;但…...

别再只测accuracy!DeepSeek集成测试必须监控的5个隐性指标(P99首token延迟、context bleed率、tool-call schema漂移)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek集成测试的核心范式演进 DeepSeek大模型的工程化落地对集成测试提出了全新挑战&#xff1a;传统基于接口响应码与字段校验的测试范式已难以覆盖语义一致性、推理链鲁棒性、上下文敏感度等高阶质…...

Unity发行版DLL调试实战:DnSpy无源码IL级断点指南

1. 这不是“反编译”&#xff0c;而是Unity游戏开发者的日常调试手段你有没有遇到过这样的情况&#xff1a;接手一个Unity发行版游戏&#xff0c;想快速验证某个功能逻辑是否按预期执行&#xff0c;或者排查一个偶发的崩溃&#xff0c;但手头只有打包后的Assembly-CSharp.dll&a…...

Claude端到端测试设计:从零搭建可审计、可回放、可量化的AI服务测试流水线(含开源Schema校验工具)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Claude端到端测试设计 端到端测试是验证Claude模型在真实用户交互链路中行为一致性的关键手段。它覆盖从原始提示输入、上下文管理、流式响应生成&#xff0c;到输出解析与业务校验的全路径&#xff0c;确保模…...

轻量化部署,异地机房快速接入,多机房管理不用再大动干戈

随着业务拓展&#xff0c;不少企业、单位陆续建起异地分部机房、多区域节点机房。传统资产管理系统部署复杂、对接困难&#xff0c;异地机房接入成本高、周期长&#xff0c;改造繁琐&#xff0c;让很多运维团队望而却步&#xff0c;只能继续沿用分散人工管理&#xff0c;资产混…...