单机Redis安装部署

Redis软件包下载:

官网:https://redis.io/downloadnode

Redis软件包版本:

redis-4.0.14.tar.gzredis

Redis服务安装部署:

# tar zxf redis-4.0.14.tar.gz算法

# mkdir /usr/local/redis/etc -p数据库

# make PREFIX=/usr/local/redis install缓存

# cp -ap redis-4.0.14/redis.conf /usr/local/redis/etc/安全

设置环境变量:

# cat /etc/profile | grep redis服务器

export PATH=$PATH:/usr/local/redis/binapp

启动Redis服务:

# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf异步

因为redis参数没有调整,直接启动redis进程不会后台启动,须要作参数调整。socket

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

Redis参数详解:

#是否做为守护进程运行'yes'或者'no','yes'表示启动redis服务后台运行,反之。

daemonize yes

 

#监听IP,redis通常监听127.0.0.1 网段访问,集群模式须要指定IP地址。

bind 0.0.0.0    #监听全部的IP端口,不论本机有几块网卡。

bind 127.0.0.1  #只监听127.0.0.1本地端口。

#本机含有三块网卡,只监听192.xxx和10.xxx,若是第三块网卡IP是172.xxx,即便ping的通,也没法链接到redis。

bind 192.168.1.100 10.0.0.1

 

#会报错,redis服务没法启动。

bind #随便给个不存在的IP

 

#会报错,只能写具体存在的IP地址

bind 172.17.80.*  172.17.80.%

报错log以下:

10202:M 19 Jun 10:50:25.261 # Creating Server TCP listening socket 172.17.80.%:6379: Name or service not known

10276:C 19 Jun 10:51:08.707 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

10276:C 19 Jun 10:51:08.707 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=10276, just started

10276:C 19 Jun 10:51:08.707 # Configuration loaded

10277:M 19 Jun 10:51:08.794 # Creating Server TCP listening socket 172.17.80.*:6379: Name or service not known

 

#监听redis服务的端口

port 6379

 

#指定存储Redis进程号的文件路径。

pidfile /var/run/redis-6379.pid

 

#客户端和Redis服务端的链接超时时间,默认是0,表示永不超时。

timeout 0

 

#TCP链接保活策略,能够经过tcp-keepalive配置项来进行设置,单位为秒,假如设置为60秒,则server端会每60秒向链接空闲的客户端发起一次ACK请求,以检查客户端是否已经挂掉,对于无响应的客户端则会关闭其链接。因此关闭一个链接最长须要120秒的时间。若是设置为0,则不会进行保活检测。

tcp-keepalive 0

 

#redis支持经过loglevel配置项设置日志等级,共分四级,即debug、verbose、notice、warning。

loglevel notice

 

#redis也支持经过logfile配置项来设置日志文件的生成位置。若是设置为空字符串,则redis会将日志输出到标准输出。假如你在daemon状况下将日志设置为输出到标准输出,则日志会被写到/dev/null中。

logfile ""

 

若是但愿日志打印到syslog中,也很容易,经过syslog-enabled来控制。另外,syslog-ident还可让你指定syslog里的日志标志,好比:

syslog-ident redis

 

并且还支持指定syslog设备,值能够是USER或LOCAL0-LOCAL7。具体能够参考syslog服务自己的用法。

syslog-facility local0

 

对于redis来讲,能够设置其数据库的总数量,假如你但愿一个redis包含16个数据库,那么设置以下:

这16个数据库的编号将是0到15。默认的数据库是编号为0的数据库。用户可使用select <DBid>来选择相应的数据库。

databases 16

 

快照,redis的RDB持久化相关的配置:

save <seconds> <changes>

 

save 900 1 //表示每15分钟且至少有1个key改变,就触发一次持久化

save 300 10 //表示每5分钟且至少有10个key改变,就触发一次持久化

save 60 10000 //表示每60秒至少有10000个key改变,就触发一次持久化

 

禁用RDB持久化的策略,只要不设置任何save指令就能够,或者给save传入一个空字符串参数也能够达到相同效果:

save ""

当Redis数据持久化时,内存和RDB数据不一致时,redis中止对外提供服务,若是数据不一致时,继续使redis提供服务,配置以下参数:

stop-writes-on-bgsave-error yes

 

对于存储到磁盘中的快照,能够设置是否进行压缩存储。若是是的话,redis会采用LZF算法进行压缩。若是你不想消耗CPU来进行压缩的话,能够设置为关闭此功能,可是存储在磁盘上的快照会比较大。

rdbcompression yes

 

在存储快照后,还可让redis使用CRC64算法来进行数据校验,可是这样作会增长大约10%的性能消耗,若是你但愿获取到最大的性能提高,能够关闭此功能。

rdbchecksum yes

 

设置快照文件的名称,默认配置:

dbfilename dump.rdb

 

设置这个快照文件存放的路径。好比默认设置就是当前文件夹:

dir ./

 

redis主从同步功能:

经过slaveof配置项能够控制某一个redis做为另外一个redis的从服务器,经过指定IP和端口来定位到主redis的位置。通常状况下,咱们会建议用户为从redis设置一个不一样频率的快照持久化的周期,或者为从redis配置一个不一样的服务端口等等。

slaveof <masterip> <masterport>

 

从redis为只读:

slave-read-only yes

 

从redis会周期性的向主redis发出PING包,经过repl_ping_slave_period指令来控制其周期,默认是10秒。

repl-ping-slave-period 10

 

用户能够设置上述超时的时限,不过要确保这个时限比repl-ping-slave-period的值要大,不然每次主redis都会认为从redis超时。

repl-timeout 60

 

在主从同步时,可能在这些状况下会有超时发生:

以从redis的角度来看,当有大规模IO传输时。

以从redis的角度来看,当数据传输或PING时,主redis超时

以主redis的角度来看,在回复从redis的PING时,从redis超时

 

控制在主从同步时是否禁用TCP_NODELAY。若是开启TCP_NODELAY,那么主redis会使用更少的TCP包和更少的带宽来向从redis传输数据。可是这可能会增长一些同步的延迟,大概会达到40毫秒左右。若是你关闭了TCP_NODELAY,那么数据同步的延迟时间会下降,可是会消耗更多的带宽。

repl-disable-tcp-nodelay no

 

设置同步队列长度。队列长度(backlog)是主redis中的一个缓冲区,在与从redis断开链接期间,主redis会用这个缓冲区来缓存应该发给从redis的数据。这样的话,当从redis从新链接上以后,就没必要从新全量同步数据,只须要同步这部分增量数据便可。

repl-backlog-size 1mb

 

若是主redis等了一段时间以后,仍是没法链接到从redis,那么缓冲队列中的数据将被清理掉。咱们能够设置主redis要等待的时间长度。若是设置为0,则表示永远不清理。默认是1个小时。

repl-backlog-ttl 3600

 

# 设置slave优先级,默认为100

# 当主服务器不能正确工做的时候,数字低的首先被提高为主服务器,可是0是禁用选择

slave-priority 100

 

# 若是少于 N 个 slave 链接,且延迟时间 <=M 秒,则 master 可配置中止接受写操做。

# 例如须要至少 3 个 slave 链接,且延迟 <=10 秒的配置:

# min-slaves-to-write 3

# min-slaves-max-lag 10

# 设置 0 为禁用

# 默认 min-slaves-to-write 为 0 (禁用), min-slaves-max-lag 为 10

 

#设置Redis链接密码,若是配置了链接密码,客户端在链接Redis时须要经过AUTH <password>命令提供密码,默认关闭

requirepass foobared

 

设置同一时间最大客户端链接数,默认无限制,Redis能够同时打开的客户端链接数为Redis进程能够打开的最大文件描述符数,若是设置 maxclients 0,表示不做限制。当客户端链接数到达限制时,Redis会关闭新的链接并向客户端返回max number of clients reached错误信息

maxclients 128

 

指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将没法再进行写入操做,但仍然能够进行读取操做。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

maxmemory <bytes>

 

指定是否在每次更新操做后进行日志记录,Redis在默认状况下是异步的把数据写入磁盘,若是不开启,可能会在断电时致使一段时间内的数据丢失。由于 redis自己同步数据文件是按上面save条件来同步的,因此有的数据会在一段时间内只存在于内存中。默认为no

appendonly no

 

指定更新日志文件名,默认为appendonly.aof

appendfilename appendonly.aof

 

指定更新日志条件,共有3个可选值:

no:表示等操做系统进行数据缓存同步到磁盘(快)

always:表示每次更新操做后手动调用fsync()将数据写到磁盘(慢,安全)

everysec:表示每秒同步一次(折衷,默认值)

appendfsync everysec

 

指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中

vm-enabled no

 

虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享

vm-swap-file /tmp/redis.swap

相关文章
相关标签/搜索