在Redis服务器上犯了大错,尝试削减容量挑战
首先
我毕业后成为工程师已经过去了大约两年半。作为一名服务器工程师工作了一段时间,我想分享一下有关Redis的一些不太顺利和较为困难的经历。
失误
我造成了奴隶延迟
访问故障:(´◦_◦`):
好的。
redis-cli keys "*"
你做了什么
在生产环境的从服务器上,执行了keys命令。
keys命令用于获取已注册密钥的列表。
在运行生产服务期间执行此命令,由于密钥数量过多会导致延迟发生。
肯定那个时候是这么轻松心情地敲打的吧
-
- 我在查询中遇到一个问题,就是我想查看某个排行榜
-
- 但不确定排行榜是Redis的,也不知道键是什么
-
- 而且在开发服务器上键的名称有些不同,怎么办呢?
- 如果是从服务器,使用Keys命令打印出来会没问题吗?
是的,就是这种感觉。
不行。顺便提一下,我大概做了两次。真对不起。
你怎么了?
从那时起,我们对钥匙的调查就是这样进行的。
- 開発サーバーで似たキーを探す
redis-cli keys "*SeasonEvent*"
- 本番サーバー固有の文字列があれば、それを確認する
redis-cli scan 0
或者
redis-cli monitor
-
- こうすればkeysをたたかなくてもキーを特定できる!!
- あとは特定したキーでランキングの中身をみるだけ!
容量减少
发生的问题
Redis服务器的内存容量快满了。
你做了什么?
整理出不需要的键並刪除
建立了一個批次程序用於清除過期的資料
在程式中將TTL的有效時間設定為較短的時間
- 不要なキーとは?
过去排名事件的数据
临时排名数据
临时缓存数据
等等…
调查方法 chá fǎ)
我在显示器上确认一下。
redis-cli monitor
我试着扫描一下看看。
redis-cli scan 0
我們來確認一下TTL是否生效。
redis-cli ttl key名
最后,我们在维护期间将所有的密钥列表写入了文本文件中。
个人而言,我认为在写入后使用SCP命令将其下载至开发服务器或本地,不保留在服务器上是不错的选择。
總結
我认为,关于是否有多余的数据残留、如何减少或不留下这些数据,在开发时制作一个用于抵消的批处理程序,以防其在未来变得无用,如果能有这样的考虑,我想像我这样的新人或后辈就不会再为此而困扰了。
赠品
redis-cli keys "*" > /tmp/redisKeys.txt
scp [オプション] コピー元 コピー先
最后,我发现在本地观看是最方便的。(因为我能够确认所有内容)