一 redis批量删除
-h IP -a 密码 -p 端口 keys 删除条件
redis-cli -h 192.168.20.218 -p 6379 -a Jgw@31500 KEYS a* | xargs redis-cli -h 192.168.20.218 -p 6379 -a Jgw@31500 del
二 redis内存溢出 OOM command not allowed when used memory maxmemory_.jedisdataexception: memory > 'maxmemory'
出现maxmemory那么一定是 redis 的内存溢出,就是说存储的东西太多了,导致 redis 无法正常使用,解决方法
一 通过增大 redis 的内存来保证 redis 的可使用
- 获取 Redis 能使用的最大内存大小, 和服务器的内存有关
- 进入redis-cli以后使用config get maxmemory
- 设置 redis 的最大使用内存.config set maxmemory 2G
不过这种扩大了内存,下次可能还会内存满了,所以可以通过 redis 的缓存策略实现淘汰最近最少使用的数据来保证缓存的可用性,可以搜索一下设置缓存淘汰的内容,简单的有这个实现:修改redis.conf配置文件:增加这个maxmemory-policy allkeys-lru 或者链接上 redis,直接通过命令修改:config set maxmemory-policy allkeys-lru
- `noeviction`: 一旦内存满则返回异常错误, 读操作不影响
- `volitile-lru`:在设置了过期时间的 key 中找到最近最少使用的 key 进行淘汰
- `allkeys-lru`:在全部的 key 中淘汰最近最少使用的 key
- `allkeys-random`:在全部 key 中随机淘汰 key
- `volitile-random`:在设置了过期时间的 key 中随机淘汰
- `volitile-ttl`:根据 key 设置的过期时间,最早过期的淘汰
三重启/关闭redis
sudo service redis stop
sudo service redis start
sudo service redis restart
四 redis批量删除key
删除eyL开头的关键字,密码是password
redis-cli -h 192.168.20.218 -p 6379 -a password --scan --pattern 'eyL*' | xargs redis-cli -h 192.168.20.218 -p 6379 -a password del