数据缓存Memcache
来源:互联网 发布:dnf数据芯片搬砖哪个图 编辑:程序博客网 时间:2024/06/05 04:00
1. 什么是Memcache?
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结果缓存到系统内存中,从而加速Web应用程序的响应速度。
2. Memcache和memcached的区别?
其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了吧。一个是项目名称,一个是主程序文件名,在网上看到了很多人不明白,于是混用了。
3. Memcached的安装
在1.4.5版本之前,memcached可以被安装成一个服务,但之后的版本中该功能被移除了。因此memcached的安装可以分为两类,第一类是1.4.5之前的版本,另一类是1.4.5之后的版本。
1) 安装memcached < 1.4.5:
1. 将下载的文件解压到任意目录。
2. 2. 1.4.5之前版本的memcached会被安装成一个服务,以administrator打开控制台,运行下面的命令:
c:\memcached\memcached.exe -d install
* 注意将路径c:\memcached\memcached.exe替换成你本地的安装路径。
3. 然后使用下面的命令启动或停止memcached服务:
c:\memcached\memcached.exe -d start
c:\memcached\memcached.exe -d stop
4. 例如你想增加memcached所使用的最大内存限制,可以修改ImagePath的值:
"c:\memcached\memcached.exe" -d runservice -m 512
* 除了参数'-m 512'之外,你还可以使用其它的参数。通过“c:\memcached\memcached.exe -h”可以查看所有能使用的参数。
5. 如果要卸载memcached服务,可以使用下面的命令:
c:\memcached\memcached.exe -d uninstall
2) 安装memcached >= 1.4.5
1. 将下载的文件解压到任意目录。
2. 1.4.5之后版本的memcached不能作为Windows服务来运行,可以在命令行中启动memcache。以管理员身份打开cmd,然后输入如下命令:
Memcached-x86 –p 11211 –m 128 –vv
memcached启动选项如下:
选项
说明
-p
使用的TCP端口,默认为11211
-m
最大内存大小默认为64m
-vv
用very verbose模式启动,调试信息和错误输出到控制台
-d
作为daemon在后台启动
4. 在java中如何使用Memcache
1. 添加jar包:
commons-pool-1.5.6.jar、
java_memcached-release_2.6.6.jar、
slf4j-api-1.6.1.jar、
2. 添加辅助类MemcachedUtil.java
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemcachedUtil {
/**
* memcached客户端单例
*/
private static MemCachedClient cachedClient = new MemCachedClient();
/**
* 初始化连接池
*/
static {
//获取连接池的实例
SockIOPool pool = SockIOPool.getInstance();
//服务器列表及其权重
String[] servers = {"127.0.0.1:11211"};
Integer[] weights = {3};
//设置服务器信息
pool.setServers(servers);
pool.setWeights(weights);
//设置初始连接数、最小连接数、最大连接数、最大处理时间
pool.setInitConn(10);
pool.setMinConn(10);
pool.setMaxConn(1000);
pool.setMaxIdle(1000*60*60);
//设置连接池守护线程的睡眠时间
pool.setMaintSleep(60);
//设置TCP参数,连接超时
pool.setNagle(false);
pool.setSocketTO(60);
pool.setSocketConnectTO(0);
//初始化并启动连接池
pool.initialize();
//压缩设置,超过指定大小的都压缩
// cachedClient.setCompressEnable(true);
// cachedClient.setCompressThreshold(1024*1024);
}
private MemcachedUtil(){
}
public static boolean add(String key, Object value) {
return cachedClient.add(key, value);
}
public static boolean add(String key, Object value, Date expireDate) {
return cachedClient.add(key, value, expireDate);
}
public static boolean add(String key, Object value, Integer millSeconds){
return cachedClient.add(key, value, new Date(new Date().getTime()+millSeconds));
}
public static boolean put(String key, Object value) {
return cachedClient.set(key, value);
}
public static boolean put(String key, Object value, Date expireDate) {
return cachedClient.set(key, value, expireDate);
}
public static boolean put(String key, Object value, Integer millSeconds){
return cachedClient.set(key, value, new Date(new Date().getTime()+millSeconds));
}
public static boolean replace(String key, Object value) {
return cachedClient.replace(key, value);
}
public static boolean replace(String key, Object value, Date expireDate) {
return cachedClient.replace(key, value, expireDate);
}
public static boolean replace(String key, Object value, Integer millSeconds){
return cachedClient.replace(key, value, new Date(new Date().getTime()+millSeconds));
}
public static Object get(String key) {
return cachedClient.get(key);
}
public static Object delete(String key) {
return cachedClient.delete(key);
}
}
3. 注意,被添加到缓存的类必须实现接口Serializable。
- memcache数据缓存
- memcache数据缓存
- 数据缓存Memcache
- memcache 读取数据缓存设置
- 大数据 memcache缓存序列化太慢策略
- php开发服务器之 memcache缓存数据
- memcache缓存
- Memcache 缓存
- Memcache缓存
- 用 Memcache 守护程序把数据缓存到内存中
- php中Apc和memcache缓存数据性能对比
- php中Apc和memcache缓存数据性能对比
- memcache的针对不同类型数据应用缓存策略
- php CI框架中调用接口 memcache缓存数据
- memcache统计同一数据搜索次数,设置缓存
- Memcache Redis MongoDB数据缓存系统方案对比与分析
- Memcache针对不同场景数据应用缓存策略
- memcache与redis lru 一致性hash 缓存雪崩 缓存无底洞 永久数据被踢现象
- Ubuntu14 安装 nsenter
- js几种不同的跨域方法详解
- ESRI资源
- 谈Runtime机制和使用的整体化梳理
- MYSQL按中文首字母排序
- 数据缓存Memcache
- tomcat目录下找不到运行的项目
- Android与Javascript交互
- docker使用笔记
- 负载均衡介绍
- linux(ubuntu)添加用户
- FE
- OSG could not find plugin to read objects from file xxx.xxx
- Hive与Hbase关系整合