什么是NoSQL

非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里, 查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗费时间和资源,尤其是数据是需要从磁盘里去检索 NoSQL数据库存储原理非常简单(典型的数据类型为key-value),不存在繁杂的关系链, 比如mysql查询的时候,需要找到对应的库、表(通常是多个表)以及字段。NoSQL数据可以存储在内存里,查询速度非常快 NoSQL在性能表现上虽然能优于关系型数据库,但是它并不能完全替代关系型数据库 NoSQL因为没有复杂的数据结构,扩展非常容易,支持分布式.

常见的NoSQL

key-value形式的:memcached、redis: 适合储存用户信息,比如会话、配置文件、参数、购物车等等。 这些信息一般都和ID(键)挂钩,这种情景下键值数据库是个很好的选择。 文档数据库:mongodb 将数据以文档的形式储存。每个文档都是一系列数据项的集合。 每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等; 也可以是复杂的类型,如有序列表和关联对象。 数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的, 数据可以使用XML、JSON或者JSONB等多种形式存储。 列存储:Hbase 图:Neo4J、Infinite Graph、OrientDB

Memcached简介

Memcached是国外社区网站LiveJournal团队开发 目的是为了通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能。 官方站点:http://www.memcached.org/  数据结构简单,数据存放在内存里,基于c/s架构,协议简单,支持多线程 基于libevent的事件处理 自主内存存储处理(slab allowcation) 数据过期方式:Lazy Expiration 和 LRU

Memcached原理

用户第一次请求访的时候,web从数据库获取数据, 返回给用户的同时存储在memcached中, 当用户下一次请求相同的数据的时候,就会直接从memcached中读取相关数据,从而减少数据库的压力

Slab Allocation

Slab Allocation的原理 将分配的内存分割成各种尺寸的块(chunk) 并把尺寸相同的块分成组(chunk的集合) 每个chunk集合被称为slab。 Memcached的内存分配以Page为单位 Page默认值为1M,可以在启动时通过-I参数来指定。 Slab是由多个Page组成的,Page按照指定大小切割成多个chunk。

NOSQL之memcached

Growth factor

Memcached在启动时通过-f选项可以指定 Growth Factor因子。该值控制chunk大小的差异。默认值为1.25。 通过memcached-tool命令查看指定Memcached实例的不同slab状态, 可以看到各Item所占大小(chunk大小)差距为1.25 命令:# memcached-tool 127.0.0.1:11211 display

Memcached的数据过期方式

Lazy Expiration  Memcached 内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。 这种技术被称为lazy(惰性)expiration。 因此,Memcached不会在过期监视上耗费CPU时间。

LRU Memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况, 此时就要使用名为Least Recently Used(LRU)机制来分配空间。 顾名思义,这是删除“最近最少使用”的记录的机制。 因此,当内存空间不足时(无法从slab class获取到新的空间时), 就从最近未被使用的记录中搜索,并将其空间分配给新的记录。 从缓存的实用角度来看,该模型十分理想。

安装Memcached

NOSQL之memcached

2:源码安装

NOSQL之memcached

NOSQL之memcached

修改后的启动脚本内容

NOSQL之memcached

NOSQL之memcached

启动memcached

NOSQL之memcached

查看memcached运行状态

NOSQL之memcached

memcached命令行操作

NOSQL之memcached

memcached命令行语法规则

NOSQL之memcached

memcached数据示例

NOSQL之memcached

Memcached数据的导出和导入

NOSQL之memcached

NOSQL之memcached

NOSQL之memcached

PHP连接Memcached

安装php的memcache扩展

NOSQL之memcached

PHP连接Memcached

NOSQL之memcached

Memcached中存储session

配置修改

NOSQL之memcached

测试效果

NOSQL之memcached

 

 

 

 

 

 

相关文章: