• Redis 事务操作

    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. }