3、使用php来操作memcache

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服务器有可能会出现宕机现象,解决方案,设置不同的缓存周期。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容