php - 如何在 PHP 中执行 Redis 事务?

标签 php redis

  1. 在不使用任何库(如 predis)的情况下,从 PHP 调用 Redis 的最佳方法是什么?

    我目前使用 exec 命令,但想知道是否有更好的方法。

    exec('redis-cli SET foo bar');
    
  2. 其次,您如何执行交易?我可以从命令行这样做...

    $ redis-cli
    redis 127.0.0.1:6379> MULTI
    OK
    redis 127.0.0.1:6379> INCR FOO
    QUEUED
    redis 127.0.0.1:6379> INCR BAR
    QUEUED
    redis 127.0.0.1:6379> EXEC
    1) (integer) 1
    2) (integer) 1
    

    但是,如果我尝试这样做,每个单独的命令都会单独执行,而不是在同一事务中,我最终会收到错误 (error) ERR EXEC without MULTI

    exec('redis-cli MULTI');
    exec('redis-cli INCR FOO');
    exec('redis-cli INCR BAR');
    exec('redis-cli EXEC');
    

最佳答案

使用 Predis,您将拥有类似...

$redis = new \Predis\Client('tcp://ip.address:port');
$redis->multi();
$redis->incr('foo');
$redis->incr('bar');
$redis->lrange('mylist', 0, -1);
$data = $redis->exec();

$data 可能如下所示,具体取决于这些计数器的开头...:

[
  1, // foo 
  2, // bar   
  ['fish', 'beans', 'bar', 'baz'], // whatever was in 'mylist'    
]

关于php - 如何在 PHP 中执行 Redis 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595230/

相关文章:

php - 抵御 sql 注入(inject)和跨站点脚本的最佳方法

Redis: Publish pipelined/batched messages - 获取管道/批处理消息

Redis 客户端未通过 HAProxy 连接到 Redis 服务器

redis - 如何在 Redis 2.6.11 中使用 UNSUBSCRIBE 命令

php - 使用MySQL命令行生成数据

php - 无法从 codeigniter 中的 mysql 表中获取一些特殊字符

php - 对 pg_query() 有困难;在 PHP 中

macos - 无法从 PHP : "mysql_connect(): No such file or directory" 连接到 MySQL

python - 使用 redis 和 celery 向所有工作人员广播任务

python - 替代 redis.keys(...)