memcached缓存一致性问题

For_Ning 2014-12-02 12:32:09
有个用户日志应用,按每页20条日志获取用户数据列表,用户日志增删改操作频繁
如何用memcached做缓存,并且报纸数据一致性
...全文
5515 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
首先你得评估你读写性能要求,如果读写都很频繁,你用mecache一定程度上,你要为了数据一致 损耗写性能,这个要充分测试读写是否达到你得要求。当然时间、条件充裕的话,也可以考虑类似mongodb这种方式。
Kanepan 2016-04-20
  • 打赏
  • 举报
回复
LZ的场景并不是十分适合做缓存。如果需求的时效性不是很高,用memcache缓存非常适合。 硬要做,用spring 的注解去做 : 读的时候 @Cacheable 写的时候 @CacheEvict 也可以自己写代码。 缓存可以是多种: 内存中的cucurrentMap 、ehcache memcached redis
乔不思 2016-04-20
  • 打赏
  • 举报
回复
鉴于楼上说的频繁操作不建议用memcache,说法是对的,但是楼主项目已经这么用了,说明查询相比较写更加频繁不是吗? ------------------------- 缓存无异于是降低数据库的查询压力。按照 "最近最频繁使用" 的思想为例子: 1.数据你可以考虑过期设置 2.缓存要做主动更新:具体更新思路: 查:先到缓存查,查不到去查数据库,数据库中有则放进缓存,然后在返回 增加:先写进数据库,写入成功在写进缓存,记得设置过期时间 更新: 先更新数据库,如果更新成功再 操作缓存 可以直接删除缓存,(查询的时候在load一次数据库,再放一次缓存)也可以更新缓存 删除:先删除缓存,删除成功了再删除数据库。 在此期间一定要做好的是 操作数据库和缓存过程的异常处理,保持一个目的:缓存中不可以多存(漏存也可以)就行,因为查询每次会重新王缓存中写。。所以这个不用怕 记得我们项目中的一些对外查询接口数据就是这么缓存的。
weishaolin13x 2016-03-28
  • 打赏
  • 举报
回复
好像还没有支持时间栈的缓存软件, 而且还有其它很多栈,比如归档栈,自动将归档的记录从缓存里删掉, 或者按其它任意条件进行设置,只要满足条件就删掉, 这个缓存的设计非常讲究。。。。
weishaolin13x 2016-03-28
  • 打赏
  • 举报
回复
做个时间栈,自动将一个月前的缓存数据给丢掉
weishaolin13x 2016-03-28
  • 打赏
  • 举报
回复
写数据库的同时写缓存, 缓存和数据库同时写,就能保持一致了, 但这样的话,必须把整个数据库的数据都给缓存起来, 一般可以设个时间限制,比如只缓存一个月的数据, 查一个月的可以从缓存里要,查一个月前的从数据库要,
高高哈哈 2016-01-27
  • 打赏
  • 举报
回复
经常改动数据一般是不建议缓存的,设计不大好
芥子风 2015-10-25
  • 打赏
  • 举报
回复
百度了下,memache可以做持久。sina研发的memcachedb,将cache的数据保存到Berkerly DB
芥子风 2015-10-25
  • 打赏
  • 举报
回复
数据操作频繁,缓存不能解决问题。 比如说,一个用户登录,用户登录token放到memcache缓存里,其他webapp都可以从memcache里取登录信息,就不用重复登录了,这个才是memcache解决的问题吧。不知道说的对不对。 日志更新,你想我刚存了日志到缓存里,下一秒日志更新了,再从缓存里读还是旧数据啊。 14楼说的在redis里保存所有操作记录,再数据归档,这种方案可行吗? 我觉得lz的问题应该是大家同时操作一条记录存在的并发操作问题吧,加个乐观锁呢,数据是不是就可以保持一致性呢
时尚程序员 2015-10-21
  • 打赏
  • 举报
回复
<cache usage="read-write"/>
glamey 2015-09-06
  • 打赏
  • 举报
回复
你的场景非常不适合缓存系统。可以着手DB的优化。
NeoLing 2015-02-26
  • 打赏
  • 举报
回复
memcache 没有落地,不适合频繁增删改的情景,可以考虑使用redis,使用起来和memcache差不多,但可以落地。 如果用户日志数据不是特别敏感重要,也可以直接在memcache上进行增删改操作,然后定时对memcache进行离线的落地归档操作
xinjian555 2015-02-25
  • 打赏
  • 举报
回复
频繁写操作 就不适合用缓存,
liangtu 2015-02-11
  • 打赏
  • 举报
回复
引用 3 楼 weixiaomao0801 的回复:
写操作频繁适合使用memcached吗?
确实,频繁写操作,必然导致频繁更新memcached。
最勇敢的鸟 2015-02-06
  • 打赏
  • 举报
回复
引用 3 楼 weixiaomao0801 的回复:
写操作频繁适合使用memcached吗?
不适合,MEMCACHED适合读操作多的地方
  • 打赏
  • 举报
回复
加个版本号来控制乐观锁,这样可以保证脏数据的问题。个人觉得,频繁增删改查不太适合用缓存,频繁的删除会导致缓存命中率过低。
骚年编程去 2015-01-24
  • 打赏
  • 举报
回复
memcached要保证读取和写入大于2:1才能发挥缓存系统的优势。
shrimpma 2015-01-21
  • 打赏
  • 举报
回复
这种情况下,不适合缓存,比较时候数据库读写分离
_浪子 2015-01-18
  • 打赏
  • 举报
回复
引用 5 楼 proteinboy007 的回复:
这个功能,memcached是不合适的,memcached适合读操作是写操作的100倍
如果是redis适合吗
  • 打赏
  • 举报
回复
顶3楼,频繁增删改操作,用缓存不是以个明智的选择
加载更多回复(5)

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧