我有一个系统,在这个系统中,我使用PHP对单个注册表进行多次读写,过一段时间(几分钟)就会消失。
基本上,这是一种带有计数器(只是一个整数)的投票系统,计数器可以增加和减少(因子为1)。
因此,我必须在每次用户访问此页面时阅读它,并在大多数时候(当用户交互时)在上面书写。
目前,我使用的是一个DB(MySQL),它有一个表和一个带一列的注册表。
但我认为它效率很低。
我担心,如果网站继续增长,它会崩溃,因为其他内容可以缓存,但这不能,因为它应该是实时的。
我曾想过使用一个文件,但它可能更糟,对吧?
我被托管在一个共享服务中,并且。。,因此,我不能使用MemCached或Redis。
关于如何有效地做到这一点,有什么想法吗
提前谢谢。
我担心在共享托管环境中,这会很困难。您可能无法访问/dev/shm
,因此文件缓存不是一个选项。APC和memcached也不起作用。
因此,只剩下一个选项:优化查询。首先,我建议您只在一个写得很多的表上使用INSERT
。然后,制作第二个表,该表只保存聚合值。这里您需要UPDATE
,但更新频率应为一分钟或两分钟(同时从表1中删除原始数据)。因此,您的数据仍然接近实时,但性能要好得多,而且它可以随着更新时间的增加而直接扩展。