使用这三种方法之一实现快速散列/会话存储的最佳方法是什么?
方式1: 在MySQL中创建一个内存表,用于在创建条目时存储哈希值和时间戳。 MySQL事件会自动删除超过20分钟的所有条目。这应该非常快,因为所有数据都存储在内存中,但连接到数据库服务器的开销可能会破坏这种好处。
方式2: 我创建一个以散列作为文件名的空文件,并创建一个自动删除超过20分钟的所有文件的cronjob。由于HDD上的所有读取操作,这可能会变慢。
方式3: 由于这将与PHP相关,我们使用Zend Framework,我可以使用Zend_Cache并以20分钟的生存时间存储哈希。
我不想为此使用Memcached或APC,因为我觉得这只是一些小哈希的巨大开销。
您是否有类似情况的经验?我很感激您的经验和解决方案。
答案 0 :(得分:1)
如果性能是一个问题,我会默默地使用memcached。所有大型互联网站点都依赖于memcached来缓存服务器密集型任务,甚至是会话存储和锁定机制。
如果你问我,Memcached就是你的选择
答案 1 :(得分:0)
不要重新发明轮子 - 使用内存缓存。要么,要么衡量你的MySQL性能与Memcache。请记住,无论如何,db访问通常始终是高性能环境中的瓶颈。
答案 2 :(得分:0)
您是否考虑使用所有这些方法来扩展问题?你谈了几个哈希?你谈到多少兆字节的数据?
你有很多数据吗?使用memcached。
答案 3 :(得分:0)
正如其他人所说,使用memcached。如果PHP支持数据库连接池,例如Java,我会推荐MySQL,但PHP就是这样,memcached是唯一真正的答案。