背景:用Redis存储k8s资源信息
原状:
k8s有很多种资源例如:namespace,deployment,statefulset,service,ingress,nod,pod....
redis存储service时:将service作为key,集群中所有service对象装进list作为value存储(其他资源对象也安装这种方式存储)
弊端:
拉取所有service时方便,但是要查找特定的service就要遍历整个list,查,改,删操作效率非常低
优化后:
存储方式以service_{namespace}作为key, 以命名空间为单位存储
优点:
1.对查找某个资源对象只需要知道对象的命名空间就能很快定位到所属key,大大缩小查找范围
2.查找某种资源对象所有数据时使用Redis hkeys相关命令找出所有相关值
总结:
redis使用尽量平铺数据(按规律组合key,增加key来减少key对应value的数据复杂度),减少对key取得的数据过多的处理