Memcache
memcache 是一种高性能的、分布式的内存数据库。
memcache 缓存将数据存放在分布式的 memcache 缓存服务器的内存中,memcache 是多台 web 服务器最快的缓存介质。
必须先安装 memcache 服务器 和 php 的 memcache 扩展。
数据的保存位置:memcache 服务器 管理的内存中,可配置多个 memcache 服务器。
作用域:对多台 web 服务器中的项目都有效(必须作好 key 的区分,可以用前缀来区分)。
Memcache 的缺点是:
- 只支持 string 数据类型,数据类型太单一。
- 不支持持久化,数据不能自动备份,重启后,数据就会丢失。
Redis
Redis 也是一种内存数据库,它的功能比 Memcache 更强大。Redis 是单线程的。
必须安装 Redis 服务器和 PHP 的 Redis 扩展。
Redis 支持多种数据类型:string(字符串)、list(链表)、hash(哈希)、set(无序集合)、zset(有序集合)。
Redis 支持两种持久化的机制:
- snapshotting(内存快照),默认方式
- append-only file(日志追加,缩写为aof)
Apc
Apc 的全称是 Alternative PHP Cache,也可用于数据缓存。
必须先安装 php 的 apc 扩展。
Apc 缓存将数据存放在共享内存块中,它是单台服务器最快的缓存介质。
数据的保存位置:当前 web 服务器的共享内存块中。
作用域:对当前 web 服务器中的所有项目都有效(如果单台 web 服务器上有多个项目,必须作好 key 的区分,以防止数据被覆盖)。
MongoDB
MongoDB 是一种分布式的、基于文件存储的数据库。
MongoDB 旨在为 WEB 应用提供可扩展的高性能的数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值对(key=>value)组成。MongoDB 文档类似于 json 对象,字段值可以包含其他文档、数组和文档数组。
MongoDB 是非关系数据库当中功能最丰富,最像关系数据库的。
在以下场景中,可以使用 MongoDB 来存储数据。
- 无事务要求
- 复杂的 JOIN 操作
- 数据模型无法确定
- TB 级别的数据存储
- 地理位置查询
- 杂乱的信息
MongoDB 常常被用来存储应用日志、评论信息、商家的信息(包含地理位置信息)、礼物信息。