如何在Oracle Linux 9.x编译部署Redis?

编译安装

1 基础知识

1.1 Redis的简介

Redis是一种开放源代码(BSD许可)的运行于内存中的数据结构存储

1.2 Redis的用途

– Redis可作为数据库
– Redis可作为缓存
– Redis可作为消息代理

1.3 Redis支持的数据结构

– 字符串结构
– 哈希结构
– 列表结构
– 集合结构
– 带范围查询的排序集合结构
– 位图结构
– 超日志结构
– 带半径查询和流的地理空间索引结构

1.4 Redis的功能

– Redis支持内置复制功能
– Redis支持内置Lua脚本功能
– Redis支持内置LRU驱逐功能
– Redis支持内置事务功能
– Redis支持不同级别的磁盘持久性功能

1.5 Redis-cli

1.5.1 Redis-cli的简介

– redis-cli是Redis命令行界面
– redis-cli可直接从终端向Redis发送命令并读取服务器的回复

1.5.2 Redis-cli的主要模式

– 交互模式,键入命令且能获取回复
– 标准输出模式,将命令行作为参数发送
– 特殊模式,接收主服务器的流并模拟从服务器输出该流

2 最佳实践

2.1 部署前的准备

2.1.1 系统基本配置

OS = Oracle Linux 9.x x86_64
HostName = any
IPAddress = any
请参阅如下章节完成系统的基本配置,

如何完成CentOS 7.x的基本服务?

2.1.2 准备编译环境

dnf -y install gcc gcc-c++ make

2.1.3 准备软件包

cd ~
wget https://github.com/redis/redis/archive/7.2.3.tar.gz -O redis-7.2.3.tar.gz
tar -xf redis-7.2.3.tar.gz

另外,其他版本请从以下链接下载,
https://redis.io/download

2.2 编译并安装软件包

2.2.1 编译软件包

cd ~/redis-7.2.3/
make PREFIX=/usr

2.2.2 安装软件包

cd ~/redis-7.2.3/
make PREFIX=/usr install

另外,如果需要卸载,请使用如下命令,

cd ~/redis-7.2.3/
make PREFIX=/usr uninstall

2.2.3 确认安装

redis-server -v

可见如下提示,

Redis server v=7.2.3 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=d7266b4766eba724

2.3 配置redis

2.3.1 创建运行用户

groupadd redis
useradd -g redis -d /var/lib/redis -s /sbin/nologin -c "Redis Database Server" redis

2.3.2 修改配置文件

mkdir -p /etc/redis/
cp ~/redis-7.2.3/redis.conf /etc/redis/redis.conf
cp /etc/redis/redis.conf /etc/redis/redis.conf.default
vim /etc/redis/redis.conf

修改配置如下,

supervised systemd
logfile "/var/log/redis/redis.log"
dir /var/lib/redis
requirepass redispasswd

另外,也可以使用如下快速命令执行,

sed -i "s/# supervised auto/supervised systemd/g" /etc/redis/redis.conf
sed -i 's/logfile ""/logfile "\/var\/log\/redis\/redis.log"/g' /etc/redis/redis.conf
sed -i "s/dir .\//dir \/var\/lib\/redis/g" /etc/redis/redis.conf
sed -i "s/# requirepass foobared/requirepass redispasswd/g" /etc/redis/redis.conf

然后,我们需要根据配置增加响应的文件夹,

mkdir -p /var/log/redis
touch /var/log/redis/redis.log
chown redis:redis -R /var/log/redis

考虑到日志切割问题,我们还建议做如下配置,

vim /etc/logrotate.d/redis

需要加入如下配置,

/var/log/redis/*.log {
    weekly
    rotate 10
    copytruncate
    delaycompress
    compress
    notifempty
    missingok
}

2.3.3 测试服务运行

runuser -u redis /usr/bin/redis-server /etc/redis/redis.conf

执行命令后,可开启另外一个终端使用如下命令确认Redis是否运行,

netstat -antp | grep redis

可见如下显示,

tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      7861/redis-server 1 
tcp6       0      0 ::1:6379                :::*                    LISTEN      7861/redis-server 1 

另外,也可以使用如下命令查看服务的进程,

pgrep -u redis redis-server -a

可见如下显示,

7861 /usr/bin/redis-server 127.0.0.1:6379 

2.3.4 创建服务控制脚本

cd ~/redis-7.2.3/
cp utils/systemd-redis_server.service /usr/lib/systemd/system/redis.service
vim /usr/lib/systemd/system/redis.service

加入如下配置,

[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
LimitNOFILE=10032
NoNewPrivileges=yes
Type=simple
TimeoutStartSec=infinity
TimeoutStopSec=infinity
UMask=0077
User=redis
Group=redis
WorkingDirectory=/var/lib/redis

[Install]
WantedBy=multi-user.target

编辑完成后,你需要使用如下命令重载使脚本生效,

systemctl daemon-reload

配置完成后,可使用如下命令启动服务并设置自启动,

systemctl start redis.service
systemctl enable redis.service

如果启动异常,可使用如下命令检查日志,

tail -f /var/log/messages
tail -f /var/log/redis/redis.log

2.3.5 测试redis服务

redis-cli
127.0.0.1:6379> auth redispasswd
OK
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> quit

参阅文档
===============

Redis官方文档
————-
https://redis.io/

Redis支持的指令
————-
https://redis.io/commands

Redis支持的客户端
————-
https://redis.io/clients

Redis的文档
————-
https://redis.io/documentation

Rediscli的使用
————-
https://redis.io/topics/rediscli

nextCloud and Redis
https://docs.nextcloud.com/server/20/admin_manual/configuration_server/caching_configuration.html

没有评论

发表回复

PHP
如何编译安装php-fpm的模块?

1 前言 一个问题,一篇文章,一出故事。 笔者最新部署了一个PHP-FPM的环境,本章将整理如何部署 …

PHP
如何基于Oracle Linux 9.x编译安装PHP-FPM 8.x?

1 前言 一个问题,一篇文章,一出故事。 PHP-FPM可以跟Nginx配合使Nginx环境具备运行 …

Tomcat
如何编译安装Tomcat的Native库?

1 基础知识 Tomcat的Native库允许Tomcat使用OpenSSL作为JSSE的替代品来支 …