`
da_zhuang
  • 浏览: 5983 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

memcached安装及java应用使用memcached

 
阅读更多
一、安装步骤:
1、编译安装libevent:
资源地址:http://libevent.org/
tar zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable/
./configure --prefix=/usr
make && make install
cd ../


2、编译安装Memcached:
资源地址:http://memcached.org/downloads
tar zxvf memcached-1.4.24.tar.gz
cd memcached-1.4.24/
./configure --with-libevent=/usr --prefix=/usr
make && make install
cd ../


3、编译安装magent:
mkdir magent
cd magent/
wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
tar zxvf magent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
make
cp magent /usr/bin/magent
cd ../

注意:
--ketama.h 文件头中增加 start
#ifndef SSIZE_MAX
#define SSIZE_MAX      32767
#endif
--ketama.h 文件头中增加 end
________________________________________

二、使用实例:
memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
magent -u root -n 51200 -l 127.0.0.1 -p 12000 -s 127.0.0.1:11211 -s 127.0.0.1:11212 -b 127.0.0.1:11213

  1、分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
  2、11211、11212端口为主Memcached,11213端口为备份Memcached;
  3、连接上12000的magent,set key1和set key2,根据哈希算法,key1被写入11212和11213端口的Memcached,key2被写入11212和11213端口的Memcached;
  4、当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
   5、当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的 Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数 据(此问题尚待改进)。

备注:参数 -u当然是启动账号 -n是最大连接数,-l是magent监听的IP -p是magent监听的端口,后面的格式依次是 -s IP:端口 代表是主服务器 然后指定IP:端口的格式,-b IP:端口的意思是 备用服务器。

可以考虑将备机同样做成分布式,下挂备机???
________________________________________

  三、整个测试流程:
[root@centos52 ~]# telnet 127.0.0.1 12000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stats
memcached agent v0.4
matrix 1 -> 127.0.0.1:11211, pool size 0
matrix 2 -> 127.0.0.1:11212, pool size 0
END
set key1 0 0 8
zhangyan
STORED
set key2 0 0 8
zhangyan
STORED
quit
Connection closed by foreign host.


[root@centos52 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
END
get key2
VALUE key2 0 8
zhangyan
END
quit
Connection closed by foreign host.


[root@centos52 ~]# telnet 127.0.0.1 11212
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
VALUE key1 0 8
zhangyan
END
get key2
END
quit
Connection closed by foreign host.


[root@centos52 ~]# telnet 127.0.0.1 11213
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
VALUE key1 0 8
zhangyan
END
get key2
VALUE key2 0 8
zhangyan
END
quit
Connection closed by foreign host.


模拟11211、11212端口的Memcached死掉
[root@centos52 ~]# ps -ef | grep memcached
root      6589     1  0 01:25 ?        00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
root      6591     1  0 01:25 ?        00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
root      6593     1  0 01:25 ?        00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
root      6609  6509  0 01:44 pts/0    00:00:00 grep memcached
[root@centos52 ~]# kill -9 6589
[root@centos52 ~]# kill -9 6591
[root@centos52 ~]# telnet 127.0.0.1 12000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
VALUE key1 0 8
zhangyan
END
get key2
VALUE key2 0 8
zhangyan
END
quit
Connection closed by foreign host.


模拟11211、11212端口的Memcached重启复活
[root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
[root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
[root@centos52 ~]# telnet 127.0.0.1 12000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
END
get key2
END
quit
Connection closed by foreign host.



Java应用操作Memcached

工程所需jar包:
commons-pool-1.5.6.jar
java_memcached-release_2.6.6.jar
slf4j-api-1.6.1.jar
slf4j-simple-1.6.1.jar

Maven项目下配置:
其中java_memcached-release_2.6.6.jar包在Maven库中未找到,需要搭建私服才能获取,故没有相应Maven路径。
<dependency> 
<groupId>org.slf4j</groupId> 
<artifactId>slf4j-simple</artifactId> 
<version>1.6.1</version> 
</dependency> 
<dependency> 
<groupId>org.slf4j</groupId> 
<artifactId>slf4j-api</artifactId> 
<version>1.6.1</version> 
</dependency> 
<dependency> 
  <groupId>commons-pool</groupId> 
  <artifactId>commons-pool</artifactId> 
  <version>1.5.6</version> 
</dependency>

Java代码详见附件memcached_java.rar
分享到:
评论

相关推荐

    memcached安装包以及java所需的memcached架包

    为了在Java应用中使用memcached,你需要一个Java客户端库。在提供的压缩包中,包含了`java_memcached-release_2.6.6.jar`,这是一个Java客户端库,允许Java应用程序与memcached服务器通信。 1. **添加依赖**:将`...

    java使用Memcached简单教程

    - `-m`:分配给Memcached使用的最大内存量,单位为MB; - `-d`:将Memcached作为守护进程在后台运行。 如果需要进行故障排查(troubleshooting),可以在命令后面加上`-vv`选项以获取更详细的日志信息。 ##### 2.3...

    Memcached java的使用实例

    Memcached使用键值对的方式存储数据,`set`方法用于设置键值对,`get`方法用于获取键对应的值: ```java String key = "exampleKey"; String value = "exampleValue"; // 存储数据 client.set(key, 60, value); //...

    memcached 的简单java实例

    Spymemcached是Java社区广泛使用的Memcached客户端,它的使用非常简单。以下是一个简单的Java实例,演示如何使用Spymemcached连接到Memcached服务器并执行基本操作: 1. **添加依赖** 首先,你需要在项目中添加...

    java使用memcached的实例

    本文将详细解析如何在Java项目中使用Memcached,包括其配置方法以及一个具体的示例代码,旨在帮助开发者深入理解并掌握这一技术。 ### 一、Memcached简介 Memcached是一种开源的高性能内存键值存储系统,主要用于...

    Java环境下Memcached应用详解.docx

    对于Java应用程序来说,整合Memcached通常涉及以下几个方面: 1. **缓存工具类**:创建一个通用的缓存工具类,封装缓存操作,如get、put、remove等方法。这样可以使代码对具体缓存实现(如Memcached或Ehcache)不...

    JAVA+MYSQL+Memcached

    安装Memcached通常包括下载源码、编译和配置服务器端,然后在Java应用中添加相应的客户端库,以实现Java应用与Memcached服务器之间的通信。 在实际应用中,Java应用会先尝试从Memcached获取数据,如果数据不存在,...

    memcached for java client 例子

    2. **Java客户端库**:为了在Java应用中使用memcached,我们需要一个客户端库,如spymemcached、xmemcached或者memcached-java-client等。这些库提供了与memcached服务器通信的接口和方法。 3. **安装与配置**:在...

    java使用memcached demo

    Java 使用 Memcached 演示 Memcached 是一个高性能、分布式的内存对象缓存系统,广泛应用于减轻数据库负载,提高Web应用的响应速度。在Java中,我们可以借助各种客户端库来与Memcached进行交互。本篇文章将深入探讨...

    java_memcached-release_2.5.1.jar Memcache java jar 包

    在实际开发中,使用`java_memcached-release_2.5.1.jar`,开发者可以轻松地将Memcached集成到Java应用中,从而提升应用的性能。`MemCachedManager.java`这个类可能包含了创建和管理Memcached连接、执行缓存操作等...

    阿里软件java版memcached安装文件和demo项目

    5. **相关jar**:除了主jar包,还可能包含其他依赖的jar,如网络通信、序列化等组件,这些都是Java应用与Memcached交互所必需的。 6. **使用文档**:doc文件提供了详细的操作指南和示例,帮助开发者了解如何配置、...

    java中连接memcached服务器

    接下来,我们将深入探讨如何在Java环境中配置和使用Memcached。 首先,要连接到Memcached服务器,你需要一个Java客户端库。常见的有spymemcached和XMemcached。这里我们以spymemcached为例,因为它是社区中广泛使用...

    memcached 安装应用等

    【memcached 安装应用详解】 `memcached`是一个高效且分布式的内存对象缓存系统,主要用于缓解数据库的检索压力,提升网站访问速度。通过在内存中创建一个大型的哈希表,`memcached`可以存储多种格式的数据,如图片...

    memcached 安装

    总结,安装和配置Memcached是提升Web应用性能的关键步骤。通过合理分配内存、设置自启动服务以及监控其状态,可以确保Memcached高效稳定地运行。同时,根据实际需求,可以进一步探索Memcached与其他工具如PHP、Nginx...

    java memcached安装步骤

    完成以上步骤后,Java应用就可以通过Java的Memcached客户端库连接到运行在服务器上的Memcached服务,实现数据缓存功能。在Java中,常用的Memcached客户端库有spymemcached和xmemcached等,它们提供了丰富的API来方便...

    memcached缓存使用演示

    例如,对于Python,可以使用`python-memcached`库,Java有`spymemcached`,PHP有`php-memcached`等。以下是一些基本操作: - **添加缓存**:使用`set(key, value, timeout)`方法,将键值对存入缓存,`timeout`表示...

    安装Memcached及Memcached配置

    Memcached 是一个高性能的分布式...总的来说,Memcached提供了一种高效且易于部署的缓存解决方案,通过合理配置和使用,能显著提升Web应用的性能。了解并掌握上述知识,将有助于你在实际项目中有效地利用Memcached。

    MemCached安装

    10. **集成到应用**:最后,你需要在你的应用程序中集成Memcached,以便使用它作为缓存系统。Memcached支持多种编程语言,如PHP、Python、Ruby、Java等,每种语言都有相应的客户端库。 在Mac上安装Memcached的过程...

Global site tag (gtag.js) - Google Analytics