实时显示库存,尽量减少脏数据的引起的不方便
问题:公司需要实时显示自己的库存给客户的浏览器端,客户1w,后台备用查询更新的数据量不会过10W条,查询频率很高。
系统环境:java,mysql,jboss7
目前的解决方案:目前库存系统只是给少量客户使用的,就是在数据库加一列存储uuid做为锁,每次更新后更新锁,只有获取最新锁才能更新。其实就是一个一次性锁,只有拿到最新的那把锁才能进行更新操作。
目前的缺陷:虽然避免了写看到的脏数据,但是读依然存在读脏数据,并经常提示“请重新获取锁",客户处理效率低。客户已经上w了,总是手工查询数据库,客户效率极低,后台数据库处理也低了。
预想计划:客户端每隔2秒自动异步请求,将库存数据全部读到内存,更新首先内存时,首先更新到内存并快速返回给客户端,更新时同时发一条异步消息,让另外一个异步程序将”更新数据“从内存更新到mysql数据库;或者当更新数据到一定量时,flush一下将更"新的数据"同步到数据库去。
问题:是否有内存数据库能直接配置下自己就能同步给mysql?个人只是预想,解决过的朋友给请给些建议,非常感谢。
内存数据库问题
http://www.oschina.net/question/102698_12700
redis与数据库同步的问:http://www.oschina.net/question/558240_110684
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
读写分离
看到有人有类似的需求:
redis 搭配 SQL 实践问题
http://segmentfault.com/q/1010000000177049
http://www.oschina.net/p/mysql-syncer
这里还有一篇文章,大意是“如果你可以接受定期从redis导入到mysql,那基本上表示你的业务就不需要mysql,因为redis不仅仅是缓存,塞给它的数据是持久化到硬盘的,你下次直接从redis读出来就行了。”
我的需求只是为了展现实时库存,其他的业务的数据还是想放在mysql,不为别的,只因为熟
http://segmentfault.com/q/1010000000150049
MySQL主从复制:从机用来读取数据。