缓存系统中的主要使用的数据结构是memcached。
memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。
memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。
由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据。
扩展资料:
一、存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启 *** 作系统会导致全部数据消失。
另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
二、通信分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。本文也将介绍memcached的分布式。
首先可以在多台服务器装memcached,启动时分别指定容量和端口访问时采用集群方式访问,只需要spring配置文件里面配置即可
value可以放任何对象,包括集合
每个键值的生命周期可以在放入时独立设置
类库可以用spymemcached
数据更新方式可以在后台的定时任务中执行
下面是spring mvc中配置:
<bean id="memcachedClient" class="netspymemcachedspringMemcachedClientFactoryBean">
<property name="servers" value="服务器A:端口,服务器B:端口,服务器C:端口" />
<property name="protocol" value="BINARY" />
<property name="transcoder">
<bean class="netspymemcachedtranscodersSerializingTranscoder">
<property name="compressionThreshold" value="1024" />
</bean>
</property>
<property name="opTimeout" value="2000" />
<property name="timeoutExceptionThreshold" value="1998" />
<property name="locatorType" value="CONSISTENT" />
<property name="hashAlg">
<value type="netspymemcachedDefaultHashAlgorithm">KETAMA_HASH</value>
</property>
<property name="failureMode" value="Redistribute" />
<property name="useNagleAlgorithm" value="false" />
</bean>一 下载需要的源码包
所有安装包均选用最新的。
1 下载libevent2022
点击红色部分下载
下载memcached1424
点击红色部分,下载最新版本
下载php扩展memcache308
选择需要的版本
二 安装详细步骤
首先将以上三个软件包下载到/tmp目录下
1 安装libevent
cd /tmp #首先进入到该下载包的目录
tar zxvf libevent-2022-stabletargz #解压包cd libevent-2022-stable #进入到解压的目录/configure --prefix=/usr/local #编译前配置,生成Makefile文件,路径可自行更改make; make install #编译+安装
1
测试是否安装成功
看到这些信息,表示成功啦
2 安装memcached
cd /tmp #首先进入到该下载包的目录
tar zxvf memcached-1424targz #解压包
cd memcached-1424 #进入到解压的目录
/configure –with-libevent=/usr/local #编译前配置,生成Makefile文件,路径必须与libevent中一致make; make install #编译+安装
1
测试是否安装成功
表示成功的信息
通过以上 *** 作,就完成了memcached服务器的安装。特别的简单吧!现在就来搞一搞memcache的php扩展安装吧3 安装扩展
cd /tmp #首先进入到该下载包的目录
tar zxvf memcache-308tgz #解压包
cd memcache-308 #进入到解压的目录
/opt/lampp/bin/phpize #动态为php添加扩展。phpize路径可能不一致,请根据自己的实际情况/configure –enable-memcache –with-php-config=/opt/lampp/bin/php-config –with-zlib-dir #php-config请根据自己环境情况填写make; make install #编译+安装
1
完成以上步骤时,心情愉悦的点击了enter,准备喝口水潇洒一下,结果出现了一下错误(这也是我写这篇博客的原因,要不都懒得记录了)错误信息
看了下代码错误信息,说是zlibh找不到。找不到就给他安一个嘛。真是的安装zlib
下载zlib-128targz
下载地址:>windows下网站开启memcache的方法是设置调用方法: Memcached 是memcache的运行服务端,核心文件,Memcached基于一个存储键/值对的hashmap,其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
作用:Memcached基本只占用内存资源。能够很好弥补对于高频繁调用,却不经常变更的资源。
web中的memcache的实现方法:
/
缓存类
/
public class MemCachedCtl {
protected static MemCachedClient mcc = new MemCachedClient();// 创建全局的唯一实例
protected static MemCachedCtl memCached = new MemCachedCtl();
//配置信息
private static String[] servers = { "127001:11211" };
private static Integer[] weights = { 3 };
private static int initialConnections = 10;
private static int minSpareConnections = 5;
private static int maxSpareConnections = 50;
private static long maxIdleTime = 1000 60 30;
private static long maxBusyTime = 1000 60 5;
private static long maintThreadSleep = 1000 5;
private static int socketTimeOut = 1000 3;
private static boolean nagleAlg = false;
/
不允许通过构造方法创建实例
/
protected MemCachedCtl() {
}
/
获取唯一实例
/
public static MemCachedCtl getInstance() {
return memCached;
}
/
初始化基本信息
/
public void init(){
if(initConfig())
initPool();
}
/
初始化配置信息
/
private boolean initConfig(){
//TODO 初始化配置文件
return true;
}
/
memcache服务器初始化连接池
/
private void initPool(){
SockIOPool pool = SockIOPoolgetInstance();// 获取socke连接池的实例对象
poolsetServers(servers);// 设置服务器信息
poolsetWeights(weights);//设置权重
poolsetInitConn( initialConnections );// 设置初始连接数
poolsetMinConn( minSpareConnections );//设置最小连接数
poolsetMaxConn( maxSpareConnections );//设置最大连接数
p
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)