在将数据发送到数据库之前存储数据的我的缓存解决方案是不可靠的

时间:2014-05-30 10:10:53

标签: php mysql apc

所以我有一个带有Flash游戏的网站,每当用户得到正确或错误的答案时,值和时间戳都会被发送到数据库。

我想减少对数据库的访问次数,因此我使用APC Cache创建了一个解决方案,它积累了值,并且还有一个表来存储用户和有数据要发送的会话之间的引用。当用户注销/更改游戏时,他们会被发送到mySQL数据库。例如,如果用户在没有注销的情况下关闭PC,则数据将存储在缓存中,直到他再次登录为止。但我发现APC Cache非常不可靠,有时会在没有警告的情况下删除这些值。

我可以在哪里实现PHP缓存,或其他类似的解决方案吗?

1 个答案:

答案 0 :(得分:1)

缓存是......好吧,它们是缓存。它们不是用于永久存在的信息,而是需要定期刷新(用于写入缓存)。当缓存已满(或TTL过期)时,memcached和apc都将使条目失效,如果它们没有,则它们将成为内存数据库。

如果不知道为何直接在数据库中存储数据时遇到问题的详细信息,可以使用一个没有索引的简单表,每个条目存储一行数据。插入时间应该可以忽略不计,您可以每隔五/十/十五分钟处理数据并将其移动到正确的位置。这至少会给你更多的持久性。这可能是你用今天堆栈做的最简单的方法。

您还可以查看其他解决方案,例如redis,消息队列(兔子,齿轮手等)以及其他技术。重要的是避免使用非永久性数据技术来存储永久数据。