Redis 事务操作

redis 事务不能回滚,但是能保证原子性,用 lua 脚本也能实现 redis 事务效果

下面是一个事务操作例子,返回数据有点特别,偶数为成功与否,奇数为执行 key,下面写了一个结果遍历方法

  1. $count = 2;
  2. $result = Redis::transaction(function (\Redis $redis) use ($count) {
  3. for ($i = 0; $i < $count; $i++) {
  4. $key = "key:$i";
  5. $redis->set($key, $i);
  6. $redis->get($key);
  7. }
  8. });
  9. /*
  10. $result = array(4) {
  11. [0]=>
  12. bool(true)
  13. [1]=>
  14. int(0)
  15. [2]=>
  16. bool(true)
  17. [3]=>
  18. int(1)
  19. }*/
  20. foreach ($result as $index => $value) {
  21. if ($index % 2 == 0) {
  22. // is exec ok ?
  23. if ($value) {
  24. // todo...
  25. }
  26. }
  27. }