不使用 predis 之类的任何库,从 PHP 进行 Redis 调用的最佳方法是什么?
我目前使用该
exec
命令,但想知道是否有更好的方法。exec('redis-cli SET foo bar');
其次,您如何执行交易?我可以从命令行这样做......
$ 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');
问问题
4027 次
2 回答
8
使用 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'
]
于 2016-10-17T13:51:15.070 回答
2
在 PHP中有两种方法可以连接Redis
和使用这个库。
1) 使用来自http://redis.io/clients的客户端 Redis 库:- PHP 有 5 个可用的库,您可以自行决定使用其中的任何一个(权衡每个库的优缺点)。一旦你有一个适当的客户端库,它的平面简简单。例如,使用Predis 库
require "predis/autoload.php";
Predis\Autoloader::register();
try {
$redis = new Predis\Client(array(
"scheme" => "tcp",
"host" => "127.0.0.1",
"port" => 6379));
echo "Successfully connected to Redis";
}
catch (Exception $e) {
echo "Couldn't connected to Redis";
echo $e->getMessage();
}
检查链接的 github 页面以获取有关 和 功能的更多getting
详细信息setting
。increment
2) 如果您选择从 shell 继续使用Predis
,则在您的服务器上创建一个 shell (.sh) 脚本,将上述 4 个命令(以及您想在事务中执行的任何命令)放在此脚本中,如下所示。
#!/bin/bash
#<Your transaction commands go below here>
将此文件重命名为并使用代码中的函数将<filename>.sh
其作为 shell 命令执行。exec
PHP
exec('sh <filename>.sh');
于 2013-03-24T05:14:13.317 回答