之前生产环境出现了一次 OOM command not allowed when used memory > ‘maxmemory’
,但是通过 Grafana 看了一下 Redis 的容量 没问题,而且一半都没用到,很奇怪,这个错误应该是内存用完了。
Redis 是用的 Cluster 模式,把每个节点看了一遍,结果有一个节点的内存满了,就是这个节点导致的错误。那么为什么就单单这个节 点满了,Redis 会根据不同的 key 把数据写到不同的节点,那么这种情况应该是一个 key 有非常大的数据。最后检查是一个 list 结构的数据,单个 key 写入了非常多的元素。
所以在使用 Redis 的集合类型时要注意写入的数据量,不然集群数量再多也没太大用。