我公司里,大部分链表缓存策略是
1、直接分页查询数据库获取出主键ID
2、根据主键ID到缓存里for循环取数据
所有的数据都是点对点缓存
我理解不了,为什么链表数据,第一次先查库取主键ID集然后去遍历缓存-----假如缓存中这个数据过期或者被剔除了还得多查询10多次库;而不是直接就数据返回所有数据,或者对这个链表数据做短效缓存
但是公司这么实现,确实很稳定且缓存使用率降低,命中率也高,并发压力也没有
请大牛帮我解答下这个疑问,感激
------解决方案--------------------
虽然不太清楚你们的结构是什么. 如果数据库就寥寥几个字段, 都不大的话,用你的方法也不错.
但是后面如果是大量的文章 文字类型的话. 使用公司的方法.可能出于节省数据库机器的io.
数据库io(其实主要是硬盘拖慢了)在平时看不出来.但一旦达到瓶颈. 数据库会很慢. 而缓存可以很快的解决这些.他在内存中一次运算就能取到.他的瓶颈就是网卡速度.
缓存内容有个生命周期. 设置永久.就不会出现命中失败的情况