1.redis事務命令:php
命令 | 做用 | 返回值 |
---|---|---|
watch | 監視一個或多個key | 老是OK |
multi | 聲明事務開始,後續命令將排隊按順序等待exec執行 | 老是OK |
exec | 順序執行multi以後的命令,若是multi以前使用watch命令監視的鍵的值發生變化,執行將失敗 | 執行成功時返回數組包含每一個命令執行結果,失敗時原生命令返回null,php-redis擴展方法返回false |
discard | 取消事務 | 老是OK |
unwatch | 取消watch監視,若是watch監視以後執行了exec或discard,會自動取消監視,沒必要再unwatch | 老是OK |
2.redis事務示例:<?phptry { //鏈接本地的 Redis 服務 $redis = new Redis(); $redis->connect('127.0.0.1', 6379);} catch (Exception $e){ echo $e->getMessage(); die;}$key1 = 'x1';$key2 = 'x2';$redis->set($key1, '123');$redis->set($key2, '234');try { //監視一個(或多個)key,若是在事務執行以前這個(或這些) key 被其餘命令所改動,那麼事務將被打斷 $redis->watch(array($key1, $key2)); //模擬監視 key 被打斷 //$redis->set($key1, '12345'); $redis->multi(); $redis->set($key1, '1123'); $redis->set($key2, '2123'); //執行事務塊內的全部命令 $status = $redis->exec(); //失敗則取消事務 if (!$status) { $redis->discard(); }} catch (Exception $e){ echo $e->getMessage(); die;}var_dump($status);echo '<br>';echo $redis->get($key1) . '-' .$redis->get($key2);