フレームワークなしで、PHPのMemcachedタグを急いで

まえがき



今日、memcachedなどの機器は、大規模なプロジェクトの作業にはほぼ不可欠です。 通常の日でも、サイトが訪問者のhabraeffectまたは同様の侵入にさらされている場合でも、サーバーの負荷を軽減します。



長い間、MySQL、Memcached、およびセッションを備えたロボットのクラスを除き、OOPを使用せずに完全に線形のコードを記述する必要がありました。 他のすべてのクラスは静的関数のみで構成されており、本質的には、たとえばmember_get_id()をMember :: get_id();に置き換えるだけです。



唯一の方法-このスタイルは自転車工場になりました。今日はそのうちの1つを皆さんと共有したいと思います。 つまり、タグの機能をサポートするmemcachedを操作するための単純なクラス、または(まれに)フレンドと呼ばれる名前空間。





線形プログラミングは、その実行速度が最大であり、ルート化、必要なクラスのファイルの自動検索などの不要な負荷がロードにかかるという事実に惹かれます。 私はすでにそれがどこにあるか知っているので、完全に不在です、そして私は遠くのフォルダーのどこかにほこりを集める何十何百ものものを必要としません。



要点をつかむ



タスクは簡単でした。クラスは使いやすく、キャッシュと特定のタグにキーを追加するには、このクラスのset関数を1回呼び出すだけで済みます。 このように機能を実装しました:



$mcache->set('news\p1', $data, $ttl);







このコードは、news_p1キーをキャッシュに追加し(バックスラッシュがアンダースコアに変わったことに注意してください)、同じキー名をns_newsタグに追加します(ns_プレフィックスは自動的に追加されます)。 将来、レコードを編集または削除した後、ニュース*形式のキーでキャッシュされたデータをすべて削除する必要がある場合は、次のようにします。



$mcache->delete('news*');







キーの最後にあるアスタリスクに注意してください。ニュースタグからすべてを削除する必要があることをdeleteメソッドに明確にします 。そうしないと、メソッドはニュースキーを削除しようとします

特定のキーとそのタグに関する情報をタグから削除する必要がある場合は、setで記述したのと同じ方法で記述します。



$mcache->delete('news\p1');







複数のパラメーターを渡すことによる複数の削除も可能です。



$mcache->delete('news*', 'members*', 'categories', 'comments\p1');







そして、すべてが1つのスタイルになるように、getメソッドでも記述します。



$mcache->get('news*');







または



$mcache->get('news\p1');







知っておくことが重要です:ニュース*を要求する最初のオプションは、ニュースタグに含まれるキーからすべてのデータを返すのではなく、キー自体のリストのみを返します。



コード自体



コードは非常に膨大です...利用可能な最初のサーフィンホスティングに配置されます...

クラスコードはこちら



可能な改善


少し変更できるアイデアがあります...これは、複数のサーバーのサポートと、デバッグとエラー処理を追加することです...



使用場所


仕事用、趣味用、またはsocialz.netの 2つのプロジェクトで、非常に興味深いがまだテスト段階にあるv2を起動するときに、技術的な詳細についてすぐに説明します。



All Articles