Centos7.6 安装Redis7
方式一:包安装
1.安装(#默认安装redis-3.2.12)
yum install -y redis
2.启动并设置开机自启动
systemctl enable --now redis
3.查看6379端口是否开启
ss -ntl
方式二:编译安装
1.安装依赖包
yum -y install gcc make jemalloc-devel systemd-devel
2.下载源码包
#其它版本地址:Index of /releases/
wget http://download.redis.io/releases/redis-7.0.8.tar.gz
3.解压
tar xvf redis-7.0.8.tar.gz
4.切换目录
cd redis-7.0.8
5.安装
make -j 2 USE_SYSTEMD=yes PREFIX=/apps/redis install
#选项说明:
USE_SYSTEMD:支持systemd
PEFIX=指定安装目录路径
6.配置环境变量
echo 'PATH=/apps/redis/bin:$PATH' > /etc/profile.d/redis.sh . /etc/profile.d/redis.sh
7.创建配置文件、日志、数据等目录
mkdir /apps/redis/{etc,log,data,run}
8.复制源配置文件到新建的配置目下
cp redis.conf /apps/redis/etc/
9.前台启动
redis-server /apps/redis/etc/redis.conf
#发现三个Warning提示信息,最新的redis-7.0.8只有前两个:
(1)
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
#TCP backlog 是指TCP的第三次握手服务器端收到客户端 ack确认号之后到服务器用Accept函数处理请求 前的队列长度,即全连接队列
#消除方法:
vim /etc/sysctl.conf net.core.somaxconn = 1024
sysctl -p
(2)
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. 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.
#内核参数说明:
内核参数overcommit_memory 实现内存分配策略,可选值有三个:0、1、2
0 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则内存 申请失败,并把错误返回给应用进程
1 表示内核允许分配所有的物理内存,而不管当前的内存状态如何
2 表示内核允许分配超过所有物理内存和交换空间总和的内存
#消除方法:
vim /etc/sysctl.conf vm.overcommit_memory = 1
sysctl -p
(3)
#redis-5.0.7会有如下提示:
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.
警告:您在内核中启用了透明大页面(THP,不同于一般4k内存页,而为2M)支持。 这将在Redis中造成延迟
和内存使用问题。 要解决此问题,请以root 用户身份运行命令“echo never>
/sys/kernel/mm/transparent_hugepage/enabled”,并将其添加到您的/etc/rc.local中,以便在
重启后保留设置。禁用THP后,必须重新启动Redis。
#消除方法:
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local echo never > /sys/kernel/mm/transparent_hugepage/enabled
重新启动redis验证是否消除 Warning
10.创建 Redis 用户和设置数据目录权限
useradd -r -s /sbin/nologin redis chown -R redis.redis /apps/redis/
#useradd -s:指定用户登录的shell
#/sbin/nologin:shell类型中的一种,作用是禁止用户登录
11.创建Service文件,配置自启动
vim /lib/systemd/system/redis.service
[Unit] Description=Redis persistent key-value database After=network.target[Service] ExecStart=/apps/redis/bin/redis-server /apps/redis/etc//redis.conf --supervised systemd ExecStop=/bin/kill -s QUIT $MAINPID Type=notify #如果支持systemd可以启用此行 User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755 LimitNOFILE=1000000 #指定此值才支持更大的maxclients值[Install] WantedBy=multi-user.target
12.通过Service方式启动
systemctl daemon-reload systemctl start redis systemctl status redis
配置允许远程连接 并添加密码
redis.conf 配置文件部分修改如下
# bind 127.0.0.1 bind 0.0.0.0 # 允许外部链接 # protected-mode yes protected-mode no # 关闭保护模式,是为了远程连接 # daemonize no daemonize yes # 守护模式, 为了能让服务后台运行 requirepass 111111 #你的密码