redis基本配置

在修改配置文件之前最好先备份原始的配置文件redis.conf

要不然就在启动的时候指定一个自己的配置文件

# 命令行运行
redis-server [配置文件路径]
  1. 开启其他ip访问的权限

将所有的bind信息全部屏蔽(注释掉)。这里的bind是指绑定本机ip,默认情况下redis是只允许本机访问的.如果不注释掉bind功能,redis就无法通过外网连接,只能在本机上运行

# bind 127.0.0.1
# bind 192.168.1.100 10.0.0.1
  1. 开启守护进程,让redis可以在后台运行
daemonize yes
  1. 根据情况开启/关闭redis保护模式

这里的保护模式是指是否允许其他ip的设备访问redis。如果开启的话,就是只允许本机进行访问了。

protected-mode no
  1. 设置redis数据库的密码

如果要开放外网访问redis,就必须给redis添加密码,否则在外网访问时会发生“服务器积极拒绝”的错误

requirepass 123456
  1. 导入其他配置文件
include /path/to/other.conf
  1. 进程管道id文件

当redis以守护进程方式运行时,(deamonize 设置为 yes)
redus会默认吧pid写入/var/run/redis.pid文件,
可以通过pidfile指定

deamonize yes

pidfile /var/run/redis.pid
# 我也不知道这是干嘛的,linux基础不扎实,暂时不管它
redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。但当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。
服务端开发的大部分应用都是采用后台运行的模式
  1. 配置端口
port 6379
  1. tcp-backlog
设置tcp的backlog
backlog其实是一个连接队列
backlog队列综合 = 未完成三次握手队列 + 已完成三次握手队列
在高并发环境下需要一个高backlog值来避免慢客户端连接问题
注意:linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值
所以需要确认增大somaxconn和tcp_max_syn_backlog两个值,哎达到想要的效果

学习阶段保持官方的出场设置就行
  1. timeout
timeout 0
# 代表连接空闲多少秒之后关闭连接
# 0代表不关闭,保持连接
  1. tcp-keepalive
tcp-keepalive 0
# 设置为0,则不会进行Keepalive检测
# 建议设置成60
  1. loglevel 日志级别
loglevel notice
# debug开发用大片日志
# verbose
# notice
# warning
  1. logfile 日志名字
logfile ""
logfile stdout
# 可以没名字
  1. 系统日志
syslog-enabled no #是否把日志输出到系统日志syslog中
syslog-ident redis #指定syslog里的日志标识
syslog-facility local0 #指定syslog设备,值可以使USER或local0---local7
  1. 设置redis的库有多少
databases 16

snap-shotting

LIMITS

  • 最大连接数
maxclients 10000
# 0表示不做限制
  • 最大内存

指定redis最大内存限制,redis在启动时会把数据加载到内存中,达到最大内存后,redis会先尝试清除已到期或即将到期的key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但可以读取. redis新的vm机制,会把key存放在内存,value会存放在swap区

maxmemory <bytes>
  • 数据过期策略
maxmemory-policy [policy]
# 一共有五种策略
1. volatile-lru :使用lru算法移除key,只对设置了过期时间的键
2. allkeys-lru :使用lru算法移除key
3. volatile-random :在过期集合中移除随机的key,只对设置了过期时间的键
4. allkeys-lru :在过期集合中移除随机的key
5. volatile-ttl :移除那些ttl值最小的key,即那些最近要过期的key

6. noeviction : 不进行移除. 写入的时候报错
Redis的LRU算法并非完整的实现。
这意味着Redis并没办法选择最佳候选来进行回收,也就是最久未被访问的键。
相反它会尝试运行一个近似LRU的算法,通过对少量keys进行取样,
然后回收其中一个最好的key(被访问时间较早的)。

☆☆☆☆☆☆Redis LRU有个很重要的点,
你通过调整每次回收时检查的采样数量,以实现调整算法的精度。
这个参数可以通过以下的配置指令调整:
maxmemory-samples 5

Redis为什么不使用真实的LRU实现是因为这需要太多的内存。
不过近似的LRU算法对于应用而言应该是等价的。

我理解的是推荐设置成5就够了,太高的采样率浪费cpu
    原文作者:吐痰高手
    原文地址: https://www.jianshu.com/p/62a83248bdd3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞