1

異なるコントローラー間で共有される、CakePHP アプリケーションに悲観的ロックを実装しました。基本的に、ページにアクセスすると、レコードがテーブルに書き込まれ、そのモデルのエントリがそのユーザーによって編集されていることがタイムスタンプとともに示されます。ajax 呼び出しで 30 秒ごとに、そのレコードのタイムスタンプが更新され、ページがまだ使用中であることが示されます。誰かがページに入ろうとすると、アクセスが拒否されます。ページが残っている場合、「ロック」はその 30 秒の終わりに期限切れになります。

全体として、クエリは次のとおりです。

  • 3 ページがロードされたとき (1 時間以上経過したすべてのロックを削除 (DELETE)、ページがまだ使用されていないかどうかを確認 (SELECT)、使用されていない場合はロックを作成 (INSERT))。
  • 2 ロックが更新されたとき (ページがまだロックされていないかどうかを確認します (SELECT)。ロックされていない場合は、ロックのタイムスタンプを更新します (UPDATE))。

これはデータの永続的なストレージではなく(明らかにデータベースを使用する必要があります)、一時的なものであるため、キャッシュシステムを使用する必要があるかどうか疑問に思っています。データベースよりも高速ですか?(しかし、私のキャッシュは単なるファイルキャッシュであるため、よくわかりません)。

4

1 に答える 1

0

そのためにRedisを使用できます。これはメモリ内のキー/値ストレージデータベースであり、アプリケーションのフルページキャッシュに使用しており、問題なく機能します。

CakePHP 2の場合、開発中のRedisキャッシュエンジンがあります。これは、Cake https://github.com/plastic/redis-cache-cakephp用の古い(テスト済みの)キャッシュエンジンです。

CakePHP2のデータソースもありますが、リンクを今は覚えていません。申し訳ありません。

于 2012-03-29T11:59:55.717 に答える