2012-02-07 46 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的数据源,但我不记得现在的链接,对不起。