2009-10-09 126 views
4

哪一种方法能够以这三种方式之一实现快速散列/会话存储?缓存数据与写入内存表

方法1: 创建MySQL中的存储表,用于存储哈希,当创建条目的时间戳。 MySQL事件会自动删除超过20分钟的所有条目。这应该是非常快的,因为所有数据都存储在内存中,但连接到数据库服务器的开销可能会破坏这种优势。

方式2: 我创建哈希作为其文件名的空文件,并创建一个cronjob自动删除超过20分钟之前的所有文件。由于硬盘上的所有读操作,这可能会变慢。

方式三: 由于这将是PHP相关的,我们使用Zend框架我可以使用Zend_Cache是​​和散列存储与时间到现场的20分钟。

我不想为此使用Memcached或APC,因为我认为这对于一些小的哈希来说是一个很大的开销。

你有类似场景的经验吗?我很感谢你的经验和解决方案。

+1

Your * way 2 *是PHP的默认会话处理程序正在执行的操作。 – Gumbo 2009-10-09 15:23:35

+0

是的。但是有一个很大的开销吗?由于性能问题,高性能应用程序是否针对默认会话处理程序做出决定? – 2009-10-09 15:28:56

回答

1

如果性能是一个问题,我会坚决使用memcached。所有大型互联网站都依靠memcached来缓存服务器密集型任务,甚至会话存储和锁定机制。

Memcached是如果你问我

+0

虽然我不使用Memcached。我为APC决定,因为它是那么多的数据。 – 2009-10-11 07:44:41

0

不要重新发明轮子 - 使用memcache。要么,要么测量你的MySQL性能与Memcache。请记住,无论如何,数据库访问通常总是高性能环境的瓶颈。

0

你认为还扩展问题与所有这些方法的路要走?你谈论多少哈希?你谈论多少兆字节的数据?

  1. 保持在您的计算机的内存,如果你能(你的变型3)
  2. 把它放在磁盘上,但如果你可以将它放在内存(你的变形2,如果使用基于文件的会话,你可以使用$ session中有人指出)
  3. 使用数据库

你有大量的数据?使用memcached。

0

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