我想在RAM中存储信息(会话和很多字符串),我不知道是否应该使用tmpfs或memcached服务器。有人做了一些基准测试,知道哪一个更快?一些ajax脚本需要每个登录的用户每1-5秒请求一次信息,比如PHP中的网络聊天。所以PHP必须经常连接到memcache。
使用tmpfs的优点是我可以创建大量文件并具有结构(dirs),而我在memcached中只有一个键值系统,但我可以使用数组或对象来存储信息。 如果存在任何差异,CPU负载也会很有趣。
感谢。
答案 0 :(得分:4)
只需几点
如果您不希望数据增加,请使用tmpfs来增加服务器上的内存。
如果您必须在服务器之间共享数据,或者想要存储更多适合本地服务器RAM的数据,请使用memcahed。
答案 1 :(得分:2)
我真的不知道速度,但这里有几件关于memcached的事情要考虑:
最后,不确定tmpfs,但我可能会使用memcached,至少在谈到:
为什么?因为它是:
答案 2 :(得分:0)
ramdisk和memcached都非常快。
如果您在问题上使用MySQL,我认为速度没有任何重要性。
我个人更喜欢Redis而不是memcached。
以下是优点/缺点:
memcached可能会删除密钥。 Redis和文件永远不会这样做。
如果会话不在文件中(例如memcached / redis),某些软件如Joomla无法安装
memcache和redis都能够为多个php服务器提供服务,因此您将无法在群集中使用棒状会话。
memcached更快,然后是redis,然后是ramdisk,然后是memcachedb,然后是mysql,然后是文件系统会话。
ramdisk模仿正常的php会话行为,不需要安装任何东西。
如果ramdisk无法挂载,php将回退到文件系统并仍然有效(假设服务器启动)
如果memcached或redis停止工作,php会发出令人讨厌的错误,而不会启动。
希望这有帮助。
答案 3 :(得分:0)
对会话数据的写访问权必须是原子的或受每会话锁保护,否则会被破坏。对于基于文件的会话,它通过锁定文件来解决,不知道memcached如何处理它。 使用单独的ext4分区并不像你想的那么糟糕--VFS将缓存你的文件I / O在 RAM 中,所以你可能不需要任何不同的东西。 您可以微调ext4(在一个分区上)来缓存您的写入,因此您可以获得类似RAM的性能和持久性,适用于大于RAM的大小。 例如,你得到写回缓存和60秒窗口(延迟提交):
mount /dev/sda4 -t ext4 -o rw,data=writeback,nobh,commit=60
它可以快速运行并且不会耗尽RAM,它将使用所有可用的 RAM,因为文件系统缓存是动态的。 尝试用第二个文件多次说4MB文件(覆盖它),你会得到非常快的写入。
答案 4 :(得分:-1)
实际上,您可以使用memcacheDB来满足您的需求。