1、安装 memcache的扩展:
(1)准备扩展文件,
注意:扩展文件要和php的版本相对应
通过phpinfo()函数查看php的版本

(2)选择拓展下载: https://github.com/nono303/PHP7-memcache-dll

(3)把对应的php-7.3.4_memcache.dll扩展文件,拷贝到php的安装目录的ext目录里面

(4)打开php.ini配置文件,进行配置加载memcache的扩展。

(5)重启apache,通过phpinfo( )函数进行测试,
如果出现如下提示,则证明已经安装成功。

2、入门测试:
添加一个username键,值是hello,不压缩,缓存周期300秒
并获取到了

或者

3、php数据类型探讨存入memcache:
php数据类型有标量和非标量
标量:整型小数型字符串布
非标量:数组资源对象null
(1)标量数据,存储到memcache里面:
说明:如果是标量数据存储到memcache里面,则取出数据时,保持原样类型

(2)非标量数据,存储到memcache里面:

非标量数据:序列化后再存入到memcached服务器中,得到时反序列化工作。
序列化与反序列化过程,是由memcache的扩展完成的,无需我们自己干预。

什么是序列化:
就是在保存数据时,不但保存数据本身,还保存数据类型。
a.利于在网络间进行数据传输
b.便于重新读取并恢复数据
Memcached本身没有数据类型之分(内部都是以字符串的形式处理的)
但是,php是存在数据类型。
总结:除了资源类型之外,其他的类型我们都可以存储,当然一般是存储字符串和数组。
4、案例,缓存sql语句的执行结果:


5、其他问题:
1、memcache里面适合存储哪些数据。
(1)访问比较频繁的数据,安全性差的数据,丢失无所谓的数据。
(2)数据更新,比较频繁的数据,比如用户的在线状态。
(3)数据的单个键值不能太大,不要超过1Mb数据。
2、惰性删除
Lazy Expiration
memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过
期。这种技术被称为lazy(惰性)expiration。
因此,memcached不会在过期监视上耗费CPU时间
3、最近最少使用原则
LRU,least Recently Used,最近最少使用原则。
memcache在插入新数据时,如果空间不足时,采用删除旧缓存项策略,删除最不活跃的缓存项。
4、安全性的问题
在memcache里面,没有设置安全认证机制,因为memache就是专做缓存使用,主要突出缓存优势。
一般情况下,memcache服务器是在内网中的,不会暴露在公网中,因此一些恶意用户就无法操作memcache服务器。
-l 连接的IP地址, 默认是本机
5、缓存雪崩问题
如果在设置缓存周期时,设置的缓存周期都一样,当正好赶上高并发时,如果缓存都同时失效,则会把请求涌向mysql服务器,mysql服务器有可能会出现宕机现象,解决方案,设置不同的缓存周期。