是否存在一些以高并发性处理数据的机制?
首先我们使用mongodb并且它具有解决问题的原子更新。但更新freq总计大约1000秒,我们设置Redis来帮助他们之间的mongo和writed同步。它运作良好,但我们在redis方面存在问题。
例如:
两个请求都获得相同的对象?更改它的数据并在退出时保存。
当我们使用mongodb时 - 我们可以做 - 对象的部分更新,但是使用redis - 我们不能。
是否可以同时使用来自多个进程的相同对象(数据)进行操作而不是覆盖整个 - 只有部分?
我找到的唯一方法 - 在第二次获取之前创建锁定机制和等待进程。
答案 0 :(得分:1)
Redis没有你想要的机制(部分更新), 但作为替代方案, 你可以编写Lua脚本来避免并发问题。
在剧本中, 您可以先读取一个值,然后根据需要进行操作,最后再次存储该值。 Redis确保脚本以原子方式执行, 这样你不需要任何锁定机制。 (*)