問題タブ [predis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Predis のドキュメントはありますか?
私は phpredis を使用していましたが、現在は php アプリケーション用に predis も試していますが、2 つ目の適切なドキュメントが見つかりませんでした。githubに「使い方」がありますが、かなり短いと思います。例を確認したところ、「小文字」の文字でRedis コマンドを使用していることに気付きました。いくつか試してみましたが、うまくいきましたが、これが本当かどうかを確認するためにすべてを試したくはありません...
yii - Predis Aysnc の疑問
predis-async を使用する場合は、ある種の非同期 Web フレームワーク (おそらくhttps://github.com/reactphp/reactを使用して構築) を使用すると言われました。現在Yiiを使用しています。
ってことも言われました
その行は、Redis へのすべての接続が終了し、すべてのコールバックが呼び出された後に返されないイベント ループを開始します。つまり、この行がコードをブロックすることになります。次のコードを実行してみてください (Predis Async の使用法を示す最も単純なコード):
END はおそらく長い間表示されないか、まったく表示されないでしょうが、非非同期 Predis を使用した同じ操作以上の操作が必要になることは確かです。
ただし、私自身の理解では、既存の PHP システムは、Predis Async を箱から出してすぐにライブラリとして使用できるはずです。つまり、既存の PHP システムは ReactPHP 上にある必要はありません。predis async を使用するという私の考えは、mongodb 非同期コミットを使用することに似ています。PHP が mongodb lib を呼び出して書き込み操作をコミットする場合、それは非同期です。Mongodb は、最初に書き込みが発生するのを待つのではなく、すぐに呼び出しを返します。この場合、mongodb は非同期 php フレームワークも必要としません。
それは本当ですか
END はおそらく長い間表示されないか、まったく表示されないでしょうが、非非同期 Predis を使用した同じ操作以上の操作が必要になることは確かです。
php - Predis エイリアス シャーディング
here で説明されているように、エイリアスによる Predis シャーディングを使用しようとしています。私のコードは基本的に同じですが、空の配列のみを返しています。ハッシュ キーは {} で囲む必要がありますか? (編集:いいえ、試してみました)
編集:$servers
配列にサーバーを1つだけ配置した場合にも機能します。そのため、ハッシュが正しく機能していないようです。戻り値の前にいくつかのエコーをスローするとnodehash
、エイリアスが返されていることがわかります。
php - Predis Null 一括返信
みんな!Predis で楽観的ロックを行っています。問題は、Redis のドキュメントに、監視対象のキーが変更されると、実行によって「Null Multi-bulk reply」が返されると記載されていることです。Predis ではどのように見えますか? 悲しいことに、Pedis に役立つドキュメントは見つかりませんでした (非常に基本的なチュートリアルは数えません)。
現時点で私のコードは次のようになります。
戻り値が false である限り、関数を呼び出します。
php - predisでZINCRBYを使用する方法
Predisを使用してReddisサーバーに接続し、ZINCRBYを使用しようとしています。rawコマンドは明らかにサポートされなくなったため、次の機能を動作させることができません。
php - predis を redis スレーブにフェールオーバーする最良の方法は何ですか?
redis サーバーが利用できないかどうかを検出し、スレーブにフェイルオーバーする最良の方法は何ですか?
もちろん、これはタイムリーかつ効率的な方法で行う必要があります。集中型の PHP セッション変数ストレージに使用しています。
この例はnrk/predis リポジトリで見ましたが、これはシャーディング専用であり、フェイルオーバー/レプリケーションの状況ではないと思いますか?
TL;DR — マスターが使用できない場合、redis ベースの PHP セッションをスレーブ redis サーバーにフェイルオーバーさせたいです。
ヘルプ?
json - Predis が JSON 文字列の一部を保存しない
Predis ライブラリを使用して、Cakephp の $_SESSION の JSON 表現 (json_encode) を Redis に保存しようとしています。
$_SESSION raw は次のとおりです。
json_decode の後:
redis に関連するコード設定値:
set を呼び出した後に redis をチェックすると、この部分だけが保存されます。
残りの JSON データは切り捨てられ、redis に保存されません。これには何が問題なのですか?JSON を redis に設定する際に見逃しているものはありますか。
php - セッションストレージに Predis を使用すると 500 エラー
PHP セッション データを Redis に保存するために Predis を使用しています。
私のサイトには、複数の ajax 呼び出しを行うページがあり、それぞれが Redis セッション ストアに接続してセッション変数を探すことによって PHP で認証されます。
散発的な 500 エラーが発生します。これは、私の PaaS が 6 つの同時 Redis 接続しか許可しないことが原因であると考えられます。これは、6 つ以上の同時 ajax 呼び出しを行うときに最も発生するためだと思います。
典型的なエラーは次のとおりです。
[2013 年 7 月 26 日金曜日 17:25:53] [エラー] [クライアント 10.0.64.59] PHP 致命的なエラー: メッセージ「サーバーへのバイトの書き込み中にエラーが発生しました [tcp://10.0. 27.46:5058]' in /mnt/var/vcap.local/dea/apps/funnelplus-reports1-3-7416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/AbstractConnection.php:139\nスタック トレース:\n#0 /mnt /var/vcap.local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/StreamConnection.php(189): Predis\Connection\AbstractConnection->onConnectionError('書き込み中にエラーが発生しました... ')\n#1 /mnt/var/vcap.local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/StreamConnection.php(294): Predis\Connection\StreamConnection->writeBytes ('*4??$5??SETEX??...')\n#2 /mnt/var/vcap.local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/AbstractConnection.php(119): Predis\Connection\StreamConnection->writeCommand( Object(Predis\Command\StringSetExpire))\n#3 /mnt/var/vcap.local/dea/apps/funnelplus-reports1 in /mnt/var/vcap.local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d /app/_includes/Predis/Connection/AbstractConnection.php の 139 行目、リファラー:local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/AbstractConnection.php 139 行目、リファラー:local/dea/apps/funnelplus-reports1-3-77416a344cc658624070a91d745d342d/app/_includes/Predis/Connection/AbstractConnection.php 139 行目、リファラー:http://www.domain.com/funnels?funnel=8
単純に 500 をスローするのではなく、これらを強制的にキューに入れる方法、またはこれらの ajax 呼び出しを認証するより良い方法はありますか?
アプリは複数のインスタンス間で負荷分散されるため、セッションに Redis を使用しています。
php - トラフィックの多いサイトでの Predis タイムアウト
トラフィックのピークが高い (約 10,000 のオンライン ユーザー) Web サイトを実行しており、サイトのオンライン ユーザーが約 7,000 を超えると、Predis でこのエラーに直面します。
サーバーは Intel Xeon 3.4GHz、32GB RAM および SSD ディスクで、静的コンテンツ用の nginx、apache、および mysql を備えています。メモリ消費量は 9GB を超えることはなく、CPU 負荷はピーク時に 4 です。
PHP のメモリ不足エラーも、MySQL が消えたのも、この Redis エラーだけではありません。タイムアウト 0 と ?read_write_timeout=0 を入れてもうまくいきません。手伝って頂けますか?
私の英語に感謝し、申し訳ありません!