Memcache有交易吗?

Tes*_*rex 5 sql memcached transactions

虽然我找不到任何东西,我想我会仔细检查 - memcache是​​否支持交易?

如果不是,我敢打赌是可能的答案,那么在具有事务的环境中使用memcache的正确方法是什么?每次计划更新时都不必读取数据库,即使数据在缓存中,只是为了设置锁定?例如,更新某些数据的脚本如下所示:

  1. 开始; SELECT ... FOR UPDATE;
  2. 计算...
  3. 更新表......;
  4. 更新缓存
  5. 承诺;

我认为您必须在运行更新查询后更新缓存,以防您遇到死锁并需要回滚.但是你也应该在提交之前更新缓存,以防任何其他线程等待读取你的数据,并且可能在你之前用更新的数据意外更新它的缓存,导致你现在已经过时的数据覆盖了它.

这是正确的步骤顺序吗?有没有办法不必在读取更新数据库?

Ali*_*man 5

Memcache确实有一个名为CAS(Check And Set - 或Compare and Swap)的运算符可以帮助你.PHP手册上有一些文档,Memcached :: cas,但它也应该在其他库和语言中得到支持.