机器名 | IP | 软件版本 | 硬件配置 |
redis4-srv | 10.80.1.13 | Redis 4.0.11 | 6核/16G/80G |
我们已经完成了redis的虚拟机的申请,并且安装完成了zabbix监控和ntp配置,为了更好的使用redis,我们对系统做一些优化。
Redis中不需要使用与数据集大小相同的空闲内存。但是Linux在默认情况下可能会检查是否有足够的空闲内存来复制父进程的所有内存页,可能导致Out of Memory而崩溃。所以要将overcommit设为1,表示当一个程序调用诸如malloc()等函数分配内存时,即使系统没有足够的内存空间函数也会执行成功。
swappiness参数值越大,内核进行内存交换越激进。
启用虚拟内存后,redis会尝试访问磁盘上的虚拟内存。会导致redis被磁盘I/O阻塞。redis我们要发挥他的高速处理能力,所以设置成swappiness=0禁用交换分区。
# sysctl -w vm.overcommit_memory=1
# sysctl -w vm.swappiness=0
# echo “vm.overcommit_memory=1” >> /etc/sysctl.conf
# echo “vm.swappiness=0” >> /etc/sysctl.conf
# sysctl vm.overcommit_memory vm.swappiness
使用透明大页功能会导致持久化的子进程创建缓慢,所以禁用。
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# cat >> /etc/rc.local << EOF
> echo never > /sys/kernel/mm/transparent_hugepage/enabled
> echo never > /sys/kernel/mm/transparent_hugepage/defrag
> EOF
# cat /sys/kernel/mm/transparent_hugepage/enabled
# cat /sys/kernel/mm/transparent_hugepage/defrag
默认的2个参数是128.设置大一点可以优化TCP连接。
# sysctl -w net.core.somaxconn=65535
# sysctl -w net.ipv4.tcp_max_syn_backlog=65535
# echo “net.core.somaxconn=65535” >> /etc/sysctl.conf
# echo “net.ipv4.tcp_max_syn_backlog=65535” >> /etc/sysctl.conf
# sysctl net.core.somaxconn net.ipv4.tcp_max_syn_backlog
# yum -y install gcc gcc-c++ libstdc++-devel zlib-devel
# cd /usr/local/
# wget wget http://download.redis.io/releases/redis-4.0.11.tar.gz
# tar -zxvf redis-4.0.11.tar.gz
# ls
改名下文件夹
# mv redis-4.0.11 redis
# rm redis-4.0.11.tar.gz
进入解压后的目录进行编译
# cd redis/
# make
# make install
redis默认是用6379端口的所以我们开下这个端口
# firewall-cmd –permanent –zone=public –add-port=6379/tcp
# firewall-cmd –reload
/etc/redis 存放Redis的配置文件
/var/redis/端口号 存放Redis的持久化文件
# cd /etc/
# mkdir redis
# mkdir /var/redis
# mkdir /var/redis/6379
将redis安装目录中的redis.conf复制到/etc/redis中,然后重命名成端口号.conf
# cd /usr/local/redis/
# cp redis.conf /etc/redis/
# cd /etc/redis/
# mv redis.conf 6379.conf
# cd /usr/local/redis/utils/
我们需要配置Redis的运行方式和持久化文件,日志文件存储位置
配置初始化脚本,将脚本复制到/etc/init.d目录,文件名redis_端口号,然后修改文件中的REDISPORT为你需要设置的端口号
# cp redis_init_script /etc/init.d
# cd /etc/init.d/
# mv redis_init_script redis_6379
我们修改下6379.conf
# cd /etc/redis/
# vim 6379.conf
bind 0.0.0.0 代表所有ip来访问
protected-mode 默认是yes改成no,这是3.2版本后新的特性,链接redis时只能通过本地localhost来链接,不能通过网络ip192.168..来链接,所以要改成no
redis端口号
redis默认不在后台运行,我们修改成yes变成守护进程后台运行
设置Redis的PID文件位置
设置持久化文件存放位置
开启AOF
编辑/etc/init.d/redis_6379文件,在#!/bin/bash 之后添加如下两行。
# vim /etc/init.d/redis_6379
# chkconfig: 2345 10 90
# description: redis_6379 service manage…
将redis_6379放入linux启动管理体系中
# chkconfig –add redis_6379
查看redis_6379服务在各运行级状态
# chkconfig –list redis_6379
现在可以使用/etc/init.d/redis_端口号 start来启动redis了
# /etc/init.d/redis_6379 start
# redis-cli SHUTDOWN