启动redis的时候指定配置⽂件路径:node
./redis-server /path/to/redis.conf
不指定配置⽂件的时候使⽤内置配置⽂件启动,此⽅法仅适⽤于开发和测试。redis
⽤于引⼊其余配置⽂件,配置集群的时候⽤于引⼊公共配置⽤法以下:算法
include /path/to/other.conf
此配置⽤于绑定服务器⽹络接⼝,默认状况下绑定全部可⽤的⽹络端⼝。 能够通
过: bind ip1 ip2... 绑定多个端⼝。 ⽐如服务器局域⽹ip地址为:192.168.20.127。
如下配置能够实现局域⽹和本地访问:数据库
bind 192.168.20.127 127.0.0.1
注:安全
bind 192.168.1.100 10.0.0.1 bind 127.0.0.1
上⾯配置只绑定了127.0.0.1这个ip。服务器
bind 0.0.0.0
为绑定全部可⽤⽹络端⼝。网络
保护模式配置:less
protectedmode yes
当保护模式开启的时候,且没有配置bind和密码,只有ipv4和ipv6的回路ip127.0.0.1
and ::1能够访问dom
redis监听的端⼝配置:异步
port 6379 port 0 不监听端⼝
设置客户端链接超时时间,0的时候为关闭此功能。当客户端在此时间段内没有发送
指令,关闭链接。
timeout 0
daemonize yes
设置redis后台运⾏当后台运⾏的时候会⽣成⼀个进程⽂件:
/var/run/redispid
配置后台运⾏时⽣成的pid⽂件路径:
pidfile /var/run/redis6379.pid
指定⽇志打印等级:
debug(开发测试)、verbose、notice(线上)、warning
loglevel notice
指定⽇志⽂件路径和名称如:
logfile "/Users/yuanweipeng/Desktop/redislog"
设置系统⽇志:
syslog-enabled no syslog-ident redis syslog-facility local0 设置系统⽇志设备名称
设置数据库个数:
databases 16
默认的数据库是db0,能够经过能够经过select dbid为每个链接选择不一样的数据库。数据库的取值应该在0-(db-1)
将内存数据库的内容写到文件中。格式为:
save <seconds> <changes>
好比:
save 900 1 900秒内有一次key修改 save 300 10 300秒内有10次修改 save 60 10000
当redis写入到文件操做失败后,redis将不会接受内存写操做。用来提醒用户数据持久化失败。
stop-writes-on-bgsave-error yes
若是对redis进行了持久化监控,能够将此项配置成no,实现即便出现持久化问题,redis依然能够接受内存写操做。
配置redis转存文件的地址
dbfilename dump.rdb
配置数据库文件位置:
dir ./
1.redis的主从复制是异步的,能够配置当某几个slave数据库连不上的时候,中止接收内存写操做。
2.主从数据同步是自动完成的,当主从网络短线从新链接的时候,从库会自动重新数据同步。
slaveof <masterip> <masterport>
用于配置主库ip地址和端口。
masterauth <master-password>
配置主库的数据库密码。
slave-serve-stale-data yes
次配置用于设置当slave和master失去链接的时候是否继续接受客户端链接。当此项目设置为yes的时候会返回过时的数据或者null,当设置为no的时候会返回error:
SYNC with master in progress
设置slave是否接受写操做:
slave-read-only yes
slave可用于保存短暂的数据,当从库和主库同步数据的时候,会将写入到slave的数据删除。
复制同步策略配置:disk or socket.
当增长新的slave数据库或者断开后从新链接的时候,会发生全量同步,这时候是将redis的db文件直接从主库传输到从库。文件传输有两种方式:
第一种:先将内存数据写入磁盘,而后再将生成的文件传输到slave。 第二种:直接新起一个进程,将数据经过socket传输到slave
根据网络速度和磁盘速度选择不一样的复制方式。
slave向master发送ping请求的时间间隔。
超时时间,应该小于repl-ping-slave-period
设置是否会有延迟时间。设置为no的时候主库和从库数据传输的延迟时间较短。可是消耗带宽比较大。
设置slave断开链接的时候数据的缓冲区,在缓冲区没有用完以前,从库回复连接只须要从缓冲区同步数据,不须要全量同步。只有当有从库的时候才会设置此项。
设置当master没有slave链接的时候,多久释放缓冲区。设置为0的时候表示不释放缓冲区。
设置slave的优先级,当master宕机的时候会选出一个优先级最低的slave提高为主库。0表示不能看成master
当slave少于3个连接的时候,master中止接受写入。判断失联时间为:10s内slave没有从master复制数据,则表示失联。
min-slaves-to-write 3 默认设置为0,关闭此功能 min-slaves-max-lag 10
requirepass 123456
用于设置客户端链接密码。
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
命令重命名。
maxclients 10000
设置最大客户端链接数量。
maxmemory <bytes>
设置最大内存。
当redis内存达到上限的时候,会根据配置的垃圾回收策略删除key。当没有设置垃圾回收策略的时候,redis会对写操做报异常,都操做仍然正常返回数据。
当没有设置此配置项的时候,只有当系统内存达到上限的时候会抛出out-of-memory exception异常。
maxmemory-policy noeviction 默认配置 volatile-lru -> 使用最近最少使用算法删除过时的key allkeys-lru -> 根据最近最少使用算法删除key volatile-random -> 从过时的key中随机删除 allkeys-random -> 随机删除key volatile-ttl -> 删除最近过时的key noeviction -> 直接在写操做的时候返回error
LRU算法中的样本数,好比redis会检查5个key中的lru
maxmemory-samples 5
须要开启集群配置的才能看成Redis集群的一个节点:
cluster-enabled <yes/no>:
该项若是设置成yes,该实例支持redis集群。不然该实例会像往常同样以独立模式启动。
集群的每个节点都须要有一个配置文件,这个文件由redis生成和更新的。
cluster-config-file nodes-6379.conf
必须注意到尽管该项是可选的,这并非一个用户能够编辑的配置文件,这是redis集群节点自动生成的配置文件,每次一旦配置有修改它都经过该配置文件来持久化配置(基本上都是状态),这样在下次启动的时候能够从新读取这些配置。该文件中列出了该集群中的其余节点的状态,持久化变量等信息。 当节点收到一些信息的时候该文件就会被冲重写
节点过时时间配置,当超过此时间则认为此节点为失败状态。
cluster-node-timeout 15000
redis集群节点的最大超时时间。响应超过这个时间的话该节点会被认为是挂掉了。若是一个master节点超过必定的时候没法访问,它会被它的slave取代。 该参数在redis集群配置中很重要。很明显,当节点没法访问大部分master节点超过必定时间后,它会中止接受查询请求。
cluster-slave-validity-factor <factor>
:若是将该项设置为0,无论slave节点和master节点间失联多久都会一直尝试failover(设为正数,失联大于必定时间(factor*节点TimeOut),再也不进行FailOver)。好比,若是节点的timeout设置为5秒,该项设置为10,若是master跟slave之间失联超过50秒,slave不会去failover它的master(意思是不会去把master设置为挂起状态,并取代它)。注意:任意非0数值都有可能致使当master挂掉又没有slave去failover它,这样redis集群不可用。在这种状况下只有原来那个master从新回到集群中才能让集群恢复工做。
cluster-migration-barrier <count>:
一个master能够拥有的最小slave数量。该项的做用是,当一个master没有任何slave的时候,某些有富余slave的master节点,能够自动的分一个slave给它。具体参见手册中的replica migration章节
cluster-require-full-coverage <yes/no>:
若是该项设置为yes(默认就是yes) 当必定比例的键空间没有被覆盖到(就是某一部分的哈希槽没了,有多是暂时挂了)集群就中止处理任何查询操做。若是该项设置为no,那么就算请求中只有一部分的键能够被查到,同样能够查询(可是有可能会查不全)
slowlog-log-slower-than 1000000
此配置项指定查询时间超过多少的操做,打印日志。1000000=1s。当此配置为0的时候记录每次查询操做。为负数的时候关闭此功能。
slowlog-max-len 128
它决定 slow log 最多能保存多少条日志, slow log 自己是一个 FIFO 队列,当队列大小超过 slowlog-max-len 时,最旧的一条日志将被删除,而最新的一条日志加入到 slow log ,以此类推。
notify-keyspace-events ""
空的时候关闭此功能,选项值为非空字符串时,启用该功能,非空字符串由特定的多个字符组成,每一个字符表示不一样的意义:
K:keyspace事件,事件以__keyspace@<db>__为前缀进行发布; E:keyevent事件,事件以__keyevent@<db>__为前缀进行发布; g:通常性的,非特定类型的命令,好比del,expire,rename等; $:字符串特定命令; l:列表特定命令; s:集合特定命令; h:哈希特定命令; z:有序集合特定命令; x:过时事件,当某个键过时并删除时会产生该事件; e:驱逐事件,当某个键因maxmemore策略而被删除时,产生该事件; A:g$lshzxe的别名,所以”AKE”意味着全部事件。
注意,该选项的值中至少须要包含K或者E,不然不会发布任何事件。好比,若是须要开启针对列表的keyspace事件通知,则该选项须要配置为“Kl”;