在修改配置文件之前最好先备份原始的配置文件redis.conf
要不然就在启动的时候指定一个自己的配置文件
# 命令行运行
redis-server [配置文件路径]
- 开启其他ip访问的权限
将所有的bind信息全部屏蔽(注释掉)。这里的bind是指绑定本机ip,默认情况下redis是只允许本机访问的.如果不注释掉bind功能,redis就无法通过外网连接,只能在本机上运行
# bind 127.0.0.1
# bind 192.168.1.100 10.0.0.1
- 开启守护进程,让redis可以在后台运行
daemonize yes
- 根据情况开启/关闭redis保护模式
这里的保护模式是指是否允许其他ip的设备访问redis。如果开启的话,就是只允许本机进行访问了。
protected-mode no
- 设置redis数据库的密码
如果要开放外网访问redis,就必须给redis添加密码,否则在外网访问时会发生“服务器积极拒绝”的错误
requirepass 123456
- 导入其他配置文件
include /path/to/other.conf
- 进程管道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进程退出。
服务端开发的大部分应用都是采用后台运行的模式
- 配置端口
port 6379
- tcp-backlog
设置tcp的backlog
backlog其实是一个连接队列
backlog队列综合 = 未完成三次握手队列 + 已完成三次握手队列
在高并发环境下需要一个高backlog值来避免慢客户端连接问题
注意:linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值
所以需要确认增大somaxconn和tcp_max_syn_backlog两个值,哎达到想要的效果
学习阶段保持官方的出场设置就行
- timeout
timeout 0
# 代表连接空闲多少秒之后关闭连接
# 0代表不关闭,保持连接
- tcp-keepalive
tcp-keepalive 0
# 设置为0,则不会进行Keepalive检测
# 建议设置成60
- loglevel 日志级别
loglevel notice
# debug开发用大片日志
# verbose
# notice
# warning
- logfile 日志名字
logfile ""
logfile stdout
# 可以没名字
- 系统日志
syslog-enabled no #是否把日志输出到系统日志syslog中
syslog-ident redis #指定syslog里的日志标识
syslog-facility local0 #指定syslog设备,值可以使USER或local0---local7
- 设置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 : 不进行移除. 写入的时候报错
- 回收算法采样值
maxmemory-samples
参考网页
Redis的LRU算法并非完整的实现。
这意味着Redis并没办法选择最佳候选来进行回收,也就是最久未被访问的键。
相反它会尝试运行一个近似LRU的算法,通过对少量keys进行取样,
然后回收其中一个最好的key(被访问时间较早的)。
☆☆☆☆☆☆Redis LRU有个很重要的点,
你通过调整每次回收时检查的采样数量,以实现调整算法的精度。
这个参数可以通过以下的配置指令调整:
maxmemory-samples 5
Redis为什么不使用真实的LRU实现是因为这需要太多的内存。
不过近似的LRU算法对于应用而言应该是等价的。
我理解的是推荐设置成5就够了,太高的采样率浪费cpu