Redis的expires和timeout主要区别在于:
- 对象不同
expires设置key的过期时间。
timeout设置客户端连接的空闲时间。 - 使用命令不同
设置expires使用EXPIRE命令。
设置timeout使用CLIENT SETTIMEOUT命令。 - 作用范围不同
expires只影响对应key。
timeout影响所有从这个客户端进行的命令。 - 使用时间不同
expires生效时间从key创建或更新时间开始计时。
timeout生效时间从最后一次活动命令后开始计时。 - 目的不同
expires目的是为了回收key。
timeout目的是为了通知客户端不活跃。
总的来说,二者的主要区别包括:
- 对象:expires作用于key,timeout作用于客户端连接
- 命令: EXPIRE / CLIENT SETTIMEOUT
- 作用范围:expires一个key,timeout所有命令
- 时间:expires从key计时,timeout从最后命令计时
- 目的:expires回收key,timeout通知客户端不活跃
综上,二者的使用场景也完全不同:
- expires用于设置key的生存周期,回收无用的key
- timeout用于监控客户端连接的空闲时间,断开已断开的连接
二者配合使用可以达到管理资源和监控连接的目的。