下载安装包
编译安装
yum install gcc
tar vxf redis-6.2.3.tar.gz
cd redis-6.2.3
make PREFIX=/usr/local/redis-6.2.3 install
cd /usr/local/
ln -s redis-6.2.3/ redis
useradd redis
su - redis
vi .bash_profile
--------------------------------------------
export PATH=$PATH:/usr/local/redis/bin
--------------------------------------------
创建配置文件
mkdir -p /usr/local/redis/config
# 顺便创建redis日志目录
mkdir -p /var/log/redis/
cp /{解压安装包路径}/redis.conf /usr/local/redis/config/
chown -R redis.redis /usr/local/redis
chown -R redis.redis /usr/local/redis-6.2.3/
chown -R redis.redis /var/log/redis
su - redis
cd /usr/local/redis/config
cp redis.conf redis6379.conf
修改配置文件
以下只列出需要修改的参数,默认参数不再列出
# include,可以包含其他的redis配置文件,在多实例环境下,可以将公共部分包含进来
# include /path/to/local.conf
# bind修改为如下,可以接受任何主机的连接,否则只能本地连接redis
bind * -::*
# protected-mode,默认为yes(即没有设置bind或者没有设置密码的情况下,不允许远程访问)
# 如果设置bind(比如上面)或者设置密码了,那么此配置就失效了
protected-mode yes
# port redis监听端口,在安全需要或者多实例时按需修改
port 6379
# 是否以守护进程运行,设置为yes,redis启动后会在后台运行,即使关掉ssh,redis也不会关闭
daemonize yes
# pidfile,一般不需要修改
pidfile /var/run/redis_6379.pid
# 日志的级别,生产环境notice即可
loglevel notice
# redis日志的位置
logfile “/var/log/redis/redis6379.log”
# save和redis的rdb持久化有关,如果不设置,默认是开启的,我们可以明确配置,也可以配置save ""来关闭持久化
# 如果在1小时内有1次或者5分钟内100次或者1分钟内10000次数据库修改,就执行持久化
save 3600 1
save 300 100
save 60 10000
# 如果rdb bgsave失败,redis是否停止接受写操作,设置为no,即不影响redis继续接受写操作
stop-writes-on-bgsave-error no
# rdb持久化的名称,不可以是路径
dbfilename dump6379.rdb
# rdb和aof持久化文件的位置
dir /redata/
# 设置数据库的密码
requirepass monkey
# 允许有多少个客户端连接
maxclients 1000
# 设置redis占用内存上限,单位byte
maxmemory 3221225472
# MAXMEMORY POLICY,到达内存上限后,redis采用的策略(如何释放内存,例如把最早的key清除等),默认是什么也不做,返回错误
# maxmemory-policy noeviction
# redis持久化aof,相比于rdb,消耗更少,丢失数据更少,但是持久化文件更大
appendonly yes
# aof文件的名称
appendfilename "appendonly6379.aof"
# 每秒将aof缓存区的内容刷新到硬盘中(always,只要有变动,就写入,极大影响redis性能。no,redis不管何时刷入,然系统来决定,性能计划和rdb相当,基本不影响。everysec,每秒刷入,性能和安全性的中和。
appendfsync everysec
# aof文件重写的触发条件,达到上次重写后aof文件的两倍或者
# 最少到达64MB时进行重写,防止在aof文件较小时,多次被第一个条件触发重写
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
优化
- 设置内核参数
vm.overcommit_memory
,默认是0,可能会导致bgsave失败
vi /etc/sysctl.conf
-------------------------
vm.overcommit_memory = 1
-------------------------
sysctl -p
- 关闭透明大页
vi /etc/rc.local
-----------------------
echo never > /sys/kernel/mm/transparent_hugepage/enabled
-----------------------
# 或者
vi /etc/default/grub
-------------------------------------
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"
--------------------------------------
grub2-mkconfig -o /boot/grub2/grub.cfg
# 验证
cat /sys/kernel/mm/transparent_hugepage/enabled
- 修改监听端口的队列长度,在负载较高的服务器需要适当增加
vi /etc/sysctl.conf
-------------------------
net.core.somaxconn = 2048
-------------------------
sysctl -p
- 修改redis用户打开文件数(和maxclients参数有关,maxclients越大,打开文件数需要越大)
vi /etc/security/limits.conf
------------------------------
redis soft nofile 635360
redis hard nofile 635360
------------------------------