NoSQL中的memcached
来源:互联网 发布:nginx中文 编辑:程序博客网 时间:2024/05/29 16:56
NoSQL中的memcached
什么是NoSQL
NoSQL(NoSQL = Not Only SQL ),意即”不仅仅是SQL”。
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
虽然NoSQL流行语火起来才短短一年的时间,但是不可否认,现在已经开始了第二代运动。尽管早期的堆栈代码只能算是一种实验,然而现在的系统已经更加的成熟、稳定。不过现在也面临着一个严酷的事实:技术越来越成熟——以至于原来很好的NoSQL数据存储不得不进行重写,也有少数人认为这就是所谓的2.0版本。这里列出一些比较知名的工具,可以为大数据建立快速、可扩展的存储库。
一、什么是memcache
你可以把它想象成一张单表
MemCache和MemCached的区别:
1、MemCache是项目的名称
2、MemCached是MemCache服务器端可以执行文件的名称
二、Memcached使用场景
1、非持久化存储:对数据存储要求不高
2、分布式存储:不适合单机使用。尽量不要和数据库放置同一台机器
3、key/value存储:格式简单,不支持List、Array数据格式
安装和启动memcached
安装
1、lnmp一键包环境
cd lnmp1.3-full/./addons.sh uninstall memcached
2、手动安装
【编译】yum install libevent libevent-develwget http://pecl.php.net/get/memcache-2.2.5.tgztar zxvf memcache-2.2.5.tgzcd memcache-2.2.5// 编译安装 要指向你的php安装目录的配置文件./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config make && make install
有可能需要安装
【安装telnet】 yum install telnet-server 安装telnet服务 yum install telnet.* 安装telnet客户端
检查运行的进程
ps -ef | grep memcached
启动
lnmp一键安装包 默认随机启动
#find / -name memcached //找到memcached路径#/usr/local/memcached/bin/memcached -p 11211 -m 64m -c 1024 -u root -d- d 守护进程,默默的在后台运行-l 设置监听的 IP 地址,如果是本机的话,通常可以不设置此参数-p 端口11211-m 设置 memcached 可以使用的内存大小,单位为 M-c 最大运行的并发连接数,默认为1024-u 指定用户,如果当前为 root 的话,需要使用此参数指定用户
MemCache指令
PHP结合memcached实例
//包含 memcached 类文件require_once('memcached-client.php');//选项设置$options = array( 'servers' => array('192.168.1.1:11211'), //memcached 服务的地址、端口,可用多个数组元素表示多个 memcached 服务 'debug' => true, //是否打开 debug 'compress_threshold' => 10240, //超过多少字节的数据时进行压缩 'persistant' => false //是否使用持久连接 );//创建 memcached 对象实例$mc = new memcached($options);//设置此脚本使用的唯一标识符$key = 'mykey';//往 memcached 中写入对象$mc->add($key, 'some random strings');$val = $mc->get($key);echo "n".str_pad('$mc->add() ', 60, '_')."n";var_dump($val);//替换已写入的对象数据值$mc->replace($key, array('some'=>'haha', 'array'=>'xxx'));$val = $mc->get($key);echo "n".str_pad('$mc->replace() ', 60, '_')."n";var_dump($val);//删除 memcached 中的对象$mc->delete($key);$val = $mc->get($key);echo "n".str_pad('$mc->delete() ', 60, '_')."n";var_dump($val);
做数据库查询缓存
$sql = 'SELECT * FROM users';$key = md5($sql); //memcached 对象标识符if ( !($datas = $mc->get($key)) ) { //在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。 echo "n".str_pad('Read datas from MySQL.', 60, '_')."n"; $conn = mysql_connect('localhost', 'test', 'test'); mysql_select_db('test'); $result = mysql_query($sql); while ($row = mysql_fetch_object($result)) $datas[] = $row; // 将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。 $mc->add($key, $datas);} else { echo "n".str_pad('Read datas from memcached.', 60, '_')."n";}var_dump($datas);
阅读全文
1 0
- NoSQL中的memcached
- NOSQL-Memcached
- NoSQL之【memcached】学习
- NoSQL类型之memcached
- NoSQL之Memcached
- Nosql数据库-memcached
- NoSQL之Memcached
- NoSQL:memcached操作
- NoSQL to MySQL with Memcached
- 九、NOSQL与缓存系统-Memcached
- nosql :mongodb redis memcached 的应用场景
- NoSQL数据库浅析(一):Redis和Memcached
- 企业中的NoSQL
- 企业中的NoSQL
- NOSQL中的Key_value模型
- nosql中的index
- NoSQL 中的 CAP 原理
- [转]企业中的NoSQL
- Floyd-Warshall算法求矩阵的传递闭包
- 引发的异常:“System.FormatException"
- bootstrap中的样式分类
- Node.js 写入文件流的缓存问题探讨
- git 积累
- NoSQL中的memcached
- Java_基础—File类的概述和构造方法
- Python爬虫-urllib库
- destoon新手二次开发标签调用
- spring丶@produces注解-作用解答
- Java新手-抽象方法与权限修饰符
- Hbase shell 的使用
- 23种设计模式(12):策略模式
- 平均数