PHP 应用程序如何将数据保存在内存中?
How can PHP application keep data in memory?
我之前开发过 Java 网络应用程序(Spring、Spring Boot),我将大量数据缓存在内存中,以大大提高效率和并发用户数可以支持,但我很难弄清楚 PHP 应用程序如何实现相同的功能?
是否有一种全局方法可以做到这一点,或者是使用会话变量的最佳等效方法?
您可以创建自定义缓存 class 并使用它(单例 class 可能是另一种解决方案)。
PHP 是 single-paged 语言(如果我们谈论的是 WEB)。
看看这个http://php.find-info.ru/php/016/ch20lev1sec5.html and this http://www.slideshare.net/laruence/the-php-life-cycle
如果您需要将大量数据实时缓存在内存中(比如无需每次(每次请求)都在数据库中进行查询),您需要使用一些 memory-based 存储来保持持久性代码中的连接。
此外,当您在 php 变量中使用大量数据时要小心,垃圾收集器工作正常但仅适用于 small-time 请求。查看 unset()
表达式,用于强制清理堆。
抱歉英语:)
这取决于您的要求。如果我是你,我会更喜欢 REDIS,它是实时并发数据库的交易破坏者
- 一个空的 redis 实例使用 ~ 1MB 内存。
- 100 万个小键 -> 字符串值对使用 ~ 100MB 内存。
- 100万个Keys -> Hash值,表示一个对象有5个字段,
使用 ~ 200 MB 的内存。(您可以同时拥有 100 万个用户,最少 200 Mb)
以下可以是您的用例
- Real-time publish/subscribe 通知系统
- Real-time 分析后端
- 任务队列和作业系统
- 高分排行榜
我之前开发过 Java 网络应用程序(Spring、Spring Boot),我将大量数据缓存在内存中,以大大提高效率和并发用户数可以支持,但我很难弄清楚 PHP 应用程序如何实现相同的功能?
是否有一种全局方法可以做到这一点,或者是使用会话变量的最佳等效方法?
您可以创建自定义缓存 class 并使用它(单例 class 可能是另一种解决方案)。
PHP 是 single-paged 语言(如果我们谈论的是 WEB)。 看看这个http://php.find-info.ru/php/016/ch20lev1sec5.html and this http://www.slideshare.net/laruence/the-php-life-cycle
如果您需要将大量数据实时缓存在内存中(比如无需每次(每次请求)都在数据库中进行查询),您需要使用一些 memory-based 存储来保持持久性代码中的连接。
此外,当您在 php 变量中使用大量数据时要小心,垃圾收集器工作正常但仅适用于 small-time 请求。查看 unset()
表达式,用于强制清理堆。
抱歉英语:)
这取决于您的要求。如果我是你,我会更喜欢 REDIS,它是实时并发数据库的交易破坏者
- 一个空的 redis 实例使用 ~ 1MB 内存。
- 100 万个小键 -> 字符串值对使用 ~ 100MB 内存。
- 100万个Keys -> Hash值,表示一个对象有5个字段, 使用 ~ 200 MB 的内存。(您可以同时拥有 100 万个用户,最少 200 Mb)
以下可以是您的用例
- Real-time publish/subscribe 通知系统
- Real-time 分析后端
- 任务队列和作业系统
- 高分排行榜