【问题标题】:Call a redis command outside of transaction context在事务上下文之外调用 redis 命令
【发布时间】:2016-01-12 11:42:55
【问题描述】:

是否可以在事务上下文之外调用 predis 命令?我的意思是在事务打开时执行 hget 或 hexist

【问题讨论】:

  • 听起来你需要使用 Lua 脚本而不是 tx - 你可以在脚本中读写数据

标签: php redis predis


【解决方案1】:

不,这是不可能的。 Transaction 以 (MULTI) 开头,适用于每个连接管道。所以你应该先DISCARD/EXEC 或者使用另一个predis连接到Redis服务器。

【讨论】:

    【解决方案2】:

    你可以这样做,但不能在同一个连接上。

    这是一个将foo2 值复制到foo 的事务,foo2 被第二个连接读取:

    $responses = $client1->transaction()->set('foo', $client2->get('foo2'))->get('foo')->execute();
    

    【讨论】:

    • What's new 添加了你的答案?
    • @misterion,我正在执行 redis 调用,而事务仍处于打开状态。我认为这就是 OP 想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    相关资源
    最近更新 更多