NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区NoSQL与NewSQL数据库引航第2课NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区Memcached项目临时性键值存储NoSQL数据库,简单而有力过去被大量使用在互联网网站中,作为应用和数据库之间的缓存层DangaInteractive公司开发,最初为了加速LiveJournal访问速度而开发,后来成为广泛应用的开源项目官网:与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区速度即体验等待让人焦虑,严重影像体验Google:响应延迟0.5秒,查询数减少20%亚马逊:响应延迟0.1秒,营业额下降1%ITPUBNoSQL为速度而生3NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区Memcached的特点全内存运转哈希方式存储简单文本协议进行数据通信只操作字符型数据其它类型数据由应用解释,序列化以及反序列化集群也由应用进行控制,采用一致性散列(哈希)算法4NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区一致性哈希5NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区增删节点6NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区安装memcachedCentOS下的安装7NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区安装memcached8NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区启动memcached9NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区启动memcached10NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区监听端口11缺省为11211NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区telnet测试12NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区数据保存时的参数setkeyflagexpiresbyteFlag用于指定是否压缩数据,0不压缩,1压缩Expires指定数据保存的时间,一种方法是秒数(不能超过30天),另一种可以使用unix时间戳指定,0为有效期无限Byte保存值的字节数13NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区其它操作14NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区其它操作15NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区安装ruby16NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区安装rubygems17NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区安装程序库memcache-client18NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区运行一小段ruby程序测试$KCODE='u'requirerubygemsrequirememcacheserver=['localhost:11211']option={}cache=MemCache.new(server,option)cache['key1']=123cache['key2']=ABCDEcache['key3']=%w(hogefuga)cache['key4']={:foo=1,:bar=a}pcache['key1']pcache['key2']pcache['key3']pcache['key4']19NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区用telnet看个究竟20NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区在ruby程序中设置过期时间requirerubygemsrequirememcachecache=MemCache.new(['localhost:11211'])cache.set('key','value',10)pcache['key']sleep11pcache['key']21NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区启动多个节点memcachedmemcached-d-p11212-unobody-c1024-m64memcached-d-p11213-unobody-c1024-m6422NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区用Ruby测试多个memcached节点$KCODE='u'requirerubygemsrequirememcacherequireloggerserver=['localhost:11211','localhost:11212','localhost:11213']option={:logger=Logger.new(STDOUT)}cache=MemCache.new(server,option)cache['key1']=123cache['key2']=ABCDEcache['key3']=%w(hogefuga)cache['key4']={:foo=1,:bar=a}pcache['key1']pcache['key2']pcache['key3']pcache['key4']23NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区运行结果24NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区模拟失去一个节点requirerubygemsrequirememcacherequireloggerserver=['localhost:11212','localhost:11213']option={:logger=Logger.new(STDOUT)}cache=MemCache.new(server,option)cache['key1']=123cache['key2']=ABCDEcache['key3']=%w(hogefuga)cache['key4']={:foo=1,:bar=a}pcache['key1']pcache['key2']pcache['key3']pcache['key4']25NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区结果26NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区传递参数列表27NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区Memcached在各种语言下的库28NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区充当数据库缓存应用访问数据库前,首先看看在memcache中有没有key为该SQL语句如果有,取其value当作查询结果,这样可以减少对数据库的访问压力如果没有,则访问数据库,同时把取回的结果(value)和相应的SQL语句(key)放进memcached29NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区高可用方案repcachedwget=s/memcached/repcached/makemakeinstall30NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区启动repcached/usr/local/bin/repcached-p11211–v/usr/local/bin/repcached-p11212-xlocalhost-v–d不要用root身份运行31NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区复制实验32NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区反方向复制实验33NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区监控memcached34NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区应用Dataguru的配置文件与后台35NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区作为关系数据库缓存的实验代码佐佐木达也书P10436NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区memcached.org37NoSQL与NewSQL数据库引航讲师黄志洪DATAGURU专业数据分析社区低成本获取高端知识技术成就梦想炼数成金edu.dataguru.cnDATAGURU专业数据分析网站FAQ时间