目前使用mongodb和redis结合。redis的key,使用mongodb自动生成的id,比如这个ObjectId("5942221b18506251977e0d97")一个是24字节。现在有些场景是必须两个id构成一个redis的key。加起来。两个就是48个字节。再加上一些命名空间。一个key就是55字节左右。比如list:5942221b18506251977e0d97:593ae709dd809044f7284459这么长,对性能影响多大?有没有必要优化?之所以使用两个key,是方便删除的问题。比如 一个文章分类删除了,我可以把所有分类下面的key都清除掉。比如DEL list:5942221b18506251977e0d97:*否则你不清除,这些key会一直遗留,占空间。或许我可以设置过期时间,让redis自己删除过期的key
2 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
性能上倒是没什么影响 但是会占用存储空间 如果说这个数据量很大 要存储上百万的key 光key就需要耗费很多内存,你可以设定规则 比如 key = md5(namespace+id1+id2) md5加密长度是定长32位 我目前在做点赞微服务就是这种方式 制定规则生成一个unionKey,将点赞总数缓存在redis中
狐的传说
TA贡献1804条经验 获得超3个赞
很长的key当然会改变redis构建的数据对象的底层实现方式,会影响redis查询数据的速度,另外很长的key导致的底层结构的改变也会使存储单元数据的空间变大的,如果存储的数据很多,消耗大量的内存,也是很不利的,应该考虑将子分类单独构建成一个数据对象,键可以设置成分类相关联的,这样删除一个分类的时候,顺便把对应子分类的名字也给删除了,有一本书是redis的设计与实现,可以看一下
- 2 回答
- 0 关注
- 1905 浏览
添加回答
举报
0/150
提交
取消