文章目录
前言
Redis系列的第一篇博客,先从安装部署开始,这里我选择的是最新的稳定版本Redis 7.0.9 Released
一、官方文档
官网地址:https://redis.io/docs/getting-started/installation/install-redis-from-source/
另外,安装过程中也可以查看安装包下的README.md
文件。
Tip:
学习一门新的技术,首选推荐查看官方文档。也许不是最详细、最简单易懂的,但一定是最全面、最精准的。
二、环境说明
- CentOS 7.X
- Redis 7.0.X
三、源码安装
官网给我们提供了4种安装方式,这里第4种方式:基于源码安装 Install Redis from Source
。
1.基本步骤
代码如下(示例):
//一般用户自行安装的软件都放在/usr/local/目录下
cd /usr/local/
//下载最新的稳定版本
wget https://download.redis.io/redis-stable.tar.gz
//解压
tar -xzvf redis-stable.tar.gz
cd redis-stable
//编译,需要gcc编译器
make
//测试:官方建议操作,但比较耗时,可以跳过,需要tcl 8.5
//make test
//安装服务
make install
//启动redis服务
redis-server
make install说明:
make install命令会默认将服务安装到/usr/local/redis-stable/src/
和/usr/local/bin/
目录下。
如果希望重新指定安装目录,可以适用PREFIX参数:
redis-server服务启动成功:
2.异常记录
1)make编译异常:make[3]: cc:命令未找到
解决方案:
原因是CentOS7虚拟机系统中缺少gcc,因此只要安装好gcc即可
yum -y install gcc
2)make编译异常:zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
解决方案:
由于解压的时候,没有事先安装gcc编译器,导致初次make已经产生了很多垃圾问题。
这时需要删除之前的编译文件,重新执行make编译操作。
cd /usr/local/
rm -fr redis-stable
tar -xzvf redis-stable.tar.gz
cd redis-stable
make
也可以通过make distclean
命令,清空之前执行make编译生成的缓存文件,然后重新编译:
make distclean
make
3)make test异常:You need tcl 8.5 or newer in order to run the Redis test
解决方案:
yum install -y tcl-devel
也可以通过源码安装,但是下载速度很慢。
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz
cd /usr/local/tcl8.6.1/unix/
./configure
make
make install
测试通过:
3.测试服务
打开一个新的连接窗口,使用redis-cli测试redis服务
[root@localhost ~]# cd /usr/local/
[root@localhost local]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set laowan 666
OK
127.0.0.1:6379> get laowan
"666"
127.0.0.1:6379> incr mycounter
(integer) 1
127.0.0.1:6379> incr mycounter
(integer) 2
127.0.0.1:6379> exit
4.基本配置
这里我直接修改的redis目录下默认的配置文件redis.conf,大家也可以复制新的配置文件后再属性编辑:
cd /usr/local/redis-stable
vi redis.conf
# 设置redis服务监听的实例,只有绑定IP的服务器才能访问redis服务,这里设置为全部开放,可以改为自己需要访问redis服务器的具体IP
bind * -::*
#保护模式,默认开启,此时远程服务器需要密码才能访问redis服务
protected-mode yes
#守护进程启动,也就是后台启动,会将进程pid写入/var/run/redis.pid文件中,systemd下无效
daemonize yes
#配置pid文件的保存地址
pidfile /var/run/redis_6379.pid
#日志等级
loglevel notice
#日志文件,默认/dev/null
logfile ""
#认证配置
#redis7中推荐采用acl认证
#aclfile /etc/redis/users.acl
#密码认证
requirepass 123456
#设置最大内存,避免Redis使用的内存达到系统限制时会因内存不足而崩溃
maxmemory 1g
#过期淘汰策略,默认是noeviction不淘汰,这里设置为淘汰最不经常使用的过期key
maxmemory-policy volatile-lfu
5.其他推荐配置
可以发现,在redis的启动日志中会出现一些警告⚠️信息,尽量根据提示去进行优化。
- TCP积压backlog设置,表示socket监听(listen)的backlog上限,backlog就是socket的监听队列,当一个请求(request)尚未被处理或建立时,就会进入backlog,默认值
/proc/sys/net/core/somaxconn
为128,太小了,需要加大。 - 开启内存过量使用:添加
vm.overcommit_memory = 1
到/etc/sysctl.conf,执行sysctl vm.overcommit_memory=1使配置生效。 - 关闭内核特性transparent huge pages,它会对内存使用和延迟方面有负面影响。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
- 减少swap内存的使用,提高性能。
/etc/sysctl.conf中添加以下内容:
//开启内存过量使用,避免后台保存或复制可能会在内存不足的情况下失败。 被禁用时,它也可能在没有低内存条件的情况下导致失败
vm.overcommit_memory = 1
//TCP积压backlog设置
net.core.somaxconn = 2048
//可以打开的最大文件数
fs.file-max = 6553560
//尽量少使用swap空间,swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60
//由于内存的速度会比磁盘快很多,这样子会加大系统IO,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整
vm.swappiness = 1
执行以下命令使参数生效
sysctl -p
6.远程连接
RedisInsight是官网推荐的Redis可视化客户端工具,被称为最好用的Redis GUI。
这里我们用来测试Redis服务的远程连接。
这里我的虚拟机IP是:192.168.206.129,连接信息:
连接成功: