1 简介
1.1 环境简介
系统版本:centos7
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
Redis版本:redis-3.2.0
1.2 Redis简介
2 安装redis
1、下载安装包
下载地址:http://download.redis.io/releases/
2、上传解压
# cd /data/
# tar -zxvf redis-3.2.0.tar.gz
3、编译
#cd redis-3.2.0/
# make
4、报错解决
①报错内容
# make
cd src && make all
make[1]: Entering directory `/data/redis-3.2.0/src'
CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/data/redis-3.2.0/src'
make: *** [all] Error 2
②报错原因
由于没有安装gcc编译工具
③解决方法
# yum -y install gcc*
5、报错解决
①报错内容
# make
cd src && make all
make[1]: Entering directory `/data/redis-3.2.0/src'
CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
#include <jemalloc/jemalloc.h>
^
compilation terminated.
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data/redis-3.2.0/src'
make: *** [all] Error 2
②报错原因
由于因为上次编译失败,有残留的文件
③解决方法
# make distclean
6、编译安装
# make && make install
7、创建相关文件
# mkdir -p /data/redis/6379/{logs,var} && mkdir -p /data/redis/bin
8、复制相关文件到/data/redis/bin下
# cd /data/redis-3.2.0/src/
# cp redis-server redis-cli redis-check-aof redis-benchmark redis-sentinel redis-server /data/redis/bin
9、复制配置文件到/data/redis/6379下
# cp /data/redis-3.2.0/redis.conf /data/redis/6379/
10、修改配置文件
安装自己的需求修改配置文件,之后会具体介绍配置文件参数。
3 系统设置
3.1 内核参数overcommit_memory
1、简介
①它是 内存分配策略
②可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
2、设置
①临时设置:
# sysctl vm.overcommit_memory=1
# echo 1 > /proc/sys/vm/overcommit_memory
②永久设置
# echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
# sysctl –p #生效
3.2 内核参数somaxconn
1、 简介:
该内核参数默认值一般是128(定义了系统中每一个端口最大的监听队列的长度),对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大(官方建议511)。
2、 设置
① 临时设置
# echo 2048 > /proc/sys/net/core/somaxconn
② 永久设置
# echo "net.core.somaxconn = 2048" >> /etc/sysctl.conf
# sysctl –p
3.3 系统最大连接数
1、简介
Linux系统默认的最大连接数为1024,redis建议最小10032.
2、设置
①临时设置
# ulimit -n 65535
③ 永久设置
注意:需要重启shell生效
# vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
4 启动redis
4.1 手动启动并添加开机自启
1、启动命令
# /data/redis/bin/redis-server /data/redis/6379/redis.conf &
2、开机自启
# echo "/data/redis/bin/redis-server /data/redis/6379/redis.conf &" >> /etc/rc.local
4.2 编写systemctl文件
1、写redis.service文件。路径在/usr/lib/systemd/system目录下
# vi /usr/lib/systemd/system/redis.service
[Unit]
#基础信息
Description=Redis
#描述
After=syslog.target network.target remote-fs.target nss-lookup.target
#之后启动的程序
[Service]
#服务信息(重要)
Type=forking
#表示 ExecStart= 所设定的进程将会在启动过程中使用 fork() 系统调用
PIDFile=/data/redis/6379/redis.pid
#pid文件按照自己的路径填写
ExecStart=/data/redis/bin/redis-server /data/redis/6379/redis.conf
#启动的命令
ExecReload=/bin/kill -s HUP $MAINPID
#重新加载
ExecStop=/bin/kill -s QUIT $MAINPID
#停止服务
PrivateTmp=true
[Install]
#安装相关
WantedBy=multi-user.target
# multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
2、 使配置生效
# systemctl daemon-reload
3、 开启自启
# systemctl enable redis
5 报错解决
5.1 最大连接数报错
1、 报错内容
Increased maximum number of open files to 10032 (it was originally set to 1024).
2、 解决方案
①临时设置:
# sysctl vm.overcommit_memory=1
# echo 1 > /proc/sys/vm/overcommit_memory
②永久设置
# echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
# sysctl –p #生效
5.2 监听队列长度
1、 报错内容
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2、 解决方案
①临时设置
# echo 2048 > /proc/sys/net/core/somaxconn
②永久设置
# echo "net.core.somaxconn = 2048" >> /etc/sysctl.conf
# sysctl –p
5.3 内存控制
1、报错内容
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.
2、解决方案
①临时设置:
# sysctl vm.overcommit_memory=1
# echo 1 > /proc/sys/vm/overcommit_memory
②永久设置
# echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
# sysctl –p #生效
6 常用命令
Redis支持tab,如果不是你想要的结果可以再tab一下。
1、 连接redis
# /data/redis/bin/redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>
2、写入值
redis> set foo bar
OK
3、查询值
redis> get foo
"bar"
3、 重命名
redis>RENAME key newkey
4、 删除
redis>DEL key
5、 集群状态查看
redis>info replication
网友评论