在RHEL 8/CentOS 8上安装和配置Redis服务器

时间:2020-02-23 14:31:05  来源:igfitidea点击:

如何在CentOS 8/RHEL 8上安装Redis?本指南将在RHEL 8/CentOS 8 Linux系统上安装和配置Redis服务器。 Redis是一个免费的开源内存中数据结构存储。它可用作数据库服务器,消息代理或者将数据缓存在内存中以加快检索速度。

Redis支持的数据结构是:

  • 哈希
  • 具有范围查询
  • 字符串
  • 排序的列表
  • 超级日志日志
  • 位图
  • 地理空间索引等

在RHEL 8/CentOS 8上安装Redis

RHEL 8上的Redis可在AppStream存储库中使用。

$yum module list redis
 Updating Subscription Management repositories.
 Updating Subscription Management repositories.
 Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs)
 Name                         Stream                         Profiles                          Summary                                                  
 redis                        4.0 [d]                        default [d]                       Redis persistent key-value database                      
 Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

从输出中可以看到,Redis 4.0在AppStream上可用。使用yum软件包管理器安装它。

sudo yum install -y @redis

安装软件包后,启动并启用Redis服务以在启动时启动。

sudo systemctl enable --now redis

服务状态应显示正在运行。

$sudo systemctl status redis
 ● redis.service - Redis persistent key-value database
    Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
   Drop-In: /etc/systemd/system/redis.service.d
            └─limit.conf
    Active: active (running) since Sat 2016-12-29 10:00:40 EAT; 5s ago
  Main PID: 30348 (redis-server)
     Tasks: 4 (limit: 11510)
    Memory: 6.4M
    CGroup: /system.slice/redis.service
            └─30348 /usr/bin/redis-server 127.0.0.1:6379
 Dec 29 10:00:40 rhel8.local systemd[1]: Starting Redis persistent key-value database…
 Dec 29 10:00:40 rhel8.local systemd[1]: Started Redis persistent key-value database.

在RHEL 8/CentOS 8上配置Redis服务器

现在已经安装了Redis服务器,接下来的部分是配置。我们可以设置许多可调参数以适合用例,但不适用于入门所需的基本设置。

启用Redis服务以侦听所有接口

默认情况下,Redis服务侦听127.0.0.1. 如果需要远程客户端连接到该服务,则允许该服务在所有网络接口上侦听。

$ss -tunelp | grep 6379
tcp   LISTEN  0    128   127.0.0.1:6379    0.0.0.0:*  users:(("redis-server",pid=30348,fd=6)) uid:986 ino:71091 sk:4 <->

用我们喜欢的文本编辑器打开文件/etc/redis.conf

sudo vim /etc/redis.conf

然后将下面的第69行绑定127.0.0.1更改为:

bind 0.0.0.0

进行更改后重新启动Redis

sudo systemctl  restart redis

确认新的绑定地址。

$ss -tunelp | grep 6379
 tcp   LISTEN  0    128   0.0.0.0:6379    0.0.0.0:*  users:(("redis-server",pid=30348,fd=6)) uid:986 ino:71091 sk:4 <->

配置Redis身份验证

配置Redis身份验证以使客户端在处理任何其他命令之前要求AUTH <PASSWORD>。

requirepass  <AuthPassword>

例:

requirepass StrongPassword

设置永久存储进行恢复

通过更改" appendonly"值玩具来设置持久性模式

appendonly yes
appendfilename "appendonly.aof"

进行更改后重新启动Redis服务

sudo systemctl restart redis

如果我们有活动的防火墙服务,请允许端口6379.

sudo firewall-cmd --add-port=6379/tcp --permanenent
sudo firewall-cmd --reload

检查redis服务状态:

$sudo systemctl status redis
 ● redis.service - Redis persistent key-value database
    Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
   Drop-In: /etc/systemd/system/redis.service.d
            └─limit.conf
    Active: active (running) since Sat 2016-12-29 10:11:56 EAT; 9s ago
   Process: 30485 ExecStop=/usr/libexec/redis-shutdown (code=exited, status=0/SUCCESS)
  Main PID: 30500 (redis-server)
     Tasks: 4 (limit: 11510)
    Memory: 6.4M
    CGroup: /system.slice/redis.service
            └─30500 /usr/bin/redis-server 0.0.0.0:6379
 Dec 29 10:11:56 rhel8.local systemd[1]: Stopped Redis persistent key-value database.
 Dec 29 10:11:56 rhel8.local systemd[1]: Starting Redis persistent key-value database…
 Dec 29 10:11:56 rhel8.local systemd[1]: Started Redis persistent key-value database.

连接到Redis

确认我们可以在本地连接到Redis Server:

$redis-cli
127.0.0.1:6379> INFO
 NOAUTH Authentication required.

测试验证:

127.0.0.1:6379> AUTH <AuthPassword>
OK

我们应该在输出中收到OK。如果输入了错误的密码,则身份验证将失败:

127.0.0.1:6379> AUTH WrongPassword
(error) ERR invalid password

检查redis信息。

127.0.0.1:6379>  INFO

这将输出一长串数据。我们可以通过将Section作为参数来限制输出。例如。

127.0.0.1:6379> INFO Server
 Server
 redis_version:4.0.10
 redis_git_sha1:00000000
 redis_git_dirty:0
 redis_build_id:fdf31b4ab3504500
 redis_mode:standalone
 os:Linux 4.18.0-32.el8.x86_64 x86_64
 arch_bits:64
 multiplexing_api:epoll
 atomicvar_api:atomic-builtin
 gcc_version:8.2.1
 process_id:30500
 run_id:d8c5ba56a0735a6831a0b3467c3efa95ac174cdd
 tcp_port:6379
 uptime_in_seconds:222
 uptime_in_days:0
 hz:10
 lru_clock:2563866
 executable:/usr/bin/redis-server
 config_file:/etc/redis.conf

执行Redis基准测试

针对本地Redis,使用具有10个并行连接的基准测试,总共有10万个请求,以测试其性能。

# redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -c 10
..................................................
100.00% <= 0 milliseconds
 85470.09 requests per second
 ====== LRANGE_500 (first 450 elements) ======
   100000 requests completed in 1.17 seconds
   10 parallel clients
   3 bytes payload
   keep alive: 1
 100.00% <= 0 milliseconds
 85397.09 requests per second
 ====== LRANGE_600 (first 600 elements) ======
   100000 requests completed in 1.18 seconds
   10 parallel clients
   3 bytes payload
   keep alive: 1
 100.00% <= 0 milliseconds
 84530.86 requests per second
 ====== MSET (10 keys) ======
   100000 requests completed in 1.18 seconds
   10 parallel clients
   3 bytes payload
   keep alive: 1
 100.00% <= 0 milliseconds
 84961.77 requests per second

有关更多选项和示例,请使用:

$redis-benchmark --help

要显示已连接的客户端,请使用:

127.0.0.1:6379> client list 
 id=185 addr=127.0.0.1:54300 fd=8 name= age=75 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client

在Python中使用Redis

要将redis与Python一起使用,请安装Python Redis Client Library:

sudo yum -y install  python-redis

在PHP中使用Redis

要使用PHP连接到Redis服务器,请安装PHP Redis客户端模块。

sudo yum -y install php-pecl-redis