3.1.4 Memcached的简单使用过程

本文介绍了Memcached的特征及工作原理,并通过Perl的Cache::Memcached模块演示了如何连接、存储、检索及管理缓存数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》第3章Memcached应用实战,本章主要介绍Memcached的特征、运行原理和使用经验。Memcached是一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,进而提升系统性能。本节为大家介绍Memcached的简单使用过程。


3.1.4 Memcached的简单使用过程

前面已经提到过,许多语言都实现了Memcached的客户端,目前应用最多的是通过Perl、PHP实现对Memcached的操作。这里以Perl的Cache::Memcached为例简要说明使用Memcached的过程。Perl的Cache::Memcached在CPAN上对应的地址为:http://search.cpan.org/dist/CacheMemcached/

通过Cache::Memcached连接Memcached的示例代码如下:

 
  1. #!/usr/bin/perl  
  2.  
  3. use Cache::Memcached;  
  4.  
  5. my $key = "test";  
  6. my $value = "HelloWorld!";  
  7. my $expires = 120;  
  8. my $memcached = Cache::Memcached->new({  
  9. servers => ["127.0.0.1:11211"],  
  10. compress_threshold => 100  
  11. });  
  12. $memcached->add($key, $value, $expires);  
  13. my $return = $memcached->get($key);  
  14. print "$return\n"; 

Cache::Memcached的常用选项如下:

servers,用数组指定连接Memcached服务器的IP地址和端口号。

compress_threshold, 启用数据压缩时使用的值。

namespace,指定添加到键的前缀。

另外,利用Cache::Memcached可以将Perl的复杂数据序列化之后再保存,所以能直接将散列、数组、对象都保存到Memcached的缓存中。

1.向Memcached存数据的方法

向Memcached存数据的方法有set、add和replace,这些方法的使用方式相同。

 
  1. my $add = $memcached->add( ‘键', ‘值', '过期时间' );  
  2. my $replace = $memcached->replace( '键', ‘值', '过期时间' );  
  3. my $set = $memcached->set( '键', '值', ‘过期时间' ); 

向Memcached存数据时可以指定过期时间(秒),若不指定过期时间,Memcached则按照LRU算法保存存入的数据。但这三个方法有一些区别:

set, 无论在什么情况下都保存写入的数据。

add,仅当存储空间中不存在key相同的数据时才保存。

replace,仅当存储空间中存在key相同的数据时才保存。

2.获取数据的方法

可以使用get和get_multi方法来获取数据,使用方法如下:

 
  1. my $value = $memcached->get(‘键');  
  2. my $value = $memcached->get_multi(‘键1', '键2', ‘键3'); 

如果想一次获取多条数据,可以使用get_multi方法。利用get_multi方法可以非同步地同时取得多个键值,其速度要比循环调用get方法快很多倍。

3.删除数据方法

删除数据可以使用delete方法。

 
  1. $memcached->delete('键', '阻塞时间(秒)'); 

第一个参数指定要删除的数据的键,第二个参数指定一个时间值,以禁止使用同样的键保存新数据,这个功能可以防止缓存数据的不完整。但是set 方法忽视该阻塞,会继续保存数据。

4.加一和减一方法

可以把Memcached上某一个特定的键值作为计数器使用。

 
  1. my $return = $memcached->incr('键');  
  2. $memcached->add('键', 0) unless defined $return; 

加一和减一都属于原子操作,进行这两个操作时若未对键值设置初始值,则不会自动将初始值赋为0。因此,应当进行错误检查,必要时加入初始化操作。
基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值