企业架构LNMP学习笔记45

失效机制(了解)

1)如果key过期了,value会及时删除么?空间会及时清理么?

2)如果分配的存储空间,写满了,还允许写么?

-m可以配置内存大小。

memcached 内部不会监视记录是否过期,而是在 get时查看记录的时间戳,检查记录是否过期。 这种技术被称为lazy(惰性)expiration。 因此,memcached 不会在过期监视上耗费 CPU 时间比如php的里session机制 懒惰机制 php垃圾回收机制 gc回收 python 变量垃圾回收机制

编程语言中,变量分配 栈空间(变量名称) 堆空间(变量值)

memcached1.4.25之后 就不是懒惰机制了。

当前时间和存储时间,这个差值来判断是否过期。

LRU:

memcached 会优先使用已超时的记录的空间 ,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除"最近最少使用" 的记录的机制。因此,当 memcached 的内存空间不足时,就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想

不过,有些情况下 LRU 机制反倒会造成麻烦。memcached 启动时通过"M"参数可以禁止 LRU

不够存的情况,加大缓存和加大内存。

单机可以增加到768G的内存。服务器就是这个样子。散热好。内存条、金手指。

正常的服务器都是32G内存。

需要加内存,-m进行添加。

php使用memcached:

php扩展安装:

在LNMP架构中,如果需要使用到memcached。首先需要安装对应的扩展,php7以上需要安装memcached扩展。

在实际的使用过程中,我们不会直接使用set和get命令直接操作memcached。

官方扩展地址:http://pecl.php.net/

1)上传PHP扩展源码包:

需要在web服务器的上安装,server01和server03

memcached-3.1.3.tgz php扩展 依赖libmemcached1.x以上版本。

yum安装的libmemcached依赖版本太低,不能够满足php扩展的依赖需要,需要手动源码编译安装libmemcached。

2)解压编译安装:

bash 复制代码
# 先解决libmemcached的依赖
yum install -y libmemcached-devel


# 编译安装php的memcached扩展
tar -zxvf memcached-3.2.0.tgz
cd memcached-3.2.0.tgz
#扩展源码包和php关联生成configure文件  
#如果执行找不到phpize,说明之前没有给php安装目录bin目录配置环境变量,重新配置即可
phpize
.configure --disable-memcached-sasl
make && make install

找不到phpize,配置环境变量的方法。

老师在安装libmemcached的版本太低了。

如果php-memcached的版本是3.x,那么libmemcached的版本要1.x版本或者更高。

我这边检查了下,我这边的版本:

bash 复制代码
[root@server01 soft]# rpm -qa libmemcached-devel
libmemcached-devel-1.0.16-5.el7.x86_64

编辑下php.ini

bash 复制代码
vim /usr/local/php/etc/php.ini

我这边还遇到一个问题。发现最新的memcached-3.2.0版本是有问题的。

重新安装老师的版本memcached-3.1.3就正常了。那先老师的版本走,暂时不用最新的版本。

那这个地方可以写一个脚本:

bash 复制代码
#!/bin/bash
#安装memcached的php扩展
#1、解决依赖
tar xvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached && make && make install
#2、安装编译php-memcached
cd /root/soft
tar xvf memcached-3.1.3.tgz
cd memcached-3.1.3
#注意一定php是已经配置环境变量的/usr/local/php/bin
phpize
./configure --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl&& make && make install
#配置php.ini
sed -i "868c extension=memcached.so" /usr/local/php/etc/php.ini

在server03的机器上通过脚本把memcached的版本进行了安装。

检测扩展:

方法一:通过php-fpm调用查看php所加载的依赖模块:

bash 复制代码
php -m |grep memcached

方法二:通过web页面访问phpinfo:

server01和server02两台机器都能在phpinfo页面上看到memcached的模块信息。

相关推荐
Ztopcloud极拓云视角25 分钟前
ChatGPT超级应用改版技术解析:Codex集成架构与多模型路由实战
人工智能·chatgpt·架构
逻极11 小时前
Hermes Agent深度探索:一个会自我沉淀经验的终端智能体
架构·llm·agent·rag·多智能体系统·hermes agent·hermes
数智顾问11 小时前
(151页PPT)XX集团信息化整体架构规划及ERP方案建议书(附下载方式)
大数据·架构
caimouse11 小时前
Reactos 第1章 概述
c语言·开发语言·架构
namexingyun12 小时前
拆解Fable 5三重安全护栏:模型路由、蒸馏防护与生物安全分类器的技术原理 - 微元算力(weytoken)
java·人工智能·python·安全·架构·ai编程
小短腿的代码世界12 小时前
行情快照与增量更新引擎:Qt在高频交易数据分发中的核心架构——你的行情推送为什么延迟了500ms?
开发语言·qt·架构
上海云盾第一敬业销售12 小时前
高效阻止网站攻击的WAF防护架构解析
web安全·架构·ddos
意图共鸣12 小时前
意图共鸣科技《AI记忆链商业化白皮书3.0》假设场景解析:从母亲到消防员,专属AI如何重塑记忆与传承
人工智能·科技·架构
FPGA小徐12 小时前
Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程
fpga开发·架构
王二端茶倒水12 小时前
智慧小区宽带无线运营:从网络交付到认证、计费与运维闭环
运维·物联网·架构