1,Memcache 的简介

1,memcache是什么 memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负担。它通过在内存中缓存数据和对象,来减少读取数据库的次数。从而提高动态、数据库驱动网站速度。 操作流程: 1-1,检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作,路径操作为①②③⑦。 1-2,如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现),路径操作为①②④⑤⑦⑥。 1-3,每次更新数据库的同时更新memcached中的数据,保证一致性。 1-4,当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。 2,memcache服务端与客户端的安装部署(https://www.cnblogs.com/bill2014/p/7611642.html) 3,安装memcahced服务 yum install libevent wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz tar -zxf memcached-1.2.0.tar.gz cd memcached-1.2.0 ./configure make && make install 4,memcache 的科学启动和关闭 [root@192 ~]# memcached -p 11212 -u root -m 16m -c 10240 -d -P /var/run/11212.pid [root@192 ~]# kill `cat /var/run/11211.pid` 5,安装memecache客户端 安装PHP的memcache扩展 tar vxzf memcache-2.2.1.tgz cd memcache-2.2.1 /usr/local/php/bin/phpize ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir make make install 因为配置客户端所以要配置php.ini文件: 把php.ini中的extension_dir = "./"修改为 "extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/" 添加一行来载入memcache扩展:extension=memcache.so 再重启php。就可以了。 6,memcached如何实现集群中的session共享存储 默认php.ini中session的类型和配置路径: #session.save_handler = files #session.save_path = "/tmp" 修改成如下配置: session.save_handler = memcache session.save_path = "tcp://10.0.0.18:11211" 提示: 6-1,10.0.0.18:11211 为memcached数据库缓存的IP及端口。 6-2,上述适合LNMP,LAMP环境。 6-3,memcached服务器也可以是多台通过hash调度。 7,memcached服务的状态信息如何获取?例如:命中率 多实例启动,直接改端口启动就可以了。 1、数据存储(key为kk,value为123) printf 'set kk 1 0 4\r\n1234\r\n' | nc 127.0.0.1 11264 2、数据取回 printf 'get kk\r\n' | nc 127.0.0.1 11264 3、替换数据(将以kk为key存储的值替换为122) printf 'replace kk 1 0 4\r\n2345\r\n' | nc 127.0.0.1 11264 4、数值增加 1 printf 'incr 1\r\n' | nc 127.0.0.1 11264 5、数值减少 2 printf 'decr 2\r\n' | nc 127.0.0.1 11264 6、数据删除 printf 'delete kk\r\n' | nc 127.0.0.1 11264 7、查看Memcached当时状态 printf "stats/r/n" | nc 127.0.0.1 11264 8、查看Memcached实时状态 watch "printf 'stats/r/n' | nc 127.0.0.1 11264" 总结: 1,其实很简单,memcache是php的一个扩展,用于php管理memcached(服务端) 2,如果安装了memcached(服务端)不安装扩展,那么php无法操控memcached,但是命令行使用起来没有问题 3,如果安装了PHP memcache客户端(php memcache和php memcached)。但是没有安装memcached(服务端)服务,那么这个就无法使用 4,只有同时安装了memcached(服务端)和PHP memcache客户端扩展才可以提高动态网站性能 9、 MemAdmin - 轻量级Memcached管理监控工具(http://www.junopen.com/memadmin/) 1,Memcached是什么? Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。 2,Memcached服务在企业集群架构中应用场景 作为数据库的前端缓存应用 a、完整缓存(易),静态缓存 例如:商品分类(京东),以及商品信息,可事先放在内存里,然后再对外提供数据访问,这种先放到内存,我们称之为预热,(先把数据存缓存中),用户访问时可以只读取memcached缓存,不读取数据库了。 b、执点缓存(难) 先预热数据库里的基础数据,然后在动态更新,先读取缓存,如果缓存里没有对应的数据,程序再去读取数据库,然后程序把读取的新数据放入缓存存储。 特殊说明 : 1、如果碰到电商秒杀等高并发的业务,一定要事先预热,或者其它思想实现,例如:称杀只是获取资格,而不是瞬间秒杀到手商品。 那么什么是获取资格? 就是在数据库中,把0标成1.就有资格啦。再慢慢的去领取商品订单。因为秒杀过程太长会占用服务器资源。 2、如果数据更新,同时触发缓存更新,防止给用户过期数据。 c、对于持久化缓存存储系统,例如:redis,可以替代一部分数据库的存储,一些简单的数据业务,投票,统计,好友关注,商品分类等。nosql= not only sql


浙公网安备 33010602011771号