Redis安装和多实例
部署准备
- ubuntu22.04 或 CentOS 8
 
部署步骤
源安装
如需安装较新版本,可添加对应源文件
1  | yum install redis -y  | 
编译安装
红帽系编译工具和依赖
1  | yum install -y gcc make jemalloc-devel systemd-devel  | 
答辩系编译工具和依赖
1  | apt install -y gcc make libjemalloc-dev libsystemd-dev  | 
下载源码
1  | wget https://download.redis.io/releases/redis-7.0.11.tar.gz  | 
解压
1  | tar xf redis-7.0.11.tar.gz && cd redis-7.0.11  | 
编译
1  | make -j $(nproc -all) USE_SYSTEMD=yes PREFIX=/apps/redis install  | 
写变量
1  | echo 'PATH=/apps/redis/bin:$PATH' > /etc/profiled.d/redis.sh  | 
创建相关文件
1  | mkdir /apps/redis/{etc,log,run,data}  | 
复制配置文件
1  | cp redis.conf /apps/redis/etc/  | 
添加用户
1  | useradd -r -s /sbin/nologin redis  | 
授权
1  | chown -R redis.redis /apps/redis/  | 
写daemon文件
1  | cat <<EOF > /lib/systemd/system/redis.service  | 
大公告成
1  | systemctl daemon-reload  | 
常见报错解决
Tcp backlog报错
- echo 4096 > /proc/sys/net/core/somaxconn 全连接队列,需要511以上redis才不会报错
 - echo net.core.somaxconn = 4096 >> /etc/sysctl.conf
 
Memory overcommit
- echo 1 > /proc/sys/vm/overcommit_memory
 - echo vm.overcommit_memory = 1 >> /etc/sysctl.conf
 
- 0 表示有物理内存就分配,没有就返回错误
 - 1 表示分配所有内存,无论是否有内存
 - 2 表示分配超内存和交换空间总和的内存
 
transparent hugepage
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
 - 写入到开机执行脚本中,例如bashrc,profile
 
常见配置文件选项
sed -i ‘/^bind/s/.*/bind 0.0.0.0/‘ redis.conf替换本地监听
sed -i ‘s/#save 3600 1 300 100 60 10000/save 3600 1 300 100 60 10000/‘ redis.conf开启自动 bgsava
dir /app/redis/data数据文件存放位置
pidfile /apps/redis/run/redis_6379.pidpid 文件存放位置
dbfilename dump6379.rdp数据文件名
port 6379端口
protected-mode yes拒绝外部访问
requirepass “123456”授权密码
··········
多实例配置
配置文件多实例
1  | sed -i 's/6379/6380/g' /app/redis/etc/redis.conf > /app/redis/etc/redis6380.conf  | 
daemon文件多实例
1  | sed -i 's/redis.conf/redis6379.conf/' /lib/systemd/system.redis.service > /lib/systemd/system.redis6380.service  | 
启动
1  | systemctl daemon-reload && systemctl start redis*  | 
同理,只要端口,pid文件,配置文件,数据文件,service文件和日志文件名不一致,即可开启多实例
参考文献
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 破站!






