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


 

 

posted @ 2020-09-08 21:16  pwcc  阅读(161)  评论(0)    收藏  举报