mcached 是一个高性能的分布式内存
对象缓存系统,用于动态Web应用以减轻数据库
负载。它通过在内存
中缓存数据和对象来减少读取数据库
的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程
(daemon )是用C写的,但是客户端
可以用任何语言来编写,并通过memcached协议与守护进程通信。
Memcached 是由Danga Interactive公司开发的开源软件,属于临时性键值存储类的NOSQL数据库(官网:www.memcached.org).
1.优缺点:
临时性键值存储类的NOSQL数据库特点在于将数据库直接存储在内存中,速度上可提升10至100万倍(内存与硬盘保存速度差)!同理,因其临时性,同样存在缺点一但Memcached关闭后数据容易丢失。
2.Nosql介绍
传统的关系型数据库缺点在于“大量数据的写入、更新”,“字段不固定时,修改表结构麻烦”,在此基础上提出NOSQL数据库,目前统计已有的NOSQL数据已达133种之后,主要为为三类:
2.1键值存储型:2.1.1 临时键值存储:memcached、Redis2.1.2 永久键值存储:Flare、Tokyo Tyrant、 Roma、Redis(两种都支持)2.2面向文档的数据库MongoDB、CouchDB,此类的特点在于不定义表结构、可能通过复杂的查询条件检索数据。2.3面向列的数据库Hbase 、Cassandra、HyperTable等,此类的特点在于高拓展性,特别是针对大量数据的写入操作
3.特点:
3.1 数据结构:Memcached是通过散列表(关联数组)来存储各类格式的键值存储,所有的数据都被保存在内存中。
3.2 通信方式:使用简单的文本协议进行通信,数据操作也只是类似保存和删除与键对应的值这样的简单操作。
3.3 数据的存储方式:
因其使用了文本协议通信,要完成这样的处理就要将数据转化成序列化的字节(Byte)数组。在保存时序列化,读取是反序列化。
3.4 优势
3.4.1高速
3.4.2 易学易用:使用散列表存储,用过Java中Map的基本马上掌握。
3.4.3 技术相对成熟:经过几年的应用,资料齐全。
3.4.5 一致性散列:这个方式在多台服务器的情况下,首先对各服务器对应的散列值进行计算,把它们配置在一个圆周上,同时对各数据的对应的KEY的散列进行计算,键列值出发沿圆周向右,由距离该散列最近的服务器负责处置这条数据。适用分布式应用。
3.5 不足
3.5.1 数据临时性,关闭后数据丢失。
3.5.2 只能通过指定键读取数据,无法使用LIke模糊查询,如查询key为"dingzeqi"的数据时,只能完全匹配“dingzeqi”时才能取出数据。