在 Rocky Linux 9.2 上编译安装 Redis 6.2.6

文章目录

  • 在 Rocky Linux 9.2 上编译安装 Redis 6.2.6
  • Redis 介绍
  • 官网
  • Redis 的核心特性
    • 高性能
    • 支持多种数据结构
    • 多种持久化机制
    • 复制与高可用
    • 2.5 事务与 Lua 脚本
    • 消息队列功能
  • Redis 适用场景
  • Redis 与其他数据库对比
  • Redis 的优势与劣势
    • Redis 优势
    • Redis 劣势
  • 部署过程
    • 系统环境信息
    • 环境准备
    • 下载安装包
    • 安装
    • 配置配置文件
    • 创建日志以及数据存放目录
    • 配置开机自启
  • 结论


在 Rocky Linux 9.2 上编译安装 Redis 6.2.6

Redis 介绍

Redis(Remote Dictionary Server)是一个开源的、基于内存的、支持多种数据结构的高性能键值存储(Key-Value Store)。它通常被用作数据库、缓存消息队列,因其高性能和丰富的功能而广泛应用于各类系统架构中。

官网

Redis官网

下载软件包

在这里插入图片描述

Redis 的核心特性

高性能

  • 基于内存:所有数据存储在内存中,读写速度极快,远超传统关系型数据库。
  • 支持持久化:可以定期将数据存储到磁盘,防止数据丢失。
  • 单线程模型:利用 I/O 多路复用技术,提高并发处理能力。

支持多种数据结构

Redis 不仅仅是简单的键值存储,还支持多种丰富的数据类型:

  • String(字符串):存储普通文本、数字、二进制数据(最大 512MB)。
  • List(列表):类似链表,支持队列(FIFO)和栈(LIFO)。
  • Set(集合):无序唯一集合,支持交集、并集、差集运算。
  • Sorted Set(有序集合):带分数的集合,支持按分数排序的数据存储。
  • Hash(哈希表):键值对集合,类似于 MySQL 中的一行记录。
  • Bitmap(位图):用于存储二进制位信息(如用户签到、在线状态)。
  • HyperLogLog:用于基数统计(如统计网站独立访问 IP 数)。

多种持久化机制

Redis 提供了两种持久化方案:

  1. RDB(Redis Database)
    • 二进制快照 的形式定期将数据存入磁盘。
    • 适用于 数据恢复速度快,但可能会丢失最近的更新数据。
  2. AOF(Append-Only File)
    • 日志追加 方式记录每次写操作,能最大程度防止数据丢失。
    • 适用于 数据安全性要求高 的场景。

复制与高可用

  • 主从复制(Master-Slave Replication):支持数据的主从同步,提高数据可用性。
  • Sentinel(哨兵):提供自动故障转移监控能力,确保 Redis 服务的高可用性。
  • Cluster(集群):Redis 分布式集群模式,支持水平扩展,适用于大规模数据存储。

2.5 事务与 Lua 脚本

  • Redis 事务(Transaction) 通过 MULTIEXECWATCH 实现,但不支持回滚
  • Redis 支持 Lua 脚本,可以一次性执行多条命令,减少网络延迟。

消息队列功能

Redis 内置 发布/订阅(Pub/Sub)Stream 流式数据结构,可用于构建轻量级的消息队列。

Redis 适用场景

Redis 的高性能和灵活的数据结构使其适用于多种应用场景:

  1. 缓存(Cache)

    • 存储热点数据,加速应用访问(如数据库查询缓存、用户会话存储)。
    • 结合 LRU(Least Recently Used) 进行自动淘汰。
  2. 分布式锁

    • 通过 SETNX + EXPIRE 实现分布式锁,适用于高并发场景。
  3. 排行榜与计数器

    • 使用 Sorted Set 实现排行榜(如游戏积分榜、热搜排行榜)。
    • 使用 INCR 实现高并发计数(如 PV/UV 统计)。
  4. Session 存储

    • 使用 Redis 存储 Web 用户 Session,提高网站性能(如 Django、Flask、Spring)。
  5. 消息队列

    • 使用 List 实现简单队列(LPUSH / RPOP)。
    • 使用 Stream 处理复杂的流数据。
  6. 社交网络

    • 关注、粉丝关系(使用 Set)。
    • 新闻推送(使用 List + Sorted Set)。

Redis 与其他数据库对比

特性RedisMySQL / PostgreSQLMongoDB
数据存储内存磁盘磁盘+内存
数据结构键值对、多种数据类型关系型表结构文档存储
性能极快(100,000+ QPS)中等(几千 QPS)中等(几万 QPS)
事务支持简单事务(无回滚)完整 ACID 事务部分事务支持
扩展性高(支持分布式集群)低(分库分表)高(支持集群)
使用场景缓存、队列、实时计算关系数据存储海量文档存储

Redis 的优势与劣势

Redis 优势

  • 超高性能:所有数据在内存中操作,读写速度远超磁盘数据库。
  • 丰富数据结构:支持多种数据类型,适应多种应用场景。
  • 持久化机制:支持 RDB 和 AOF 方式,保障数据安全性。
  • 分布式架构:支持主从复制、哨兵模式、集群模式,扩展性强。

Redis 劣势

  • 内存占用高:所有数据都存储在内存中,成本较高。
  • 单线程:尽管 Redis 依赖 I/O 多路复用提升性能,但仍然是单线程模式,在 CPU 计算密集型任务上可能存在瓶颈。
  • 事务支持有限:Redis 事务不支持回滚,不适用于复杂的金融场景。

部署过程

系统环境信息

  • 操作系统:Rocky Linux 9.2 (Blue Onyx)
  • SELinux 状态Disabled(已关闭)
  • 防火墙状态firewalld 服务未启用 (inactive (dead))

环境准备

  • 创建数据目录

    mkdir -p /data/app /data/bag
    
  • 安装依赖

    dnf -y install wget gcc tar make
    

下载安装包

cd /data/bag
wget http://download.redis.io/releases/redis-6.2.6.tar.gz

安装

tar xf redis-6.2.6.tar.gz
mv redis-6.2.6 /data/app/redis
cd /data/app/redis/

在这里插入图片描述

[root@test redis]# pwd
/data/app/redis
[root@test redis]# ls -l
总用量 240
-rw-rw-r--  1 root root 33624 104  2021 00-RELEASENOTES
-rw-rw-r--  1 root root    51 104  2021 BUGS
-rw-rw-r--  1 root root  5026 104  2021 CONDUCT
-rw-rw-r--  1 root root  3384 104  2021 CONTRIBUTING
-rw-rw-r--  1 root root  1487 104  2021 COPYING
drwxrwxr-x  7 root root  4096  41 15:18 deps
-rw-rw-r--  1 root root    11 104  2021 INSTALL
-rw-rw-r--  1 root root   151 104  2021 Makefile
-rw-rw-r--  1 root root  6888 104  2021 MANIFESTO
-rw-rw-r--  1 root root 21567 104  2021 README.md
-rw-rw-r--  1 root root 93724 104  2021 redis.conf
-rwxrwxr-x  1 root root   275 104  2021 runtest
-rwxrwxr-x  1 root root   279 104  2021 runtest-cluster
-rwxrwxr-x  1 root root  1079 104  2021 runtest-moduleapi
-rwxrwxr-x  1 root root   281 104  2021 runtest-sentinel
-rw-rw-r--  1 root root 13768 104  2021 sentinel.conf
drwxrwxr-x  3 root root  4096  41 15:18 src
drwxrwxr-x 11 root root  4096 104  2021 tests
-rw-rw-r--  1 root root  3055 104  2021 TLS.md
drwxrwxr-x  9 root root  4096 104  2021 utils
[root@test redis]# 

编译

make

编译过去后,echo $?确认是否OK,再下一步

make install

完成也echo $?确认下

在这里插入图片描述

配置配置文件

mv redis.conf redis.conf-202504020011
## redis.conf
#########################################
# Redis 配置优化文件
# 适用于生产环境
########################################## 绑定地址,允许所有 IP 访问,生产环境建议改为内网 IP
bind 192.168.1.1# 保护模式,建议开启 (yes) 以增强安全性
protected-mode yes# 监听端口
port 6379# TCP 连接队列大小
tcp-backlog 511# 连接超时时间(0 代表不超时)
timeout 0# TCP 保活时间(秒),建议设大一些,避免连接被防火墙误断开
tcp-keepalive 300# 后台运行
daemonize yes# 进程 PID 文件路径
pidfile /data/app/redis/redis_6379.pid# 日志级别 (debug | verbose | notice | warning)
loglevel notice# 日志文件路径(空值表示输出到标准输出)
logfile "/data/app/redis/logs/redis-server.log"# 数据库数量(默认16个,视业务需求调整)
databases 16# 显示 Redis 启动 Logo(关闭可减少日志干扰)
always-show-logo no#########################################
# RDB 持久化
#########################################
# RDB 失败时阻止写入,避免数据损坏
stop-writes-on-bgsave-error yes
# 启用 RDB 数据压缩
rdbcompression yes
# 启用 RDB 数据校验
rdbchecksum yes
# RDB 文件名
dbfilename dump.rdb
# 关闭 RDB 删除同步文件,防止误删除
rdb-del-sync-files no
# RDB 文件存储目录,建议设为 SSD 盘
dir /data/app/redis/data/#########################################
# 复制(主从同步)
#########################################
# 允许副本在断开主库时仍然提供只读服务
replica-serve-stale-data yes 
# 副本节点只读模式
replica-read-only yes
# 关闭无磁盘同步(默认使用磁盘同步)
repl-diskless-sync no
# 无磁盘同步的延迟
repl-diskless-sync-delay 5 
# 关闭无磁盘加载
repl-diskless-load disabled
# 保持默认 TCP nodelay 配置
repl-disable-tcp-nodelay no
# 副本优先级(越小越容易成为主库)
replica-priority 100 #########################################
# 内存管理
#########################################
# 默认不限制内存,可根据业务需求调整
maxmemory 0
# 不驱逐数据,可改为 allkeys-lru
maxmemory-policy noeviction
# 关闭惰性删除,避免额外 CPU 开销
lazyfree-lazy-eviction no 
# 关闭惰性过期
lazyfree-lazy-expire no 
# 关闭惰性删除
lazyfree-lazy-server-del no # 关闭副本惰性清理
replica-lazy-flush no# 关闭 OOM 调整
oom-score-adj no 
# 仅在 OOM 保护时启用
oom-score-adj-values 0 200 800#########################################
# AOF 持久化
#########################################
# 启用 AOF 持久化
appendonly yes 
# AOF 文件名
appendfilename "appendonly.aof" 
# 每秒同步一次,性能和安全的折中方案
appendfsync everysec
# 重写时是否关闭同步
no-appendfsync-on-rewrite no
# 触发 AOF 重写的比例
auto-aof-rewrite-percentage 100 
# 触发 AOF 重写的最小大小
auto-aof-rewrite-min-size 64mb
# 允许加载截断的 AOF
aof-load-truncated yes# AOF 兼容 RDB 头部,减少重启时间
aof-use-rdb-preamble yes 
#########################################
# 性能优化
#########################################
# 调高 Hz 频率,提高响应速度
hz 50
# 动态调整 Hz
dynamic-hz yes 
# AOF 重写时增量同步
aof-rewrite-incremental-fsync yes
# RDB 保存时增量同步
rdb-save-incremental-fsync yes # 启用 jemalloc 线程优化内存管理
jemalloc-bg-thread yes#########################################
# 限制与监控
#########################################
# 慢查询阈值(微秒)
slowlog-log-slower-than 10000
# 慢查询日志最大条数
slowlog-max-len 128 
# 关闭延迟监控
latency-monitor-threshold 0 
# 关闭 key 事件通知
notify-keyspace-events "" 
# 普通客户端无限制
client-output-buffer-limit normal 0 0 0
# 副本节点限制
client-output-buffer-limit replica 256mb 64mb 60
# PubSub 限制
client-output-buffer-limit pubsub 32mb 8mb 60#########################################
# 其他参数
#########################################
# RDB 触发条件
save 900 1 300 10 60 10000 
# TCP 连接队列大小
tcp-backlog 511
# TCP 保活时间(秒)
tcp-keepalive 300

创建日志以及数据存放目录

mkdir -p /data/app/redis/data /data/app/redis/logs

配置开机自启

vim /etc/systemd/system/redis.service
[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /data/app/redis/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target
systemctl enable redis --now # 启动并设置开机自启

在这里插入图片描述
版本查看

[root@test bag]# redis-server -v
Redis server v=6.2.6 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=cd4da9562e7759a9
[root@test bag]# 

结论

至此,我们已成功在 Rocky Linux 9.2编译安装 Redis 6.2.6,并使用 systemd 进行管理。你可以根据需求进一步优化 Redis 配置,例如调整 maxmemory 以限制 Redis 占用的内存大小,或者启用 密码认证 以提高安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量子计算与经典计算的融合与未来

最近研学过程中发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击下方超链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面进入文章正…

数据结构(4)——带哨兵位循环双向链表

目录 前言 一、带哨兵的循环双向链表是什么 二、链表的实现 2.1规定结构体 2.2创建节点 2.3初始化 2.4打印 2.5检验是否为空 2.6销毁链表 2.7尾插 2.8尾删 2.9头插 2.10头删 2.11寻找特定节点 2.12任意位置插入(pos前) 2.13删除任意节点 …

Github 2025-03-30 php开源项目日报 Top10

根据Github Trendings的统计,今日(2025-03-30统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10TypeScript项目1Coolify: 开源自助云平台 创建周期:1112 天开发语言:PHP, Blade协议类型:Apache License 2.0Star数量:10527 个Fo…

3. 线程间共享数据

1. 线程共享数据会造成什么问题? 1.1 读写不一致 多线程读不会造成数据变动,所以没有问题。只要有一个线程设计修改数据,就会导致数据共享出现问题,简单的是数据不一致,严重的是程序访问已经释放的内存,造…

JAVA垃圾回收算法和判断垃圾的算法

一、判断垃圾的算法 判断对象是否为垃圾的核心是确定对象是否不再被使用。Java主要采用以下两种算法: 1. 引用计数法(Reference Counting) 原理:每个对象维护一个引用计数器,记录被引用的次数。当引用被添加时计数器…

界面架构 - MVVM (Qt)

MVVM MVVM 的主要特点示例示例功能示例代码ViewModel 类(C)主函数入口(main.cpp) QML 文件(main.qml)总结 MVVM(Model-View-ViewModel)架构是一种旨在进一步分离界面和业务逻辑的设计…

第十四届MathorCup高校数学建模挑战赛-C题:基于 LSTM-ARIMA 和整数规划的货量预测与人员排班模型

目录 摘要 一、 问题重述 1.1 背景知识 1.2 问题描述 二、 问题分析 2.1 对问题一的分析 2.2 对问题二的分析 2.3 对问题三的分析 2.4 对问题四的分析 三、 模型假设 四、 符号说明 五、 问题一模型的建立与求解 5.1 数据预处理 5.2 基于 LSTM 的日货量预测模型 5.3 日货量预测…

银河麒麟V10 aarch64架构安装mysql教程

国产操作系统 ky10.aarch64 因为是arm架构,故选择mysql8,推荐安装8.0.28版本 尝试8.0.30和8.0.41版本均未成功,原因不明☹️ 1. 准备工作 ⏬ 下载地址:https://downloads.mysql.com/archives/community/ 2. 清理历史环境 不用管…

C++多继承

可以用多个基类来派生一个类。 格式为: class 类名:类名1,…, 类名n { private: … ; //私有成员说明; public: … ; //公有成员说明; protected: … ; //保护的成员说明; }; class D: public A, protected B, private C { …//派…

某地老旧房屋自动化监测项目

1. 项目简介 自从上个世纪90年代以来,我国经济发展迅猛,在此期间大量建筑平地而起,并且多为砖混结构的住房,使用寿命通常约为30-50年,钢筋混凝土结构,钢结构等高层建筑,这些建筑在一般情况下的…

产品经理的大语言模型课 04 -模型应用的云、边、端模式对比

目录 算力部署方式的影响因素数据量计算难度前期投入数据隐私应用规模与泛化能力 云、边、端部署的特点和对比典型场景举例社区人脸门禁后厨老鼠识别 未来展望 算力部署方式的影响因素 最近和人工智能从业者进行了非常广泛的沟通,尝试对模型应用的云、边、端模式进…

基于Python设计的TEQC数据质量可视化分析软件

标题:基于Python设计的TEQC数据质量可视化分析软件 内容:1.摘要 本文旨在设计一款基于Python的TEQC数据质量可视化分析软件。随着全球导航卫星系统(GNSS)的广泛应用,数据质量的评估变得至关重要。TEQC(TransEditQualityCheck&…

Flinksql--订单宽表

参考: https://chbxw.blog.csdn.net/article/details/115078261 (datastream 实现) 一、ODS 模拟订单表及订单明细表 CREATE TABLE orders (order_id STRING,user_id STRING,order_time TIMESTAMP(3),-- 定义事件时间及 Watermark(允许5秒乱序&#x…

粒子滤波介绍

目录 粒子滤波的主要流程可以分为以下 5 个步骤: 粒子滤波(PF) vs. ESKF(误差状态卡尔曼滤波) 粒子滤波的主要流程可以分为以下 5 个步骤: 初始化(Initialization) 生成 N 个粒子&…

一场国际安全厂商的交流会议简记

今天参与了一场国际安全厂商A公司组织的交流会议 与会有国际TOP企业跨境企业 还有国内一些头部商业公司。 A公司很有意思介绍了自己是怎么做安全运营中心SOC的。 介绍了很多内容,包括他们自己的员工量/设备量/事件量/SOC中心人员量,其中人员量只有个位数…

Java面试黄金宝典30

1. 请详细列举 30 条常用 SQL 优化方法 定义 SQL 优化是指通过对 SQL 语句、数据库表结构、索引等进行调整和改进,以提高 SQL 查询的执行效率,减少系统资源消耗,提升数据库整体性能的一系列操作。 要点 从索引运用、查询语句结构优化、数据…

花洒洗澡完毕并关闭后过段时间会突然滴水的原因探究

洗澡完毕后的残留水 在洗澡的过程中,我们通常会使用到大量的水。这些水会通过花洒管子到达花洒顶喷流出。由于大顶喷花洒的喷头较大,关闭后里面的存水会更多。 气压失衡后的滴水 当花洒关闭后,内部的水管和花洒头中仍存有一定量的水。由于…

QSettings用法实战(相机配置文件的写入和读取)

很多情况,在做项目开发的时候,将参数独立出来是比较好的方法 例如:相机的曝光次数、曝光时长等参数,独立成ini文件,用户可以在外面修改即可生效,无需在动代码重新编译等工作 QSettings便可以实现该功能 内…

运维培训班之最佳选择(The best Choice for Operation and Maintenance Training Courses)

运维培训班之最佳选择 从面试官的角度聊聊培训班对运维的帮助,同时给培训班出身的运维一些建议~ 谈到运维(尤其是零基础非科班转行的运维)找工作,培训班是个不可回避的讨论热点。虽然本人也做过兼职运维培训老师,多少…

网络安全与防护策略

随着信息技术的飞速发展,互联网已成为现代社会不可或缺的一部分。从日常生活到企业运营,几乎所有活动都离不开网络。然而,网络的开放性和广泛性也使得网络安全问题愈发严峻。无论是个人数据泄露,还是大规模的网络攻击,…