redis.conf
INCLUDES
1.include :类似于spring中的配置文件,主配置文件可以加载其他配置文件
include /path/to/local.conf
NETWORK
- bind 127.0.0.1 绑定ip地址(能够访问服务端的地址)当前的redis服务只能被本机访问
- protect-mode yes 开启保护模式
当bind没哟配置且登录不需要密码时,启动保护模式(只能被本地访问) - port 6379 端口号
- timeout 0 客户端超时时间,0代表一直保持
- tcp-keepalive 300s 每300检查客户端的健康情况,避免服务端阻塞
- tcp-backlog 队列数量(未完成握手和已完成握手)
GENERAL
- daemonize no 后台运行开关
改为yes可后端运行 - pidfile /var/run/redis_6379.pid 当守护进程开启时,写入进程id的文件路径
- loglevel notice 四种级别,notice对应生产环境
- logfile "" 日志存储的位置
- databases 16 初始化数据库有16个 下标0~15
config命令
安全和限制
- 是可以从客户端查看配置项信息的方式,使用config get
安全校验配置 requirepass 代表是否设置密码
设置密码:config set requirepass password
获取密码:config get requirepass
设置密码后登录需要校验 auth password
恢复初始状态 config set requirepass ""
危险命令
config/flushdb/flushall/keys
raname-command 命令 "" 将命令设置为不可用
raname-command config "zhangfei" 将config命令替换为zhangfei,这样查看密码不用config get requirepass 而是zhangfei get requirepass
其他限制
maxclients 10000 客户端并发数据的限制
maxmemory 最大内存
淘汰策略
maxmemory-policy 缓存淘汰策略
默认值noeviction (不删除只报错)
其他策略主要分为2种情况
allkeys 所有的键值都可能删除
volatile 只删除设置了过期时间的键值
- noeviction :不删除策略,达到最大内存限制时,如果需要更多内存,直接返回错误信息。大多数命令都会导致占用更多的内存
2.allkeys-lru:所有key通用;优先删除最近最少使用(less recently used,LRU)的key
3.volatile-lru:优先删除最近最少使用(less recently used,LRU)的key(限于会过期的key)
4.allkeys-random:所有key通用;随机删除一部分key
5.volatile-random:随机删除一部分key(限于会过期的key)
6.volatile-ttl:优先删除剩余时间(time to live,TTL)短的key(限于会过期的key)
近似LRU算法
因为LRU算法需要消耗大量内存,所采用近似LRU算法,并且是懒处理。
算法原理:随机采样淘汰元素
首先给每个key增加一个额外24bit的字段,记录最后被访问的时间戳
然后当内存超出maxmemory时,随机采样出5个key(通过maxmemory_samples设置),采样管范围取决于是allkeys还是volitile,淘汰掉旧的key,如果仍然超出,继续采样淘汰。
算法分析
采样范围越大,越接近严格LRU,Redis3.0中增加了淘汰池,进一步提升了效果。
淘汰池是一个大小为maxmemory_samples的数组,每一次淘汰循环中,新随机出的key会和淘汰池中的key列表融合,淘汰掉最旧的key,剩余较旧的key列表放在淘汰池中等待下一次循环
网友评论