背景
最近Redis服务器总是报警,这块对Redis中的数据做了一次治理,分享一下治理的思路。
思路
首先需要看一下Redis库的比较大的KV是啥,发现大部分都是缓存的JSON。如下面所示
{
"id": 1,
"name": "张三",
"age": 28,
"email": null,
"address": "北京市海淀区",
"phone": "13800138000",
"gender": "男",
"company": null,
"position": "字节高级Java工程师",
"position2": "字节高级Java工程师",
"position3": "字节高级Java工程师",
"hobbies": null
}
这里面发现了两个问题
- 有值是空的KV,即email和hobbies
针对null的值,这块可以可以把key也删掉,这块我试了fastjson 是去掉的,Jackson默认是不去掉的。 - value值相同的比较多
这块可以参考八股文中字符串常量池,理论上是可以对相同的字节高级Java工程师,存到一个地方,然后存一个下标,当然这块是序列化方式,可以使用Protobuf 等这种序列化工具去做,当然做序列化必然存在性能消耗,这块还是要注意一下。
总结
这种点要考虑到前面,否则后期去优化很难。
这浪费一点,那浪费一点,以后就是屎山了。