Memcached-高性能的分布式内存缓存服务器
Memcached是高性能的分布式内存缓存服务器,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等, 由国外社区网站 LiveJournal 的开发团队开发。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
LiveJournal 团队开发了包括 Memcached、MogileFS、Perlbal 等不错的开源项目。
Memcached的主要特点
•基于C/S架构,协议简单
•基于libevent的事件处理
# tar zxvf memcached-1.4.15.tar.gz
在 Memcached 中可以保存的item数据量是没有限制的,只要内存足够
Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启进程
最大30天的数据过期时间, 设置为永久的也会在这个时间过期,常量
REALTIME_MAXDELTA 60*60*24*30 控制
最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250 控制
单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进
行控制,它是默认的slab大小
最大同时连接数是200,通过 conn_init()中的freetotal 进行控制,最大软连接数是1024,通过settings.maxconns=1024 进行控制
Memcached客户端 参考: http://code.google.com/p/memcached/wiki/Clients
memcached 搭建
在windows2007服务器中安装memcached首先要看服务器所用系统是32位的还是64位的,64位系统可能会需要一个MSVCR71.DLL动态链接文件,
该文件在memcached-1.2.5-win32-bin解压包中就有,更高版本的包已解决了这个问题,在windows2007中由于安全性的提高,
在命令行中执行memcached.exe -d install将会提示你服务安装失败或服务已安装。这样你以管理员的身份打开命令行,可以解决。
Memcached服务器的配置过程
1.下载memcached-1.4.5-win32.zip包
下载地址:http://download.csdn.net/ (回头我给一个百度网盘地址)
2.用管理员身份打开cmd >cd memcached
>memcached-1.4.5.exe -d install 安装memcached缓冲服务
>memcached-1.4.5.exe -d start 开启memcached服务,默认端口为11211,内存分配为64MB,块大小增长因子1.25.最大同时连接数为1024,最小分配空间为48
>memcached-1.4.5.exe -d runservice -l 127.0.0.1 -m 2000 -c 1024 -p 11255
下面3.其实可以不作,我们就是用默认的端口等就合适
3.在命令行下可能不会生效所以得修改注册表 开始-->运行-->regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 中的
ImagePath项,原值为"d:\memcached\memcached-1.4.5.exe" -d runservice ,在其后加上 -p 11255 -U 11255 -m 2000 -c 1024 -f 1.25 -n 48 退出
4.右击我的电脑-->属性-->管理-->服务-->memcached Service 将服务重启。
5.测试服务器
开启telnet功能,进入命令行模式,输入telnet 192.168.1.200 11255 Stats 查看memcached的状态。
Memcache 在java客户端的配置过程
1.下载java_memcached-release_2.5.1.jar包
2.将java_memcached-release_2.5.1.jar包复制到JAVA项目的lib目录下,然后我们编写代码进行测试。
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemCachedManager {
// 创建全局的唯一实例
protected static MemCachedClient mcc = new MemCachedClient();
protected static MemCachedManager memCachedManager = new MemCachedManager();
// 设置与缓存服务器的连接池
static {
// 服务器列表和其权重
String[] servers = { "192.168.1.200:11255" };
Integer[] weights = { 3 };
// 获取socke连接池的实例对象
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();
// 压缩设置,超过指定大小(单位为K)的数据都会被压缩
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
}
/**
* 保护型构造方法,不允许实例化!
*/
protected MemCachedManager() {
}
/**
* 获取唯一实例
*/
public static MemCachedManager getInstance() {
return memCachedManager;
}
/**
* 添加一个指定的值到缓存中. *
* @param key
* @param value
* @return
*/
public boolean add(String key, Object value) {
return mcc.add(key, value);
}
public boolean add(String key, Object value, Date expiry) {
return mcc.add(key, value, expiry);
}
public boolean replace(String key, Object value) {
return mcc.replace(key, value);
}
public boolean replace(String key, Object value, Date expiry) {
return mcc.replace(key, value, expiry);
}
/**
* 根据指定的关键字获取对象.
* @param key
* @return
*/
public Object get(String key) {
return mcc.get(key);
}
public static void main(String[] args) {
MemCachedManager cache = MemCachedManager.getInstance();
cache.add("hello", 234);
System.out.print("get value : " + cache.get("hello"));
}
}
3.测试运行状态。
Memcached-高性能的分布式内存缓存服务器的更多相关文章
- Spring Boot集成Hazelcast实现集群与分布式内存缓存
Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品,提供弹性可扩展.高性能的分布式内存计算.并通过提供诸如Map,Queue,ExecutorService,Lock和JCach ...
- memcached基于socket访问memcache缓存服务器
memcached基于socket访问memcache缓存服务器 操作memcache常用三种方法: .memcache基于php_memcache.dll扩展(php扩展) .memcached基于 ...
- 高性能的分布式内存对象缓存系统Memcached
Memcached概述 什么是Memcached? 先看看下面几个概念: Memory:内存存储,不言而喻,速度快,对于内存的要求高,不指出的话所缓存的内容非持久化.对于CPU要求很低,所以常常采 ...
- memcached 缓存服务器
Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...
- 分布式内存对象缓存系统Memcached-概述
全面掌握Memcached 1. 概述 Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,是为了加快网站http://www. ...
- 分布式内存对象缓存 memcached
分布式内存对象缓存 许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示.但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库响应恶化,网站显示延迟等 ...
- Python并发编程-Memcached (分布式内存对象缓存系统)
一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...
- Memory Cache(内存缓存)
当Google测试了Google Search服务的可用性后,发现速度是最影响Web应用的可用性的因素之一.相对于作用相同但是速度慢的应用,用户更喜欢速度快的应用.多来年,Google已经掌握了如何使 ...
- ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...
随机推荐
- Zepto源码分析(一)核心代码分析
本文只分析核心的部分代码,并且在这部分代码有删减,但是不影响代码的正常运行. 目录 * 用闭包封装Zepto * 开始处理细节 * 正式处理数据(获取选择器选择的DOM) * 正式处理数据(添加DOM ...
- Framework7
完美的HTML框架 可以构建精美的iOS & Android 应用
- 关于Eclipse启动报错,jvm版本不匹配的问题
前几天重新下了个eclipse,eclipse需要java环境才能运行起来,我当时电脑上自己装了jdk1.8,然后直接运行新下载的eclipse,说我的jvm版本是1.6,但是我不记得安装过1.6的了 ...
- https 协议下服务器根据网络地址下载上传文件问题
https 协议下服务器根据网络地址下载上传文件遇到(PKIX:unable to find valid certification path to requested target 的问题) 使用h ...
- macaca 测试web(3)
上回书说到 macaca 测试web(2) 使用ddt做参数驱动化, 有些人会说,你好low,我说怎么low呢,他说你看看你的脚本就放在一个文件里,对于我们小白来说,这看起来很乱啊,能不能给我拆分, ...
- jmeter性能测试 套路二
1.一般我们不会通过下面这种去跑性能测试 2.我们会通过这种方式去跑性能测试 3.录制自动化 就用新的 4.录制性能测试 就用
- python appium 操作app
下面是一些Python脚本中操作app的用法: 检查app安装情况(返回true/false), driver.is_app_installed(package_name) 安装app driver. ...
- 一款代码扫描工具 火线!!!! fireline
1. 在火线官网进行火线相关文件的下载,下载后的文件为fireline.jar 2.运行fireline.jar文件前请先确认系统环境中已安装Java JDK. java-version 查看 3 ...
- https加密实现
author:JevonWei 版权声明:原创作品 在httpd安装完成的基础上实现https加密 安装mod_ssl软件包 yum -y install mod_ssl http -M 显示mod_ ...
- java设计模式系列之设计模式概要(1)
一.什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. ...