Redis是一个开源的高性能键值对数据库。使用ANSI C语言编写,并提供多种语言的API。它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。
默认端口:6379
一、安装配置过程
1、官网下载(当前最新版本redis-4.0.7.tar.gz)
2、解压后进入目录
tar -zxvf redis-4.0.7.tar.gz
cd redis-4.0.7
3、编译安装
make
cd src
make install PREFIX=/usr/local/redis
4、我将配置文件也放过去了
cp /root/redis-4.0.7/redis.conf /usr/local/redis/bin
5、启动服务
此处启动出现了两个警告信息:
①、WARNING: The TCP backlog setting
由于/proc/sys/net/core/somaxconn设置了一个较低的值128,无法执行TCP backlog设置511
echo 511 > /proc/sys/net/core/somaxconn (重启后失效,可以将其写入/etc/rc.loacl)
backlog实际控制的是已经3次握手成功,还在accept queue里的大小 【backlog参考文章】
在Linux内核协议栈为一个TCP连接管理使用两个队列,一个是半连接队列(在握手过程中的对列,用来保存SYN_SENT和SYNRECV状态的请求),一个是Acceptd队列(握手成功的队列,用来保存处于ESTABLISHED状态,但是应用层没有调用accept取走的请求)。
第一个队列的长度是/proc/sys/net/ipv4/tcp_max_syn_backlog,默认是1024。如果开启了syncookies,那么基本上没有限制。
第二个队列的长度是/proc/sys/net/core/somaxconn,默认是128,表示最多有129个established链接等待accept。
backlog影响的是握手成功的队列,并不是按照调用listen()设置的大小,而是backlog和somaxconn的最小值。
②、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.
意思是overcommit_memory参数为0,在内存不足的情况下,后台程序可能save失败。建议在/etc/sysctl.conf文件中将overcommit_memory设为1.
overcommit_memory参数,内存分配策略,可选参数:0,1,2
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
什么是Overcommit和OOM
Linux对大部分申请内存的请求都回复"yes",以便能跑更多更大的程序。因为申请内存后,并不会马上使用内存。这种技术叫做Overcommit。当linux发现内存不足时,会发生OOM killer(OOM=out-of-memory)。它会选择杀死一些进程(用户态进程,不是内核线程),以便释放内存。
当oom-killer发生时,linux会选择杀死哪些进程?选择进程的函数是oom_badness函数(在mm/oom_kill.c中),该函数会计算每个进程的点数(0~1000)。点数越高,这个进程越有可能被杀死。每个进程的点数跟oom_score_adj有关,而且oom_score_adj可以被设置(-1000最低,1000最高)。
解决方法:
很简单,按提示的操作(将vm.overcommit_memory 设为1)即可:
有三种方式修改内核参数,但要有root权限:
(1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
(2)sysctl vm.overcommit_memory=1
(3)echo 1 > /proc/sys/vm/overcommit_memory
6、默认启动后,不是在后台运行的。修改成后台运行的
vim /usr/local/redis/bin/redis.conf
将daemonize的值改为yes
7、客户端连接
/usr/local/redis/bin/redis-cli
8、关闭redis服务
/usr/local/redis/bin/redis-cli shutdown或pkill redis-server
9、随机启动设置
vim /etc/rc.local 加入
/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
10、相关说明
redis-benchmark:redis性能测试工具
redis-check-aof:检查aof日志的工具
redis-check-dump:检查rdb日志的工具
redis-cli:连接用的客户端
redis-server:redis服务进程
参数说明:
daemonize:如需要在后台运行,把该项的值改为yes
pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
port:监听端口,默认为6379
timeout:设置客户端连接时的超时时间,单位为秒
loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
database:设置数据库的个数,默认使用的数据库是0
save:设置redis进行数据库镜像的频率
rdbcompression:在进行镜像备份时,是否进行压缩
dbfilename:镜像备份文件的文件名
dir:数据库镜像备份的文件放置的路径
slaveof:设置该数据库为其他数据库的从数据库
masterauth:当主数据库连接需要密码验证时,在这里设定
requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
maxclients:限制同时连接的客户端数量
maxmemory:设置redis能够使用的最大内存
appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
appendfsync:设置appendonly.aof文件进行同步的频率
vm_enabled:是否开启虚拟内存支持
vm_swap_file:设置虚拟内存的交换文件的路径
vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
vm_page_size:设置虚拟内存页的大小
vm_pages:设置交换文件的总的page数量
vm_max_thrrads:设置vm IO同时使用的线程数量
到目前为止Redis支持的键值数据类型如下:
●字符串类型
●散列类型
●列表类型
●集合类型
●有序集合类型
Copyright © 2015 - 2016 DISPACE.NET | 使用帮助 | 关于我们 | 投诉建议