精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-05-21
cowboy_bebop 写道
如果有个list(9,8,7,6,5) 当我新添加一条记录10, 这个时候如果同样的查询条件查出的应该是list(10,9,8,7,6)[类似于分页倒序记录的添加] 而此时RelationShop缓存中还没有 对应于list(10,9,8,7,6) 的关系. 这个时候怎么通知list(9,8,7,6,5)更新呢?
|
|
返回顶楼 | |
发表时间:2012-05-21
zybing 写道 就如楼上所提到的, 根据某种条件查出来的list, 再查一次结果就会不一样了.
在hibernate中,主要是保存查询出来的object, 查出来的list,会根据list获取对象,有了缓存就从缓存中获取数据, 就节省获取对象的时间. 对于list的缓存, hibernate会记录一下查询用到的依赖表,一旦依赖表发生变动,无论是否影响到这个list的结果, 一律删除(hibernate也无法知道是否会影响查询结果) 对于自己做的缓存, 除非对数据的精确度要求不高, 不建议对list也做缓存; 1. 只要ID一样,在缓存拿到的结果就是一样的 2. 我们也实现了类似hibernate的功能,想hibernate那样的cache为啥讨论的人少呢,其实用起来也不是很好,因为需要多次跟cache交互。 3. 不用不知道你有什么好的建议?静态页面的更新貌似更不可行. |
|
返回顶楼 | |
发表时间:2012-05-22
onecan 写道 zybing 写道 就如楼上所提到的, 根据某种条件查出来的list, 再查一次结果就会不一样了.
在hibernate中,主要是保存查询出来的object, 查出来的list,会根据list获取对象,有了缓存就从缓存中获取数据, 就节省获取对象的时间. 对于list的缓存, hibernate会记录一下查询用到的依赖表,一旦依赖表发生变动,无论是否影响到这个list的结果, 一律删除(hibernate也无法知道是否会影响查询结果) 对于自己做的缓存, 除非对数据的精确度要求不高, 不建议对list也做缓存; 1. 只要ID一样,在缓存拿到的结果就是一样的 2. 我们也实现了类似hibernate的功能,想hibernate那样的cache为啥讨论的人少呢,其实用起来也不是很好,因为需要多次跟cache交互。 3. 不用不知道你有什么好的建议?静态页面的更新貌似更不可行. 如果是网站提供固定的几种搜索,也可以采用静态页面的方式提供给用户浏览结果. 如果更新数据,可以把相关的静态页面全部重新再生成一次,这样大大降低了对数据库的使用, |
|
返回顶楼 | |
发表时间:2012-05-23
jinnianshilongnian 写道 1、Entity更新时从RelationShop找到对应的List并更新
这个不需要吧 因为你的List存的只是ID啊 2、RelationShop cache 以Entity ID 作为key, 记录引用到这个Entity的List的所在的cache名称和key,用于当Entity更新时找到他所影响的List一起做更新操作 建议上一个时间戳缓存,类似于Hibernate,我觉得要比RelationShop好。 3、当Entity Create Delete时应该直接删除List/修改时间戳吧? 4、你们现在 List如何保存呢? 如何得到Entity类型? 如果List为空呢? 几点疑问和见解 更新的时候 对于结果集类型的查询,如 List,Page类的,该类型缓存应该要失效才对, 删除时同理。 |
|
返回顶楼 | |