5
  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');
    
4

2 に答える 2

2

RedisPHP でこのライブラリに接続して使用するには、2 つの方法があります。

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();
}

gettingsettingおよびincrement関数の詳細については、リンクされた github ページを確認してください。

2) 引き続きシェルから使用することを選択した場合はPredis、サーバー上にシェル (.sh) スクリプトを作成し、上記の 4 つのコマンド (およびトランザクションで実行するコマンド) を以下のようにこのスクリプトに配置します。

#!/bin/bash
#<Your transaction commands go below here>

このファイルの名前を に変更し、コード内の関数<filename>.shを使用してこれをシェル コマンドとして実行します。execPHP

exec('sh <filename>.sh');
于 2013-03-24T05:14:13.317 に答える