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 许可协议。转载请注明来自 破站!