class BiMemcached{
private $id;
private $obj;
private $expiration = 0;
//new中带上唯一标示,能够创建memcached的持久化对象,所有通过相同的唯一标识值创建的实例共享同一个连接
public function __construct( $id ){
$this->obj = new Memcached( $id );
}
public function connect( $host, $port ){
$servers = $this->obj->getServerList();
if( !empty($servers) ){
foreach( $servers as $row ){
if( $row['host'] == $host && $row['port'] == $port ){
return true;
}
}
}
return $this->obj->addServer( $host, $port );
}
public function set( $key, $value, $expiration = 0 ){
if( !empty($key) ){
$this->setExpiration( $expiration );
return $this->obj->set( $key, $value, $this->expiration );
}
return false;
}
public function get( $key ){
return $this->obj->get($key);
}
//设置多个值,可以通过getMulti或get来获取值
public function setMulti( array $arr, $expiration = 0 ){
$this->setExpiration( $expiration );
if( !empty($arr) ){
return $this->obj->setMulti( $arr, $this->expiration );
}
return true;
}
public function getMulti( array $arr ){
return $this->obj->getMulti( $arr );
}
//向服务端发出一个检索keys指定的多个 key对应元素的请求。这个方法不会等待响应而是立即返回。当你需要收集元素值时, 调用Memcached::fetch()或 Memcached::fetchAll()
public function getDelayed( array $arr, $cas = false, $callBack = null ){
return $this->obj->getDelayed( $arr, $cas, $callBack );
}
public function fetch(){
return $this->obj->fetch();
}
public function fetchAll(){
return $this->obj->fetchAll();
}
//如果Memcached::OPT_COMPRESSION常量开启,这个操作会失败,并引发一个警告,因为向压缩数据 后追加数据可能会导致解压不了
public function append( $key, $value ){
$this->obj->append( $key, $value );
}
public function getOption( $option ){
return $this->obj->getOption( $option );
}
public function setOption( $option, $value ){
return $this->obj->setOption( $option, $value );
}
public function getServerList(){
return $this->obj->getServerList();
}
public function quit(){
$this->obj->quit();
}
public function setExpiration( $expiration ){
$this->expiration = !empty($expiration) && is_numeric($expiration) ? time()+ $expiration : 0;
}
public function getOption( $option ){
return $this->obj->getOption( $option );
}
public function setOption( $option, $value ){
return $this->obj->setOption( $option, $value );
}
public function getServerList(){
return $this->obj->getServerList();
}
public function quit(){
$this->obj->quit();
}
public function setExpiration( $expiration ){
$this->expiration = !empty($expiration) && is_numeric($expiration) ? time()+ $expiration : 0;
}
}
//结果回调:通过Memcached::getDelayed()或 Memcached::getDelayedBykey()方法获取元素后,为结果集中每个元素调用一次
function callBackFun( $memc, $item ){
foreach( $item as $key =>$row ){
echo "the key is".$key.", the value is ".$row."<br>";
}
}
$m = new BiMemcached('');
$m->connect('localhost', 11211);
相关推荐
**Memcached类** `Memcached`类是PHP中与Memcached服务进行交互的核心。这个类包含了许多方法,如`get()`, `set()`, `delete()`等。例如: ```php // 存储数据 $memcached->set('key', 'value', 3600); // 'key'...
### Memcached学习总结 #### 一、Memcached简介 ##### 1.1 什么是Memcached? Memcached是一款由Danga Interactive公司(LiveJournal的技术团队)所研发的分布式内存对象缓存系统,它最初是为了减轻数据库负载和...
通过学习这些资源,开发者能够更好地掌握如何在实际项目中应用Memcached和Hibernate的整合,提升系统的响应速度和并发处理能力。 此外,了解如何整合Memcached和Hibernate也是提升系统架构设计能力的重要一步。在高...
**memcached源代码分析** **一、memcached简介** ...通过这两个文件的学习,可以深入理解memcached的内部工作机制,为优化和自定义memcached提供理论基础,或者帮助开发者在类似项目中应用memcached的设计理念。
最近一直在做一个项目的前期设计工作,考虑到... 以上是我在windows下对memcached的一点小学习和实践,在以后的项目开发过程中将会更深入的学习和应用这一缓存工具,也希望和有兴趣的同行一起讨论学习该工具的使用~~
2. **引入Java客户端库**:将`java_memcached-release_1.6.zip` 解压后,将库文件(JAR)添加到Java项目的类路径中。 3. **编写Java代码**: - 引入必要的依赖:`import net.spy.memcached.MemcachedClient;` - ...
描述中的“一些网上的资料”可能包括Memcached的官方文档、教程、社区论坛以及相关的技术博客等,这些都是学习和解决问题的好去处。例如: - 官方文档:https://memcached.org/ - Stack Overflow:...
7. **学习与调试**:通过阅读博客和项目代码,你可以了解SSM如何与Memcached协同工作,包括缓存的设置、数据的存取流程以及异常处理机制等。如果遇到问题,应首先检查配置是否正确,然后逐步调试代码,确保各个部分...
通过深入学习和理解源码,我们可以更好地掌握如何在项目中使用Memcached作为Hibernate的二级缓存,从而提升系统的数据访问性能。在实际开发中,根据项目需求,可能还需要考虑缓存的扩展性、并发控制以及失效策略等...
1. **安装与配置**:下载对应的jar包,将其添加到项目的类路径中,然后配置Memcached服务器的地址和端口。 2. **连接与断开**:使用客户端库提供的连接方法建立到Memcached服务器的连接,操作完成后关闭连接以释放...
这个客户端通常是一个库,如`Enyim.Caching.Memcached`,它提供了一组接口和类,允许C#应用程序通过网络与Memcached服务器通信。这些客户端库通常实现了基本的Memcached操作,如添加、获取、删除、替换和触摸缓存项...
3. **中文注释**:中文注释使得开发者更容易理解jar包中的类和方法,尤其是对于不熟悉英文文档的开发者来说,大大降低了学习和使用难度。 4. **安装文件**:通常,Memcached的安装涉及到下载源码、编译、安装服务等...
1. 源代码文件夹(src目录),包含Java Memcached客户端的源代码,开发者可以查看和学习其内部实现。 2. 编译后的jar文件(如:lib/slabsj-1.6.jar),这是实际运行时需要引入到Java项目的类库,包含了所有必要的类...
7. `docs`:文档目录,可能包括用户手册、API参考等,对于学习和使用SSM非常有帮助。 在实际应用SSM时,我们需要配置Spring的上下文,设置Memcached服务器的连接信息,并启用SSM的相关组件。然后,就可以在我们的...
总结,这个压缩包提供了一个完整的memcached在ASP.NET环境下的应用实例,从配置到实现,是学习和实践memcached的好材料。开发者可以通过阅读和运行代码,理解memcached在实际项目中的运用,从而提升Web应用的性能。
3. **创建Memcached模板**:使用Spring Data的抽象层,创建一个MemcachedTemplate,它是操作Memcached的工具类: ```xml ``` 4. **配置Memcached连接工厂**:创建并配置MemcachedConnectionFactory,用于...
- 可以直接调用Cache类的静态方法,如Add、Get、Remove等,这些操作会映射到Memcached服务器上。 4. **使用Profile提供者**: - 在Web.config的profile部分,指定MemcachedProviders.ProfileProvider为默认的...
接着,创建一个`Memcached`的Java配置类,注入`MemcachedClient`实例,并提供缓存操作的方法,例如`get`、`set`、`delete`等。在`SpringMVC`的控制器中,你可以使用这些方法来读取或写入缓存,从而实现业务逻辑中的...
总的来说,Java-memcached-demo是一个实用的学习资源,展示了如何在Java应用中集成Memcached,提升应用的响应速度和效率。通过这个示例,开发者能够学习到如何配置和使用Memcached,以及在实际项目中如何利用分布式...