問題タブ [phpredis]
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 - PHP Redis タイムアウト、接続時の読み取りエラー?
「PHP の致命的なエラー: メッセージ '接続の読み取りエラー' を伴うキャッチされない例外 'RedisException'」
ここのドライバーはphpredisです
これは常に ~1 分後にタイムアウトします。私の redis.conf はタイムアウト 0 を言って$redis->getOption(Redis::OPT_READ_TIMEOUT)
戻りますdouble(0)
私がこれを行うと、タイムアウトすることはありません$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
なぜ -1 が必要なのですか? Redis のドキュメントにはtimeout 0
、redis.conf でタイムアウトしてはいけないと書かれています。
「デフォルトでは、最近のバージョンの Redis は、クライアントが何秒もアイドル状態の場合、クライアントとの接続を閉じません。接続は永久に開いたままになります。」
model - Redis のモデリングとクエリ
ログを保存してログを表示する redis と phpredis を使用してアプリを構築する必要があります。
このログを表示する前に、並べ替えとクエリを実行する必要があります。
対数モデル:
クエリの例:
次に、結果を ID (ASC) で並べ替える必要があります。
それで、それが可能かどうか知りたいですか?そして、どのモデルを選択しますか?
文字列、ハッシュ、セット、リストを試しましたが、やりたいことがすべてできません。
php - Redis + phpredis がキーを失う — メモリオーバーフロー?
Redis を初めて使用し、 phpredisクライアントを使用して、わずか 512Mb の RAM を備えた小さなボックスで php でテストします。
セットに 3m の整数値を挿入しました。しかし、sCard()
そのセットのメソッドは約 270k カウントしか返しません。
それは私が直面したメモリ制限ですか?挿入中にエラーをチェックする方法は?
アプリケーション: 4 バイトの符号なし整数のシーケンスを格納する 2 つのバイナリ ファイルがあり、これを Redis にロードして高速なインメモリ diff を取得します。これが私の挿入方法です(エラーチェック行をスキップしました):
そのため、2 つの 3m 値ファイルのうち最初のファイルを読み取った後、最初のセットのサイズは約 270k にすぎず、2 番目のファイルは Redis を完全に見逃しているようです:
この直後の Redis INFO 出力:
php - redis lua スクリプト呼び出し redis.call("ZREVRANGE", KEYS[1], start, end, 'WITHSCORES')
私はphpredis拡張機能を使用しており、呼び出すと:
lua スクリプトでは、
実際には、連想配列を返したい:
php - セッションが redis によって正常に管理されているかどうかを確認するにはどうすればよいですか?
PHP.ini
以下に示すように、値を my に設定しました。Redis が機能し、セッションが機能します。今、私が本当に疑問に思っているのは、セッションが Redis で処理および保存されていることをどのように知ることができますか? どこでも検索しましたが、Redis で動作していることを検証する方法が見つかりません。
セッションがそこに保存されていることを何らかの方法で確認できる必要があります。
私のPHP情報が表示されます
redis - redis の ping() は何をしますか?
キャッシュ サーバーとして 10 GB の RAM を搭載した redis 2.6.14 を使用し、 redisクライアントとして phpredis を使用しています。1 つの同じ redis サーバーから書き込みと読み取りの両方を行います。
問題は、トラフィックが高くなった場合でも、このマシンを connect() できますが、ping() は false を返すことです。はい、false のみです。connected_client は 100 未満、used_memory は 1GB 未満、qps は約 1000 で、すべて問題ないようです。
ping() が phpredis/redis で何をするかを除いて、私たちが知っているほとんどすべてをチェックしました。また、ping() がエラーを返すのはどのような状況でしょうか? どうやら、ping() エラーが発生してもマシンは接続可能です。 https://github.com/nicolasff/phpredis#ping
何か案が?
connect() から pconnect(); に切り替えることで、この問題を解決しました。