2012-02-07 53 views
1

我在我的CakePHP應用程序中實現了一個保守鎖定,在不同的控制器之間共享。基本上,當一個頁面被訪問時,一個記錄被寫入一個表中,表明該模型的那個條目正在被該用戶編輯,並帶有時間戳。每隔30秒,通過一次ajax調用,該記錄的時間戳就會更新,表示頁面仍在使用中。如果有人試圖進入該頁面,則訪問被拒絕。如果頁面被留下,'鎖'在30秒結束時到期。CakePHP和悲觀鎖定:數據庫vs緩存

總體而言,查詢是:

  • 3時,頁面加載(清除所有超過1小時(刪除)舊的鎖,檢查頁面是不是已經在使用(選擇),如果它不是,創建鎖(INSERT));
  • 2更新鎖時(檢查頁面是否已被鎖定(SELECT);如果不是,則更新鎖的時間戳(UPDATE));

我不知道我是否應該使用緩存系統,因爲這不是數據的永久存儲(這顯然應該使用數據庫),但僅僅只是短暫的。它可能比數據庫更快嗎? (但我不確定,因爲我的緩存只是文件緩存)。

+0

不確定我是否理解你的問題,在你的具體情況下使用cakephp緩存是個好主意? – 2012-02-07 23:40:53

+0

那麼,我必須存儲30秒,正在編輯一個頁面。我想知道,如果使用數據庫,那麼比使用簡單的緩存更「資源昂貴」。 – entropid 2012-02-08 00:35:55

+0

根據用戶數量是否有臨時表,但是因爲我認爲你不必編輯緩存是合適的。 – 2012-02-08 11:20:39

回答

0

您可以使用Redis。這是一個內存鍵/值存儲數據庫,我們已經將它用於應用程序中的整頁緩存,並且它工作得很好。

對於CakePHP 2,開發中有一個Redis緩存引擎。這是一箇舊的(沒有測試過)緩存引擎Cake https://github.com/plastic/redis-cache-cakephp

還有一個CakePHP2的數據源,但我不記得現在的鏈接,對不起。