目的
Redis作为一个开源数据库,处理速度较快,因为所有数据都可保存至内存,这是开发实时数据处理类应用程序的最佳解决方案之一。
本教程将详细介绍如何在Linux CentOS 7发服务器上安装和配置Redis数据库,以及提高数据库安全性和创建副本等。 首先,您需要通过SSH连接连接到服务器。若是本地服务器,请記得打开服务器的终端。
安装Redis
为安装Redis,请先使用yum的方式下载:
sudo yum install redis
当下载完成后,请打开下载包,并启动安装。
sudo systemctl start redis
sudo systemctl enable redis
检查
为验证Redis的安装正确,需使用Redis -cli命令行客户端,在数据库中设置一个测试值
$ redis-cli set test 123456
OK
如果操作正确,您可以看到服务器回复“OK”。请记得检查该值与测试值是否一致。
$ redis-cli get test
"123456"
Redis将返回刚刚保存的值(在此案例中,字符串为“123456”)。然后记得删除此次测试。
$ redis-cli del test
(integer) 1
提高安全性
Redis初始配置下,允许只从本地地址连接到数据库,而不需要任何密码或认证形式。所有设置都是通过/etc/ Redis .conf中的配置文件读取的,并且可以通过使用任何客户端软件的CONFIG SET / CONFIG GET命令,在任何时间和实时覆盖。
但是,客户端修改的设置不会保存在配置文件中,在下次启动Redis时即会丢失。 为提高数据库安全性,可以通过修改或插入配置文件中的requirepass条目来设置身份验证密码:
requirepass 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4
密码保存在明文配置文件中,必须足够长的时间来抵御暴力攻击,因为Redis能够每秒处理多个连接。最重要的设置中,还需要绑定,设置地址上的Redis必须启用连接接收:
bind 127.0.0.1
默认启用本地地址127.0.0.1。如果需要对外公开Redis服务器,可以添加额外的地址,例如:
bind 127.0.0.1 51.125.63.201
另一个常见的错误是保留用于侦听传入连接的默认端口设置。这意味允许任何端口扫描软件定位Redis服务器:
port 2589
通过将端口从6379改为2589,Redis则可以被隐藏,并为您的安装增加了额外的安全级别。
完成对配置文件的所有修改后,请重启:
$ sudo systemctl restart redis
请检查刚刚应用的参数,使用redis-cli获取当前绑定参数,使用新配置的端口和上面设置的密码:
$ redis-cli -a 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4 -p 2589 config get bind
服务器应该响应所需的参数:
1) "bind"
2) "127.0.0.1"
创建复制品安装
Redis也能夠允许在几个步骤中配置一个副本服务器。与主版本相比,这个副本服务器是实时更新的。通过此配置,可以提供主服务器故障时读取数据的备份服务。
连接到备用服务器后,請使用yum完成Redis的安装:
$ sudo yum install redis
同样的安全程序在前面的段落可以应用到保护这个Redis实例。在下面的示例中,将使用默认参数。为了与主服务器同步,副本必须与主机正确通信。确保公共IP地址出现在主机器的配置中(bind参数),并通过从机器启动命令来检查连接是否正常:
$ redis-cli -h [MASTER_IP_ADDRESS] -a [PASSWORD_MASTER] ping
PONG
如果对ping命令有响应,则是说明机能够正常通信。
然后,在配置文件/etc/redis.conf中修改以下参数,可继续进行slave的实际配置:
# If it is there, specify the master connection password too.
masterauth password
# The slaveof directory specifies the master connection parameters (ADDRESS_IP PORT)
slaveof 195.231.4.71 6379
完成后,保存配置并启动Redis从服务器,请输入:
$ sudo systemctl start redis
$ sudo systemctl enable redis
这时您可以检查同步是否被正确激活,使用tail来查看服务日志文件的最后几行:
$ tail /var/log/redis/redis.log
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: receiving 77 bytes from master
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Flushing old data
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Loading DB in memory
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Finished with success
最后几行即是确认正常工作。
然后,执行一个测试,在数据库中设置一个值,并检查主服务器是否正确读取了该值。
从主服务器设置测试密钥:
$ redis-cli -a password set test hello
OK
读取从属服务器的相同值:
$ redis-cli get test
"hello"
正如你所看到的,主站和从站都存储了相同的值。这意味着复制工作是正确的!