千家信息网

memcached笔记

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,趁周末宅在家有时间,对memcached做个备忘笔记吧,总结一下,也给大家提供一个参考。有误解的地方,也请大家给我指正。1、Memcached:一套利用系统内存进行数据缓存的软件,常用于动态的web集
千家信息网最后更新 2026年11月03日memcached笔记

趁周末宅在家有时间,对memcached做个备忘笔记吧,总结一下,也给大家提供一个参考。有误解的地方,也请大家给我指正。


1、Memcached:一套利用系统内存进行数据缓存的软件,常用于动态的web集群系统后端,数据库前端。临时缓存web系统查询过的数据库数据,当用户第一次访问查询时,通过数据库查询返回结果到客户端同时也以key/value形式缓存一份到memcached,第二次访问查询相同的数据的时候,优先通过memcached查询,直接由memcached提供服务,从而减少了对后端数据库的访问次数,减轻压力。


2、Memcached:存在的意义,提高访问速度(查询比mysql快得多),提升用户体验,减轻后端数据库的访问压力。


3、Memcached性质:以key/value形式缓存数据,重启服务器后数据会丢失,不可持久性存储。


4、Memcached运行原理:通过在事先规划好的系统内存空间中临时缓存数据库中的各种数据,以达到减少前端业务服务对数据库的直接高并发访问,从而提升大规模网站集群动态服务的并发能力。


5、数据更新时,如何保证数据的一致性?

在数据更新或者删除时,会首先处理后端数据库中的数据,同时也会通知memcached对应的旧数据已失效,更新缓存先的数据。两种方式:1、有web程序来通知更新(推荐)2、如果是高并发的,防止第一次访问时对后端数据库造成非常大的压力,可以通过相关机制(如在数据库中设置出发使用UDFs)实现当数据库有数据更新时,预先更新一份到memcached中,这样web程序第一次请求时就能从memcached中命中新的数据,减轻对后端数据库的访问压力。


这里介绍第一种:直接用网站程序负责更新memcached缓存。


6、数据预热:即是业务上线前,先将一些商品分类功能不需要经常变动的数据事先更新到memcached中,再开放前端页面的请求,第一次访问就能命中。


7、可以作为集群及诶单的session会话共享存储。

8、可支持分布式集群缓存。由于每台memcached系统缓存的数据都不一样的,做集群的时候需要通过web程序设计或者通过支持hash算法、一致性哈希算法实现分布式memcached设置,让同一个来源用户的访问IP,访问时都指向到同一台memcached,提高命中率。

9、内存管理机制:

采用slab内存分配机制:即事先分配好指定大小的内存空间的内存块chunks,接收到数据的时候,直接存进去,速度很快。优点:不会产生内存碎片。缺点:会导致浪费内存空间,如果预先划分的内存可以放112个字节,存放了一个100字节的数据。就会浪费了12字节空间的内存。如此就需要开发人员根据自己的业务数据来规划,划分适合大小的内存块,一定程度上可以解决内存空间。还有另一种机制malloc,动态划分内存空间,但是需要去计算大小再划分内存块最后再存放数据,速度上会慢很多,还会产生内存碎片。

采用LRU对象清除机制。

采用hash机制快速检索item。


10、memcached懒惰检测对象和懒惰删除对象机制。


memcached程序:有服务端以及客户端两个程序。服务端安装在memcached独立的缓存服务器系统中,客户端安装在web程序(java、php等应用程序同服务器中),客户端实际上解压出来就是一个软件库文件,php通过编译加载memcached模块,然后通过php.ini配置文件指定memcached的软件库文件,通过这个客户端的memcached软件库文件跟服务端通信。

11、memcached服务端软件安装

wget http://www.memcached.org/files/memcached-1.4.20.tar.gz

libevent-2.0.20-stable.tar.gz

memcached-1.4.20.tar.gz

tar zxvf memcached-1.4.20.tar.gz
cd memcached-1.4.20
./configure --prefix=/usr/local/memcached-1.4.20 --with-libevent=/usr/local/libevent-2.0.20/
make
make install
ls -al /usr/local/memcached-1.4.20/bin | grep memcached

启动命令:

/usr/local/memcached-1.4.20/bin/memcached -m 128m -p 11211 -d -u root
把启动项写在rc.local

vi /etc/rc.local

/usr/local/memcached-1.4.20/bin/memcached -m 128m -p 11211 -d -u root

可以通过不用的端口来同时启动多个实例。


12、memcached动作:通过set命令设置写入数据,通过get命令获取数据,通过delete命令删除数据。

可以使用telnet ip 端口 还有nc命令设置memcached


13、memcached客户端安装(以php为例)

#wget http://pecl.php.net/get/memcache-2.2.7.tgz

#tar -zxvf memcache-2.2.7.tgz

#cd memcache-2.2.7

#/usr/local/php/bin/phpize (php的安装目录)

#./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config

#make &&make install

最后提示你在Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/目录下面生成了模块的库文件memcache.so

14、配置memcached客户端使其生效:配置vim php.ini 添加下面两行

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20100525/"

extension = memcache.so

或者

extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/memcache.so

通过/usr/local/php/bin/php -m查看模块是否生效。

15、memcached 管理:通过telnet ip port 方式直接登录memcached或通过nc监控和管理。


16、客户端页面管理memcached:通过安装memadmin php工具在界面上管理memcached


17、分布式memcached缓存集群的调度算法:1、取模计算hash 2、Consistent hash 一致性哈希算法(推荐)

18、由于memcached是利用内存临时性缓存数据,重启后会丢失。可以使用加强版的MemcachedDB兼容持久化工具,缓存的同时也将数据放到磁盘。或者使用redis数据库进行持久性存储。

数据 内存 数据库 缓存 服务 客户 程序 更新 客户端 机制 空间 系统 集群 查询 命令 软件 管理 压力 同时 库文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会主任 互联网科技工作委员会毛军 科技互联网公司装修 卓越科技(互联网 ) 迪茉互联网科技 奇酷互联网络科技公司 易通互联网络科技有限公司 互联网科技网站 互联网科技英文翻译 深圳国际航运科技和互联网 温州喔噻互联网科技有限公司 福州新华互联网科技学校 知乎 互联网数据科技专业 区块链结合互联网科技 上海科技产业互联网平台 中国互联网有什么科技 厦门江牛科技互联网 本届互联网大会上的黑科技 科技互联网公司两年变化 互联网企业和网络科技有限公司 亿策互联网科技 广西拼得多互联网科技有限公司 受益于互联网科技的高速发展 中国互联网公司排名锤子科技 互联网科技圈年度人物 上海互联网科技公司ppt 风投北京互联网科技 半导体行业属于互联网高科技类吗 美国五大互联网科技公司市值多少 互联网科技企业文化
0