memcache

nosql 非关系型数据库 数据之间无关系,能够随意扩展 数据存储简单,能够存在内存中,无需见表,字段,也能够随时存储自定义格式,
常见的关系型数据库 mysql oracle sqlserver 该数据麻烦。联合查询慢,锁表。php



常见的非关系型数据库:nosql
键值数据库:redis,memcached, 适合存储用户信息,riak
面向文档数据库:mongoDB 将文件以文档形式存储 couchDB ravenDB
列存储数据库:cassandra  HBase
图数据库:orientDB
yum -y install memcached libevent libmemcached
memcached 经过缓存数据库来查询结果 11211    数据存放在内存中,支持的数据类型较少
-d 启动一个进程守护
-m 是分配给memcache使用的内存数量
-u 是运行memcache的用户,若是当前用户为root,须要此参数指定用户
-l 监听服务器的ip地址 能够在vi /etc/sysconfig/memcached中的options中指定==options=“-l 127.0.0.1”
-p 设置memcache监听的端口
-c 设置最大并发的链接数
-P 设置保存memcache的pid文件
查看memcached的运行状态。
memcached-tool 127.0.0.1:11211 stats
echo stats |nc 127.0.0.1 11211 须要手工安装nc
memstat --servers=127.0.0.1:11211
vi /etc/sysconfig/memcached下修改以上属性
memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
数据不持久性mysql


telnet 127.0.0.1 11211 用于测试数据
set   get  gets   replace=cas   delete  stats items    stats+cachedump+slab+数量
stats slabs       stats sizes      stats reset
append 在现有的数据以后加   prepend  在现有的数据以前加  flush_all 使已经存在的项目失效redis


cas即checked and set的意思,只有当最后一个参数和gets所获取的参数匹配时才能存储,不然返回“EXISTS”。时间是永不过时的参数。
gets命令比普通的get命令多返回了一个value值。这个数字能够检查数据是否发生改变。当key对应的数据改变时
这个多返回的数字也会改变。 改变现有chunks中的数据sql


stats 查看数据状态数据库


stats items
执行stats items,能够看到STAT items行=slab_id,若是memcached存储内容不少,那么这里也会列出不少的STAT items行
stats cachedump slab_id limit_num(0) ‘0’表示显示全部的记录
这里slab_id为1,是由2中的stats items返回的结果(STAT items后面的数字)决定的;limit_num看起来好像是返回多少条记录,猜的一点不错, 不过0表示显示出全部记录,而n(n>0)就表示显示n条记录,若是n超过该slab下的全部记录,则结果和0返回的结果一致。apache


append 在现有的缓存数据后添加缓存数据,如现有缓存的key不存在服务器响应为NOT_STORED缓存


prepend 它的做用是在现有的缓存数据前添加缓存数据
flush_all 它的做用是使已存在的缓存失效
语法规则:
命令名(set add replace delete)命名  标记  过时时间 大小服务器


数据过时方式
Lazy Expiration
 memcached 内部不会监视记录是否过时,而是在get时查看记录的时间戳,检查记录是否过时。这种技术被称为lazy(惰性)expiration。所以,memcached不会在过时监视上耗费CPU时间。
LRU
 memcached会优先使用已超时的记录的空间,但即便如此,也会发生追加新记录时空间不足的状况,此时就要使用名为Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。所以,当内存空间不足时(没法从slab class slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想。session


php链接memcached校验
安装memcache模块
php链接使用memcached
首先须要安装php的memcache扩展
可使用php自带的pecl安装程序
# /usr/local/php/bin/pecl install memcache
也能够从源码安装     
# wget  http://www.lishiming.net/data/p_w_upload/forum/memcache-2.2.3.tgz
 # tar zxf memcache-2.2.3.tgz
 # cd memcache-2.2.3
 # /usr/local/php/bin/phpize   如没有./configure这个项 需安装yum -y install autoconf软件  如yum 安装php没有phpize选项则安装php-devel 
 # ../configure --with-php-config=/usr/local/php/bin/php-config
 # make && make install
安装完后会有相似这样的提示:
Installing shared extensions: /usr/local/servers/php5/lib/php/extensions/no-debug-non-zts-20060922/
把这个记住,而后修改vi /usr/local/php/bin/etc/php.ini,把
extension_dir = "./"
修改成
extension_dir = "/usr/local/servers/php5/lib/php/extensions/no-debug-non-zts-20060922/"
并添加一行
extension="memcache.so"
检验
# /usr/local/php/bin/php -m
测试php脚本
wget www.apelearn.com/study_v2/.memcache.txt >1.php 2>/dev/null
/usr/local/php/bin/php 1.php并发

memcached实现session的共享1在php.ini中实现session.save_handler="memcache"session.save_path="tcp://127.0.0.1(远端服务器ip):11211"2在apache虚拟配置文件中实现php_value session.save_handler "memcache"php_value session.save_path  "tcp://127.0.0.1(远端服务器ip):11211"3在php-ftp.conf对应的pool中添加php-value[session.save_handler]=memcachephp-value[session.save_path]="tcp://127.0.0.1(远端服务器ip):11211"下载测试文件wget http://study.lishiming.net/.mem_se.txt

相关文章
相关标签/搜索