在Redis服务器上犯了大错,尝试削减容量挑战

首先

我毕业后成为工程师已经过去了大约两年半。作为一名服务器工程师工作了一段时间,我想分享一下有关Redis的一些不太顺利和较为困难的经历。

失误

我造成了奴隶延迟
访问故障:(´◦_◦`):

好的。

redis-cli keys "*"

你做了什么

在生产环境的从服务器上,执行了keys命令。
keys命令用于获取已注册密钥的列表。
在运行生产服务期间执行此命令,由于密钥数量过多会导致延迟发生。

肯定那个时候是这么轻松心情地敲打的吧

    1. 我在查询中遇到一个问题,就是我想查看某个排行榜

 

    1. 但不确定排行榜是Redis的,也不知道键是什么

 

    1. 而且在开发服务器上键的名称有些不同,怎么办呢?

 

    如果是从服务器,使用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 [オプション] コピー元 コピー先

最后,我发现在本地观看是最方便的。(因为我能够确认所有内容)

广告
将在 10 秒后关闭
bannerAds