情况1:使用xml方式来配置memcached服务,spring来自动管理(以下代码为关键信息,可以另外自行扩展)
<!-- 注册memcached客户端 -->
<bean id ="memCachedClient" class="com.danga.MemCached.MemCachedClient">
<constructor-arg>
<value>sockIOPool</value>
</constructor-arg>
</bean>
<!-- memecached连接池 -->
<bean id="sockIOPool" class ="com.danga.MemCached.SockIOPool" factory-method="getInstance" init-method="initialize" destroy-method="shutDown">
<constructor-arg>
<value>sockIOPool</value>
</constructor-arg>
<!-- 服务器 -->
<property name="servers">
<list>
<value>192.168.1.126:11211</value>
</list>
</property>
<!-- 权重 -->
<property name="weights">
<list>
<value>1</value>
</list>
</property>
情况2: 不使用xml配置,使用纯java代码来配置memcached
private static MemCachedClient memCachedClient = new MemCachedClient();
// 设置与缓存服务器的连接池
static {
// 服务器列表和其权重
String[] servers = { "192.168.1.126:11211" };
Integer[] weights = { 1 };
// 获取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();
}
public static void main(String[] args) {
memCachedClient.set("username", "张三", 60);
System.out.println("username ="+memCachedClient.get("username"));
}
以上两种方式均可以获取memcached服务器中缓存的数据信息,以下列出常见问题,仅供参考:
1:获取不到 值
检查memcached是否正常开启
检查memcached端口是否开放
memcached每次启动,都要启动java项目,java项目会在第一次连接
配置文件是否正确