Linux编译安装最新半Redis

Posted 白-胖-子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux编译安装最新半Redis相关的知识,希望对你有一定的参考价值。

Redis

Redis is an open source (BSD licensed), in-memory data structure store,used as a database.

Redis 特性

  • 速度快: 10W QPS,基于内存,C语言实现
  • 单线程(Redis 6以前早期版本)
  • 持久化
  • 支持多种数据结构
  • 支持多种编程语言
  • 功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能
  • 简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单
  • 自带主从复制
  • 自带集群功能,支持高可用和分布式

YUM安装Redis

  • yum安装的Redis版本比较老旧
yum -y install redis
systemctl enable --now redis

源码编译安装Redis

下载源码包

  • 官网下载Redis最新release版本源码包
wget http://download.redis.io/releases/redis-6.2.4.tar.gz

解压缩

  • 将下载的压缩包解压到指定目录
tar xf redis-6.2.4.tar.gz -d /usr/local/src

安装依赖包

yum -y install gcc make jemalloc-devel

创建安装目录

mkdir -p ${INSTALL_DIR}/{etc,log,data,run}

新建redis系统用户

useradd -r -s /sbin/nologin redis

编译安装

  • 进入源码目录,指定安装路径并安装
cd ${SRC_DIR}
make -j ${CPUS} PREFIX=${INSTALL_DIR} install

拷贝配置文件

  • 在源码目录中已经准备好了配置文件
  • 将配置文件拷贝至安装目录
cp redis.conf ${INSTALL_DIR}/etc/
  • 按需修改配置文件中内容
sed -i -e 's/bind 127.0.0.1.*/bind 0.0.0.0/' \\ ## 设定监听本机所有端口
-e "/# requirepass/a requirepass ${PASSWORD}" \\ ## 设定验证密码
-e "/^dir .*/c dir ${INSTALL_DIR}/data/" \\ ## 设定数据存放目录
-e "/logfile .*/c logfile ${INSTALL_DIR}/log/redis-6379.log" \\ ## 设定日志文件
-e "/^pidfile .*/c pidfile ${INSTALL_DIR}/run/redis_6379.pid" \\ ## 设定pid文件
${INSTALL_DIR}/etc/redis.conf

修改程序目录属主

  • 为程序安装目录更换属主和主组,
  • 让redis用户具有程序目录执行权限,方便以redis用户运行程序
chown -R redis.redis ${INSTALL_DIR}

创建主要程序软链接

  • 为所有安装程序创建软链接至环境变量中可执行程序的目录中
  • 方便程序执行
ln -s ${INSTALL_DIR}/bin/redis-* /usr/bin/

解决三个报错问题

  • 修改系统配置文件,解决三个报错问题
  • 设置somaxconn大于1000,backlog参数控制的是三次握手的时候server端收到client ack确认号之后的队列值
  • 启用overcommit_memory1,允许内核分配所有的物理内存,而不管当前的内存状态如何
cat >> /etc/sysctl.conf <<EOF
net.core.somaxconn = 1024
vm.overcommit_memory = 1
EOF

sysctl -p
  • 禁用THP透明大页面,解决THP在Redis中造成延迟和内存使用问题
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enable' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
  • 如果没有 /etc/rc.d/rc.local,则
cat >> /lib/systemd/system/rc-local.service <<EOF
[Install]
WantedBy=multi-user.target
EOF
echo '#!/bin/bash' > /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enable' >> /etc/rc.local
chmod +x /etc/rc.local

创建服务启动脚本

cat > /lib/systemd/system/redis.service <<EOF
[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
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
EOF

重新加载服务

systemctl daemon-reload

启动服务并设为开机运行

systemctl enable --now redis

登录验证

redis-cli -a ${PASSWORD} INFO Server

redis_version6.2.4

查看端口验证

ss -ntlp

ss-ntlp

查看服务状态

systemctl status redis

redis-status

以上是关于Linux编译安装最新半Redis的主要内容,如果未能解决你的问题,请参考以下文章

Linux上安装redis说明

linux下redis安装

redis linux 安装

linux安装redis操作

linux上安装redis

redis数据库在linux上的学习