我需要将不同用户之间的数据(因此不同的会话)存储到 RAM 中,以加速用 PHP 编写的 Web 应用程序(数据库和文件系统不是一个选项)。
我一直在谷歌搜索几天,没有任何运气。我听说过memcached和apc,但我真的不知道它们是否适合我或者如何使用它。
我还需要这个数据结构是线程安全的(没有竞争条件和数据不一致)。
用例:我有一个getById($id)
返回类实例的静态工厂函数。我需要这个函数首先检查实例是否存在,如果存在,则返回它或创建一个新的填充数据库中的数据的函数。
Memcached 是分布式缓存,缓存在 memcached 上的数据在远程服务器上,而且 Memcached 提供 CAS 锁(乐观锁),你可以用它来做你的线程安全应用:
但是,APC是本地缓存,它通过共享内存实现,是否线程安全我不知道
memcached 或 memcache 的问题在于它只是 php 上的客户端模块。您还需要安装服务器应用程序并在那里连接。因此,您可以使用任何其他数据库或文件。最快的解决方案将是共享内存http://php.net/manual/en/book.shmop.php 但再次启用它“使用配置行中的 --enable-shmop 参数编译 PHP”,因此没有数据库和访问php检查fopen和flock函数