由于项目需要,今天学习了memcache的使用方法。
1. memcache的服务器端的安装
下载memcache for win32, 解压缩后,在cmd命令行敲入命令
memcache -start,
就可以启动服务器端程序
2. java客户端访问
2.1 下载memcache for java client的插件
本人使用的是http://www.whalin.com/memcached/#download下载的
版本号为java_memcached-release_2.0.1.jar
2.2 进行初始化
获得MemCachedClient对象
static{
连接服务器端:
SockIOPool pool = SockIOPool.getInstance();
设置server, weight
pool.setServer(), pool.setWeight()
)
2.3 pool.initialize(); 进行初始化动作
3. memcacheclient.set(key, value, expiredTime)
就是插入数据,key-value成对
和hashmap的思路一致
注意:如果要想对某个对象进行存取操作,该对象本身进行序列化处理,否则会报空指针异常。具体的办法实现seriable就可以。
4. memcacheclient.get(key)
根据key,得到value值
具体代码如下:
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemcacheTest {
//获得关键客户端对象,方便后续的set,get方法
protected static MemCachedClient mcc = new MemCachedClient();
static{
String[] servers = {
"127.0.0.1:11211"
};
Integer[] weights = {
3
};
//单例模式,获得一个实例,关键c/s连接
SockIOPool pool = SockIOPool.getInstance();
//设置服务器和权重
pool.setServers(servers);
pool.setWeights(weights);
//设置基本配置
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaxIdle(1000*60*60*6);
//设置主线程的休眠时间
pool.setMaintSleep(30);
//tcp发送规则
pool.setNagle(false);
//连接建立后的超时控制
pool.setSocketTO(3000);
pool.setSocketConnectTO(0);
//初始化设置
pool.initialize();
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64*1024);
}
/**
* 往服务器端的cache插入数据
* 注意key-value成对插入
* 参数过期时间
*/
public static void buildCache(){
mcc.set("test", "this is my first test string", new Date(10000));
}
/**
* 取出远程服务器端的value
* 根据key, 取出value
* 并且打印
*/
public static void output(){
String value = (String) mcc.get("test");
System.out.println("value: "+ value);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long time = System.currentTimeMillis();
buildCache();
output();
System.out.println("it cost time: " + (System.currentTimeMillis() - time));
}
}
运行结果:
value: this is my first test string
it cost time: 109
分享到:
相关推荐
### 简单的Memcache命令详解 #### Memcache简介 Memcache是一种高性能、分布式内存对象缓存系统,用于加速动态Web应用通过减轻数据库负担。它通过在内存中缓存数据和对象来减少读写数据库的次数,从而提高网站的...
Memcached 是一个广泛使用的分布式内存对象缓存系统,能够存储临时数据,提高 Web 应用程序的响应速度。它通过将数据存储在内存中,减少了数据库的负载,提高了数据读取的速度。PHP 的 Memcache 扩展为开发者提供了...
总的来说,这个PHP类提供了一个简单的Memcache队列实现,适用于需要快速插入和取出数据的场景,如消息队列或任务队列。不过,这种实现没有考虑并发控制和错误处理,如果在高并发环境下使用,可能需要额外的同步机制...
7. **测试Memcached Functions**:创建一个简单的测试环境,例如一个URL表,然后使用触发器在插入新URL时自动更新`urls:sequence`的值,并将新插入的URL存储到Memcache中。 以下是一个示例的触发器定义,用于在插入...
这里提到的Memcache是一个分布式内存对象缓存系统,它能将数据存储在内存中,提供快速的访问。在高并发的聊天室场景中,Memcache能够显著提升性能,避免频繁的数据库查询,减轻数据库压力。聊天记录通常只存储一段...
8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...
8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...
8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...
8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...
8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...
- **IOC(Inversion of Control,控制反转)**是Spring的核心特性之一,它通过依赖注入(DI)实现对对象创建和管理的控制反转。 - **AOP(Aspect Oriented Programming,面向切面编程)**关注于横切关注点(如日志...
与Redis不同,Memcache只支持简单的键值对存储,但它的性能非常高,因为所有数据都存储在内存中。学习Memcache,你需要理解如何设置和配置缓存,以及如何有效地使用它来提升应用性能。 MongoDB是一款流行的NoSQL...
选项A、B和C正确,D描述了一个简单的`__toString()`实现,也是正确的。 3. 正确定义常量的语句是`const PI=3.14;`,因此选项B正确。其他选项中,`var`、`public`和`static`都不是用来定义常量的关键字。 4. 要将`...
- **简单协议**:不使用 XML,减少解析开销。 - **内部哈希表**:用于快速定位缓存项。 - **无状态服务器**:各服务器间互不知晓对方的存在,便于扩展。 - **客户端操作:** - **键值哈希**:将键值映射到...
添加widget组件模块,及layout插件, rpc服务化,支持hprose、yar等, 支持xhprof性能调试。requirementphp 5.3 php-yaf 2.3.3phpredis 2.2.7memcache 2.2.7zmq 1.1.2xapian-bindings 1.2.21scws 1.2.2swoole ...
- **内存泄漏与内存溢出**:内存泄漏是指不再使用的对象未能及时回收,导致内存空间逐渐耗尽;内存溢出则是指程序运行过程中,由于内存资源不足而引发的错误。 ### 微服务 #### 微服务架构 - **服务注册与发现**:...
此外,ORM(对象关系映射)功能使得数据库操作更加面向对象化,降低数据库操作的复杂性。 5. URL路由: URL路由是ThinkPHP1.6.0RC1_Core的一大亮点,它允许开发者自定义URL模式,实现URL的美化,提高用户体验,...
在本文件中,我们可以了解到Redis的相关特性和使用方法。 1.1 Key-Value数据库 Redis属于NoSQL数据库的一种,它是一种基于内存的Key-Value存储系统。它可以用于多种场景,比如缓存、消息队列(MQ)以及会话存储等。...
ThinkPHP 3.1 提供了ActiveRecord模式,使得操作数据库如同操作对象一样简单。 4. 视图(View):视图用于展示数据,通常包含HTML、CSS和JavaScript。ThinkPHP 3.1 提供了模板引擎,可以方便地插入变量和控制结构,以...