3.1.4 Memcached的简单使用过程

来源:互联网 发布:linux切换oracle实例 编辑:程序博客网 时间:2024/06/15 21:06

《高性能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。因此,应当进行错误检查,必要时加入初始化操作。
0 0
原创粉丝点击