親愛なる友人! 先週、
Redisバージョン2.0の素晴らしいKey-Valueベースの安定したリリースがリリースされ、印象的な革新が行われました。 このニュースは、私たちが忙しいプロジェクトでRedisを使用して1年が経ち、私たちの印象は好意的であるため、特に私たちを喜ばせました。
Rediska PHPクライアントを更新し、新しい機能のサポートを追加しました。
Redis 2.0の主要な革新
トランザクション(MULTI / EXEC / DISCARD)
トランザクションを使用すると、一連の命令を単一のアトミック操作として実行できます。 ここに社会的な例があります:
最初のユーザーは、2番目のユーザーと友達になりたいという願望を表明します。
- 最初のユーザーIDを2番目のユーザーユーザーのセット( セットは一意の要素の順序付けられていないセット)に追加します:2:リクエストを保存するリクエスト。
2番目のユーザーは気にしません。
- ユーザーのセットから削除します:2:最初のユーザーのIDを要求します。
- 最初のユーザーIDをユーザーのセットに追加します:2: 2人目のユーザーの友達と友達。
- ユーザーのセットに2番目のユーザーIDを追加します。
操作の1つが失敗した場合、または競合する操作がある場合、崩壊は避けられません。 ここでは、トランザクションが助けになります。
<?php $rediska = new Rediska(); $rediska->addToSet('users:2:requests', 1); $rediska->transaction()->deleteFromSet('users:2:requests', 1) ->addToSet('users:2:friends', 1) ->addToSet('users:1:friends', 2) ->execute(); ?>
BLPOP / BRPOPブロッキング操作
アトミック操作
BLPOPおよび
BRPOPは、リストの最初または最後のアイテムを取得および削除します(リストはアイテムの順序付きリストです)。 さらに、リストが空の場合、別のクライアントがそこにアイテムを置くまで、操作はクライアントの接続をブロックします。
たとえば、ユーザーはBritneyのmp3トラックを320 Kb / sにアップロードします。 192 Kb / sに変換する必要があります。 これを行うには、変換タスクをキューに追加します。 デーモンはキューからタスクを受け取り、ファイルを変換します。 キューを実装するには、リストが優れています。
<?php $rediska = new Rediska();
公開/購読
最も注目すべき革新の1つは、
Publish / Subscribeメッセージキューパラダイムの実装です。
PUBLISH操作は、特定の受信者ではなくチャネルにメッセージを追加し、それらについては何も知りません。
SUBSCRIBE操作は、1つまたは複数のチャネルをサブスクライブし、メッセージを受信します。
頭に浮かぶ最も簡単な例は、チャットの実装です(ただし、パブリッシュ/サブスクライブにはもっと便利な用途があります)。
<?php $rediska = new Rediska();
<?php $rediska = new Rediska();
実装のイニシアチブと支援に対してジュラ
オクターブに 感謝します!
新しいハッシュキータイプ
ハッシュは、値が基本的にPHPの連想配列であるキーですが、文字列キーにシリアル化された配列を保存するのとは異なり、フィールドとその値を操作するためのアトミック操作を提供します。
ハッシュでは、オブジェクトを保存したり、文字列キーをグループ化してより効率的に使用したりすることが非常に便利です。
<?php $rediska = new Rediska(); class User extends Rediska_Key_Hash { public function __construct($id) { parent::__construct("users:$id"); } }
仮想メモリ
仮想メモリは、RAMのサイズが許容するよりも多くのデータをRedisに保存するのに役立ちます。 つまり、Redisは、RAMからディスクにアクセスする可能性が最も高いキーの値を消去します。
仮想メモリは、使用するキーの割合が少ない場合や、キーの値が大きい場合に効果的です。
Redisサーバーの構成
新しい
CONFIG操作を使用すると、Redisサーバー構成を読み取って変更できます。
<?php $rediska = new Rediska();
新しい文字列キー操作
<?php $rediska = new Rediska();
新しい大根からの何か
インスタンスマネージャー
アプリケーションには、異なるオプション(名前空間、サーバーなど)を持つ大根の異なるインスタンスを必要とするコンポーネント(キャッシュ、セッションなど)がある場合があります。
マネージャークラスはこれらのインスタンスの格納にコミットしており、それらを取得、追加、削除するためのメソッドを提供します。
マネージャは、オブジェクトに加えて大根オプションの配列を保存し、最初のリクエスト時にオブジェクトを作成することもできます(遅延ロード)。
<?php
新しいシリアライザー
新しいバージョンでは、Radishは配列とオブジェクトのみを
シリアル化し 、文字列と数値はそのまま保存されます(以前のバージョンで保存されたデータには問題はありません)。
serializerAdapterオプションを使用して、
シリアル化方法を指定できます。
- phpSerialize-標準のPHP シリアライザー ( シリアライズ機能)。 このメソッドはデフォルトで使用されます。
- json-コメントはありません
- toString-値を文字列(string)$値にキャスト
- Rediska_Serializer_Adapter_Interfaceインターフェースを実装するクラス
オートローダー
大根は
require_onceを取り除き、パスを
include_pathに追加する必要がありました。
操作モニター
MONITOR操作が
実装さ
れ 、Redisサーバーで実行された操作をリアルタイムで観察できるようになりました。
<?php $rediska = new Rediska();
結論として...
オーバーロードしないようにします。C++で大根をPHP拡張機能として書き直し始めただけで、喜んで参加します。