缓存数据 vs. 写入内存表

4
哪种方法是实现快速哈希/会话存储的最佳方式?
方式1:在MySQL中创建一个内存表,存储哈希和创建条目的时间戳。MySQL事件自动删除所有早于20分钟的条目。这应该很快,因为所有数据都存储在内存中,但连接到数据库服务器的开销可能会破坏此优势。
方式2:我使用哈希作为空文件名创建一个空文件,并创建一个cronjob,自动删除所有早于20分钟的文件。由于所有HDD上的读操作,这可能变得很慢。
方式3:由于这将与PHP相关,并且我们使用Zend Framework,因此我可以使用Zend_Cache,并将哈希存储为20分钟的生存时间。
我不想为此使用Memcached或APC,因为我认为这对于一些小哈希来说是一个大开销。
您有类似情况的经验吗?我会欣赏您对此的经验和解决方案。

1
你的 way 2 就是 PHP 默认的会话处理程序在做什么。 - Gumbo
是的。但是会有很大的开销吗?高性能应用程序是否因性能问题而放弃默认会话处理程序? - Sebastian Hoitz
4个回答

1

如果性能是一个问题,我肯定会选择memcached。所有大型互联网站都依赖于memcached来缓存或处理服务器密集型任务,甚至是会话存储和锁定机制。

如果问我的话,memcached是最好的选择。


我没有使用Memcached。我选择了APC,因为数据量不是很大。 - Sebastian Hoitz

0

不要重复造轮子 - 使用memcache。或者,测量您的MySQL性能与Memcache相比。请记住,在高性能环境中,数据库访问通常总是瓶颈。


0

你是否考虑了所有这些方法的可扩展性问题?你谈论了多少个哈希值?你谈论了多少兆字节的数据?

  1. 如果可以的话,将其保存在计算机内存中(您的第三种变体)
  2. 将其放在磁盘上,但如果可以的话,请将其保存在内存中(您的第二种变体,如果使用基于文件的会话,则可以使用$session,正如有人指出的那样)
  3. 使用数据库

你有很多数据吗?使用memcached。


0

正如其他人所说,使用memcached。如果PHP支持像Java一样的数据库连接池,我会推荐MySQL,但是由于PHP的特性,memcached是唯一真正的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接