Redis特性
速度快: 10W QPS,基于内存,C语言实现
单线程:引号的”单线程“
持久化:RDB,AOF
支持多种数据类型
支持多种编程语言
功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能
简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单
主从复制
支持高可用和分布式
Redis 6.0版本前一直是单线程方式处理用户的请求
Redis部署
一、包安装
示例:Ubuntu22.04基于官方仓库包安装
[root@ubuntu2204 ~]#curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
[root@ubuntu2204 ~]#echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
[root@ubuntu2204 ~]#ls /etc/apt/sources.list.d/redis.list
[root@ubuntu2204 ~]#cat /etc/apt/sources.list.d/redis.list
deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb jammy main
[root@ubuntu2204 ~]#apt update
[root@ubuntu2204 ~]#apt list -a redis
#安装最新版
[root@ubuntu2204 ~]#apt -y install redis
#指定版本安装,注意:因为依赖关系可能会失败
[root@ubuntu2204 ~]#apt -y install redis=6:7.2.4-1rl1~jammy1
二、源码编译安装
Redis源码包官方下载地址: https://download.redis.io/releases/
官方的安装方法:https://redis.io/docs/latest/operate/oss_and_stack/install/build-stack/ubuntu-noble/
示例:Ubuntu24.04 编译安装redis-8.2.1
[root@ubuntu2404 ~]#apt update && apt install -y --no-install-recommends gcc make ca-certificates wget dpkg-dev g++ libc6-dev libssl-dev git cmake python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf libtool pkg-config libsystemd-dev
[root@ubuntu2404 ~]#version=8.2.1
[root@ubuntu2404 ~]#cd /usr/local/src
[root@ubuntu2404 src]#wget -O redis-$version.tar.gz https://github.com/redis/redis/archive/refs/tags/$version.tar.gz
[root@ubuntu2404 src]#tar xvf redis-$version.tar.gz
[root@ubuntu2404 src]#rm redis-$version.tar.gz
[root@ubuntu2404 src]#cd redis-$version
#无需再次连接github下载源码
[root@ubuntu2404 src]#cd redis-$version
[root@ubuntu2404 redis-8.0.2]#export BUILD_TLS=no
[root@ubuntu2404 redis-8.0.2]#export BUILD_WITH_MODULES=no
[root@ubuntu2404 redis-8.0.2]#export INSTALL_RUST_TOOLCHAIN=no
[root@ubuntu2404 redis-8.0.2]#export DISABLE_WERRORS=yes
#需要再次连接github下载源码,可能需要科学上网
[root@ubuntu2404 redis-8.0.2]#export BUILD_TLS=yes
[root@ubuntu2404 redis-8.0.2]#export BUILD_WITH_MODULES=yes
[root@ubuntu2404 redis-8.0.2]#export INSTALL_RUST_TOOLCHAIN=yes
[root@ubuntu2404 redis-8.0.2]#export DISABLE_WERRORS=yes
[root@ubuntu2404 redis-8.0.2]#make -j "$(nproc)" all
#验证
[root@ubuntu2404 redis-8.0.2]#./src/redis-server --version
[root@ubuntu2404 redis-8.0.2]#./src/redis-cli --version
#启动
[root@ubuntu2404 redis-8.0.2]#./src/redis-server redis-full.conf
#安装到默认路径
[root@ubuntu2404 redis-8.0.2]#make install
[root@ubuntu2404 redis-8.0.2]#ls /usr/local/bin
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
示例:CentOS系列编译安装redis
#安装依赖包
[root@centos8~]#yum -y install gcc make jemalloc-devel
#如果支持systemd需要安装下面包
[root@ubuntu2004 ~]#apt update && apt -y install make gcc libjemalloc-dev libsystemd-dev
[root@centos8 ~]#yum -y install gcc jemalloc-devel systemd-devel
[root@centos7 ~]#yum -y install gcc jemalloc-devel systemd-devel
#下载源码
[root@centos8 ~]#wget http://download.redis.io/releases/redis-6.2.4.tar.gz
[root@centos8 ~]#tar xvf redis-6.2.4.tar.gz
#编译安装
[root@centos8 ~]#cd redis-6.2.4/
#如果支持systemd,需要执行下面
[root@centos8 redis-6.2.4]#make -j 2 USE_SYSTEMD=yes PREFIX=/apps/redis/ install
#如果不支持systemd,执行下面
[root@centos8 redis-6.2.4]#make -j 2 PREFIX=/apps/redis install #指定redis安装目录
#配置环境变量
[root@centos8 ~]#echo 'PATH=/apps/redis/bin:$PATH' >> /etc/profile
[root@centos8 ~]#. /etc/profile
#准备相关目录和配置文件
[root@centos8 ~]#mkdir /apps/redis/{etc,log,data,run} #创建配置文件、日志、数据等目录
[root@centos8 redis-6.2.4]#cp redis.conf /apps/redis/etc/
# 前台启动
[root@centos8 ~]#redis-server /apps/redis/etc/redis.conf
消除启动时的四个Warning提示信息(可选)
前面直接启动Redis时有三个Waring信息,可以用下面方法消除告警,但非强制消除
1、Tcp backlog
WARNING: The TCP backlog setting of 511 cannot be enforced because
/proc/sys/net/core/somaxconn is set to the lower value of 128.
修改配置
# 注意:Ubuntu24.04和22.04默认值满足要求,不再有此告警
#半连接队列
[root@ubuntu2404 ~]#cat /proc/sys/net/ipv4/tcp_max_syn_backlog
128
[root@ubuntu2204 ~]#cat /proc/sys/net/ipv4/tcp_max_syn_backlog
128
#全连接队列默认值
[root@ubuntu2404 ~]#cat /proc/sys/net/core/somaxconn
4096
#修改配置
#vim /etc/sysctl.conf
net.core.somaxconn = 1024
#sysctl -p
2、 overcommit_memory
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.
内核参数说明:
内核参数overcommit_memory 实现内存分配策略,可选值有三个:0、1、2
0 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则内存申请失败,并把错误返回给应用进程
1 表示内核允许分配所有的物理内存,而不管当前的内存状态如何
2 表示内核允许分配超过所有物理内存和交换空间总和的内存
修改配置
#默认值为0
[root@ubuntu2404 ~]#sysctl vm.overcommit_memory
vm.overcommit_memory = 0
#修改
#vim /etc/sysctl.conf
vm.overcommit_memory = 1 #新版只允许1,不支持2
#sysctl -p
3、transparent hugepage
告警
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。
注意:Ubuntu24.04 .22.04 默认值满足要求,不再有此告警
修改配置
#ubuntu开机配置
[root@ubuntu2004 ~]#cat /etc/rc.local
#!/bin/bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@ubuntu2004 ~]#chmod +x /etc/rc.local
#CentOS开机配置
[root@centos8 ~]#echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
[root@centos8 ~]#chmod +x /etc/rc.d/rc.local
4、打开文件数的 Warning
[root@ubuntu2404 ~]#/apps/redis/bin/redis-server /apps/redis/etc/redis.conf
....
12169:M 31 Mar 2025 15:44:36.737 * Increased maximum number of open files to 10032 (it was originally set to 1024).
修改配置
[root@ubuntu2404 ~]#vim /etc/security/limits.conf
root soft nofile 20000
root hard nofile 20000
[root@ubuntu2404 ~]#reboot
三、容器运行
#指定连接密码
[root@ubuntu2204 ~]#docker run --name redis -p 6379:6379 -d redis:7.2.4 --requirepass 123456
#使用自定义的配置启动容器
[root@ubuntu2204 ~]#docker run -d -p 6379:6379 -v
/myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf
#实现Redis的持久化保存
[root@ubuntu2204 ~]#docker run --name redis -p 6379:6379 -d -v /data/redis:/data redis作者:于浩 创建时间:2023-05-06 15:21
最后编辑:于浩 更新时间:2025-12-12 19:35
最后编辑:于浩 更新时间:2025-12-12 19:35