Redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo编写的key-value存储系统。你可以使用它作为memcached简单的键值对存储,同时也可以使用edis作为NoSQL数据库,甚至可以使用Pub-Sub模式的MessageBroker。
本文简单介绍下在Ubuntu20.04或Ubuntu18.04系统上安装、配置和调试最新Redis版本的方法,有需要安装的小伙伴可以看看。
1、安装Redis
本文使用Chris-Lea/redis-serverPPA,这里的Redis版本较新,官网的版本较旧。
将PPA添加到系统的软件源(如有提示按下ENTER键),命令如下:
$ sudo add-apt-repository ppa:chris-lea/redis-server
更新软件包列表,然后安装Redis,依次执行命令:
$ sudo apt-get update
$ sudo apt-get install redis-server -y
设置Redis开机自动启动:
$ sudo systemctl enable redis-server.service
2、配置Redis
使用编辑器打开Redis配置文件,命令如下:
$ sudo nano /etc/redis/redis.conf
更新Redis可以监听的IP地址:
如果在应用程序服务器上安装了Redis,则默认设置是安全的。
bind 127.0.0.1 ::1
不用改变这句话,这时候应用程序将使用LoopBack IP 127.0.0.1连接到Redis。
否则的话,需要在Redis服务器和应用服务器之间启用和配置专用网络,然后添加私有IP,例如,192.0.2.1,到上面行的末尾,用空格分开。
bind 127.0.0.1 ::1 192.0.2.1
您的应用程序将使用私有IP 192.0.2.1连接到Redis。注意:让Redis监听公共IP是危险并将这个实例暴露给互联网上的每一个人,所以不建议使用第二种方式。
接下来为应用程序设置所需的内存容量,例如,128 MB(平均128 MB):
maxmemory 128mb
默认情况下,当最大内存到达时,Redis将停止编写新数据。如果您希望Redis通过自动删除旧数据来继续编写新数据,则必须告诉Redis如何删除它,设置如下:
maxmemory-policy allkeys-lru
此外,Redis在指定的时间段和对DB的写入操作数之后会将内存中的数据保存在磁盘上,默认设置为:
save 900 1
save 300 10
save 60 10000
代表的意思分别如下:
900秒后(15分钟),如果至少有一个键改变
300秒(5分钟)后,如果至少有10个键改变
60秒后,如果至少有10000个键更改
所以,使用上述默认设置,Redis将在每次重新启动时将保存的数据加载到内存中。所以你以前的内存数据将被恢复。如果您不需要此功能,则可以通过注释掉这些行来完全禁用它。
#save 900 1
#save 300 10
#save 60 10000
如果您决定保留此功能,则应将服务器升级到更大的计划,以确保为Redis保留的内存是最大内存上述声明。否则,在最坏的情况下,当最大内存到达时,保存过程会导致服务器耗尽内存。
保存并关闭配置文件,然后重新启动Redis以应用更改,命令如下:、
$ sudo systemctl restart redis-server.service
3、微调系统
打开Redis日志文件,命令如下:
$ sudo tail /var/log/redis/redis-server.log
您将看到以下这样的信息内容:
50570:M 24 Jul 2020 09:53:24.644 # Server initialized
50570:M 24 Jul 2020 09:53:24.644 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.
50570:M 24 Jul 2020 09:53:24.644 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled’ as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
50570:M 24 Jul 2020 09:53:24.645 * Loading RDB produced by version 6.0.5
50570:M 24 Jul 2020 09:53:24.645 * RDB age 0 seconds
50570:M 24 Jul 2020 09:53:24.645 * RDB memory usage when created 0.76 Mb
50570:M 24 Jul 2020 09:53:24.645 * DB loaded from disk: 0.000 seconds
50570:M 24 Jul 2020 09:53:24.645 * Ready to accept connections
要修复上面的第一个警告,输入以下命令:
$ echo ‘vm.overcommit_memory = 1’ | sudo tee -a /etc/sysctl.conf > /dev/null
$ sudo sysctl -p
要修复上面的第二个警告,创建一个新的文本文件:
$ sudo nano /etc/rc.local
然后将以下文本粘贴到该文件中:
#!/bin/bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
systemctl restart redis-server.service
exit 0
保存并关闭该文件,然后使其可运行,并由root用户拥有。
$ sudo chown root:root /etc/rc.local
$ sudo chmod 770 /etc/rc.local
可选设置:
如果Redis与应用程序服务器分离,并且还安装了UFW,则必须配置UFW以允许连接到Redis端口,默认为6379:
$ sudo ufw allow 6379
如果在Ubuntu18.04上安装Redis,Redis将触发关于“TCP积压”的附加警告,若要修复此警告,请输入以下命令:
$ echo ‘net.core.somaxconn = 512’ | sudo tee -a /etc/sysctl.conf > /dev/null
$ sudo sysctl -p
4、验证设置
重新启动系统:
$ sudo reboot
打开Redis日志文件,以确保上面的两个警告已经消失:
$ sudo tail /var/log/redis/redis-server.log
切换到应用服务器,通过执行以下操作,确保它可以与Redis服务器对话:
安装redis-cli提供的程序Redis-工具来自官方:
$ sudo apt-get install redis-tools
使用redis-cli配置的Redis IP地址连接到Redis服务器,例如,192.0.2.1:
$ redis-cli -h 192.0.2.1
如果连接成功将看到Redis命令提示符如下所示:
192.0.2.1:6379> _
输入一些Redis命令以确保其正常工作:
set testkey testvalue
get testkey
exit
如果您看到以下结果,那么您的Redis设置就是成功的:
192.0.2.1:6379> set testkey testvalue
OK
192.0.2.1:6379> get testkey
“testvalue”
192.0.2.1:6379> exit
总之,以上就是在Ubuntu20.04或Ubuntu18.04系统上安装最新Redis版本的方法,相对来说还是比较简单的,如果有不清楚的小伙伴可以参考上述教程进行设置。