1. 保证键值唯一的方法
a) 命名方法:应用名_类名_方法名_部分方法参数
b) 用一个专门的CacheKeyManager类管理键值
2. 数据同步的问题
“有则用之,无则缓存之,修改则清除之”
a) 获取数据时,从缓存中查找,没有就从数据库读取并加载至缓存中。
b) 更新数据库时,删除对应的缓存。
我等的就是dudu来回答啊,你终于出来了! 还有一个问题,我Memcached缓存一个数据库表中的数据,我是将所有数据作为一个集合缓存 还是每行数据都对应一个键值缓存好。
一直想这个问题,感觉这两种方式都有一定的弊端,感觉不是太灵活!非常的纠结
有则用之,无则缓存之,修改则清除之! 这是我一直用的方式,还有一种方式就是使用程序服务定期更新缓存,当然这种数据及时性要求不是很高。假如我对这种数据及时性高,使用这种方式及时出发缓存更新有没有好的办法,就是数据库更新缓存句更新这种
@贺臣: 缓存的不是数据库表中的数据,而是对象的状态。
@贺臣: 那就在添加数据时,提前添加到缓存中;修改数据时,更新对应的缓存。
@dudu: 谢谢
list.Add(entity1);
list.Add(entity2);
list.Add(entity3);
一种方式缓存的是list这个对象,对应只有一个键值
还有一种方式缓存
entity1
entity2
entity3
这里缓存这三个对象,对应三个键值。
我想问的是那种方式比较好一点
@贺臣: 第一种好一些,查找缓存是需要成本的,尽量减少查找次数
小弟同求
你的两种方案都是正确的,不过第一种要及时点但是开发成本要高点,第二种简单点,但是及时性就没那么好,而且数据库的压力也要增大点。
建议使用Redis,你在后面的问题能解决大部分。