1. memcache是什么
memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负担。它通过在内存中缓存数据和对象,来减少读取数据库的次数。从而提高动态、数据库驱动网站速度。
memcache通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。memcache主要用于分担数据库负的压力,memcache将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
memcache是这个项目的名称,而memcached是它服务器端的主程序文件名。
2.操作流程:
1、检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作,路径操作为①②③⑦。
2、如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现),路径操作为①②④⑤⑦⑥。
3、每次更新数据库的同时更新memcached中的数据,保证一致性。
4、当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。
3. memcache使用场景:
(1) 访问频繁的字典数据
(2) 大量的hot数据
(3) 页面缓存
(4) 频繁的查询条件和结果
(5) 临时处理的数据
server1中:
cd ~
vim .bash_profile
第10行:PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/lnmp/php/bin
source .bash_profile
真机中:
scp /home/westos/Desktop/memcache-4.0.5.2.tgz root@172.25.70.1:/root
ab -c 10 -n 1000 http://172.25.70.1/index.php
server1中:
ls
tar zxf memcache-4.0.5.2.tgz
cd memcache-4.0.5.2/
ls
phpize
yum install -y autoconf.noarch
phpize
ls
./configure --enable-memcache
make
make install
cd /usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20190902/
cd /usr/local/lnmp/php/etc
ls
vim
第895行取消注释改为:
systemctl reload php-fpm
php -m | grep memcache
cd ~
cd memcache-4.0.5.2/
ls
cp example.php memcache.php /usr/local/nginx/html/
cd /usr/local/nginx/html/myadmin/
cd ..
ls
yum install -y memcached
systemctl start memcached
netstat -antlp | grep :11211
cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
火狐中检测:http://172.25.70.1/example.php
server1中:
ls
vim memcache.php
第23行改为:define('ADMIN_PASSWORD','westos'); // Admin Password
第28行改为:$MEMCACHE_SERVERS[] = 'localhost:11211'; // add more as an array
注释掉第29行
火狐中:http://172.25.70.1/memcache.php
用户:memcache 密码:westos
真机中: ab -c 10 -n 1000 http://172.25.70.1/example.php