在Memcached我的official FAQ中读到:
“发送到memcached的所有单个命令都是绝对原子的。”
然而,对于get_multi
和set_multi
,我仍然不清楚这一点。我想知道get_multi
和set_multi
在以下意义上是否是原子的:
例如,这些情况应该是不可能的:
1)
{'a': 0, 'b': 0}
set_multi({'a': 1, 'b': 1})
get_multi(['a', 'b'])
并接听{'a': 1, 'b': 0}
2)
{'a': 0, 'b': 0}
get_multi(['a', 'b'])
并接听{'a': 0, 'b': 2}
这个问题对我的设计非常重要,我认为我最好要求确认。
答案 0 :(得分:3)
As I read this section,get_multi
发出多个并行运行的请求,其想法是,对于大型请求,get_multi
允许总时间量减少所有结果。我没有看到任何保证或提及共同完成的独立请求是集体原子的。同样的规则可能适用于set_multi
(即各个请求是原子的,但它们的集合不是)。
似乎也没有提及交易。