私は、Trieデータ構造を含むアプリケーションをPHPで設計しています。
時間効率の良いプレフィックス検索のために、私はトライを使用しています。
データベースのレコードを使用してトライを構築しています。
現在、データベースには数百万のレコードがあります。そのため、新しいユーザーリクエストごとに、Trieを作成して検索することは毎回実行できません。
代わりに、トライを一度だけ作成して、新しい情報をリクエストするたびに再作成する必要がないように、何らかの方法でこの情報を保存します。その後、すぐに検索を実行できます。 PHPを使用して、作成されたTrieを(1つのユーザーセッションだけでなく、すべてのユーザーリクエストに対して)何らかの方法でキャッシュできますか?
どんな助けでも大歓迎です。
回答:
回答№1は0いくつかの標準オプションがあります。
以下のような単純なキャッシュを使用して、データベースの結果をメモリにキャッシュします memcached
使用してキャッシュ レディス、おそらくその余分のいくつかを利用する特徴。これには、REDISの構造にデータをロードし、データベース検索結果セットではなく、トライ検索コードをRedisに対して直接動作させるプロセスが含まれる場合があります。
どちらの場合でも、許容できる一定の期間結果をキャッシュします。データベースの結果は何らかの形でメモリに格納されるため、RDBMSに負荷はかかりません。
関連する質問で、あなたは彼が生のシリアル化された変数のサイズは約200mbです。これは、Redisの最大オブジェクトサイズ(512MB)内に十分収まっていますが、memcachedでは問題になる可能性があります。私は最近、ほとんどのアプリサーバーキャッシングに個人的にRedisを使用しています。