|
知识路径: > 数据库技术 > 数据库技术基础 > 数据库模型 > 典型数据库:RDB(关系数据库)、OODB(面向对象数据库)、ORDB(对象关系数据库)、XML数据库、NoSQL(非关系数据库) > 非关系型数据库NoSQL > NoSQL数据库的种类 > 键值存储 > 键值存储产品 >
|
相关知识点:2个
|
|
|
|
Memcached属于前面分类中的临时性保存类型,是高性能的分布式内存对象缓存系统。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。它和共享内存、APC等本地缓存的区别在于Memcached是分布式的,也就是说它不是本地的。它基于网络连接方式完成服务,本身它是一个独立于应用的程序或守护进程。
|
|
|
Memcached使用libevent库实现网络连接服务,理论上可以处理无限多的连接,但是它和Apache不同,它更多的时候是面向稳定的持续连接的,所以它实际的并发能力是有限制的。Memcached内存使用方式也和APC不同。后者是基于共享内存和MMAP的,Memcached有自己的内存分配算法和管理方式,它和共享内存没有关系,也没有共享内存的限制。
|
|
|
正如所有的NoSQL数据库一样,Memcached也有其特定的应用场合。Memcached常作为数据库前段Cache使用。因为它比数据库少了很多SQL解析、磁盘操作等开销,而且它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能。另外,Memcached也常作为服务器直接数据共享的存储媒介,例如SSO系统中保持系统单点登录状态的数据就可以保持在Memcached中,被多个应用共享。
|
|
|
在实际应用中,通常会把数据库查询的结果集保存到Memcached中,下次访问时直接从Memcached中获取,而不再做数据库查询操作,这样可以在很大程度上减轻数据库的负担。通常会将SQL语句md5()之后的值作为唯一标识符key。下边是一个利用Memcached来缓存数据库查询结果集的示例(此代码片段紧接上边的示例代码):
|
|
|
|
可以看出,使用Memcached之后,可以减少数据库连接、查询操作,数据库负载下来了,脚本的运行速度也提高了。
|
|
|