Redis管理

近期发生两次redis事故,一个是内存超过maxmemory了,一个是redis数据库被清空,需要加强对redis的管理,总结如下:

禁用某些命令,在配置文件中添加,需要重启生效,无法在线修改

rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""

设置密码

查看

127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""

设置

127.0.0.1:6379> CONFIG set requirepass "runoob"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "runoob"

客户端连接 redis 服务就需要密码验证

127.0.0.1:6379> AUTH password

理解内存淘汰机制

redis是一种存内存的缓存中间件,磁盘的作用仅仅是作为备份用。一般情况下我们需要设置最大内存防止redis数据量过大导致应用omm

查询

127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "0"

设置

127.0.0.1:6379> config set maxmemory xxx

查看淘汰策略

127.0.0.1:6379> config get maxmemory-policy
1) "maxmemory-policy"
2) "noeviction"

redis keyspace,为健空间,包括keys(主键空间中总key数量),expires(主键空间中有过期时间的key数量),avg_ttl(有过期时间key的平均过期时间,单位ms)
Redis提供了下面几种淘汰策略供用户选择,其中默认的策略为noeviction策略,当达到maxmemory后如果没有可删除的key,redis报omm错误。

noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错。
allkeys-lru:在主键空间中,优先移除最近未使用的key。
volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。
allkeys-random:在主键空间中,随机移除某个key。
volatile-random:在设置了过期时间的键空间中,随机移除某个key。
volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除。

几种策略的适用场景:

allkeys-lru:如果我们的应用对缓存的访问符合幂律分布(也就是存在相对热点数据),或者我们不太清楚我们应用的缓存访问分布状况,我们可以选择allkeys-lru策略。
allkeys-random:如果我们的应用对于缓存key的访问概率相等,则可以使用这个策略。
volatile-ttl:这种策略使得我们可以向Redis提示哪些key更适合被eviction。

127.0.0.1:6379> info Keyspace

Keyspace

db0:keys=86897,expires=28980,avg_ttl=245053660

posted on 2018-01-05 14:29 JeffSunpan27 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jeffsunpan27/p/8204319.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值