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

在 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.dtcms.com/a/106568.html

相关文章:

  • MaxScript 实现冒泡排序算法
  • .Net8项目使用docker、docker-compose部署步骤
  • C++STL——容器-vector(含部分模拟实现,即地层实现原理)(含迭代器失效问题)
  • Spark大数据分析与实战笔记(第四章 Spark SQL结构化数据文件处理-03)
  • uni-app:firstUI框架的选择器Select改造,添加一个搜索的插槽
  • 以 dockurr/windows 容器运行一个windows 操作系统
  • QML输入控件: Slider的高级外观定制(音视频控制条)
  • 接口测试及常用接口测试工具
  • 【C语言】深入理解指针(五):sizeof、strlen与数组指针的那些事儿
  • 【学Rust写CAD】26 图形像素获取(pixel_fetch.rs)
  • 红日靶场一实操笔记
  • C++ QT 如何生成dll提供給python使用
  • 星途​(小说)
  • 零欧姆电阻的作用、使用场景及注意事项详解
  • PyTorch 核心详解
  • 第六章、Isaacsim中的资产(usd)
  • 【嵌入式系统设计师】知识点:第1章 计算机系统基础知识
  • 方案精读:IPD业务流程体系构建(中)【附全文阅读】
  • 介绍一点metric self-join和复合索引笔记
  • 数组中两个字符串的最小距离
  • 【深度学习量化交易19】行情数据获取方式比测(1)——基于miniQMT的量化交易回测系统开发实记
  • CCF CSP 第34次(2024.06)(2_矩阵重塑(其二)_C++)(二维矩阵 -> 一维矩阵 -> 二维矩阵)
  • 【万字总结】前端全方位性能优化指南(九)——FSP(First Screen Paint)像素级分析、RUM+合成监控、Lighthouse CI
  • 蓝桥杯C++基础算法-最大公约数
  • 论文阅读:基于增强通用深度图像水印的混合篡改定位技术 OmniGuard
  • 电池自动点焊机:智能制造的得力助手|深圳比斯特自动化
  • 普通链式二叉树(习题版)
  • 脑影像分析软件推荐| SimTB
  • WireShark安装
  • BigMusic来了:火山引擎AI音乐模型的技术革新与应用实践