memcached简介及java使用方法

Java 连接 Memcached 服务 Memcached 是基于一个存储键/值对的 hashmap。其缓存的数据存储在内存中,因此读写速度非常快。Memcached 通常被用于缓存数据库查询结果、临时数据或经常访问的数据,以减轻数据库的负载。 阅读详情

一、 概念

Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。

二、 适用场合

1. 分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。

2. 数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然我们也可以使用Hibernate的缓存机制。但memcached是基于分布式的,并可独立于网站应用本身,所以更适合大型网站进行应用的拆分。

3. 服务器间数据共享。举例来讲,我们将网站的登录系统、查询系统拆分为两个应用,放在不同的服务器上,并进行集群,那这个时候用户登录后,登录信息如何从登录系统服务器同步到查询系统服务器呢?这时候,我们便可以使用memcached,登录系统将登录信息缓存起来,查询系统便可以获得登录信息,就像获取本地信息一样。

三、 不适用场合

那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源

四、 安装

这里介绍windows环境的安装。

1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached

2. 在cmd下输入 'c:\memcached\memcached.exe -d install' 安装

3. 再输入: 'c:\memcached\memcached.exe -d start' 启动。

以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

五、 客户端

Memcached本身是使用C开发的,客户端可以是php、C#、或者java。我是做java的,所以这里只介绍基于java的客户端。

我在网上看到基于java的客户端有两个

1. java_memcached-release_2.6.3

1) 简介

这是比较通用的Memcached客户端框架。具体原创不详。

2) 依赖的jar

A. commons-pool-1.5.6.jar

B. java_memcached-release_2.6.3.jar

C. slf4j-api-1.6.1.jar

D. slf4j-simple-1.6.1.jar

2. alisoft-xplatform-asf-cache-2.5.1

1) 简介

这个东东是阿里软件的架构师岑文初进行封装的。里面的注释都是中文的,比较好。

2) 依赖的jar

A. alisoft-xplatform-asf-cache-2.5.1.jar

B. commons-logging-1.0.4.jar

C. hessian-3.0.1.jar

D. log4j-1.2.9.jar

E. stax-api-1.0.1.jar

F. wstx-asl-2.0.2.jar

六、范例

1.基于java_memcached-release_2.6.3


    package com.hl.memcached.cache;  
      
    import java.util.Date;  
      
    import com.danga.MemCached.MemCachedClient;  
    import com.danga.MemCached.SockIOPool;  
      
    public class MyCache {  
        public static void main(String[] args) {  
            MemCachedClient client=new MemCachedClient();  
            String [] addr ={"127.0.0.1:11211"};  
            Integer [] weights = {3};  
            SockIOPool pool = SockIOPool.getInstance();  
            pool.setServers(addr);  
            pool.setWeights(weights);  
            pool.setInitConn(5);  
            pool.setMinConn(5);  
            pool.setMaxConn(200);  
            pool.setMaxIdle(1000*30*30);  
            pool.setMaintSleep(30);  
            pool.setNagle(false);  
            pool.setSocketTO(30);  
            pool.setSocketConnectTO(0);  
            pool.initialize();  
              
    //      String [] s  =pool.getServers();  
            client.setCompressEnable(true);  
            client.setCompressThreshold(1000*1024);  
              
    //      将数据放入缓存  
            client.set("test2","test2");  
              
    //      将数据放入缓存,并设置失效时间  
            Date date=new Date(2000000);  
            client.set("test1","test1", date);  
              
    //      删除缓存数据  
    //      client.delete("test1");  
              
    //      获取缓存数据  
            String str =(String)client.get("test1");  
            System.out.println(str);  
        }  
    }  

2.   基于alisoft-xplatform-asf-cache-2.5.1

1)  配置memcached.xml

<?xml version="1.0" encoding="UTF-8"?>  
<memcached>  
    <!-- name 属性是程序中使用Cache的唯一标识;socketpool 属性将会关联到后面的socketpool配置; -->  
    <client name="mclient_0" compressEnable="true" defaultEncoding="UTF-8"  
        socketpool="pool_0">  
        <!-- 可选,用来处理出错情况 -->  
        <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler  
        </errorHandler>  
    </client>  
  
    <!--  
        name 属性和client 配置中的socketpool 属性相关联。  
        maintSleep属性是后台线程管理SocketIO池的检查间隔时间,如果设置为0,则表明不需要后台线程维护SocketIO线程池,默认需要管理。  
        socketTO 属性是Socket操作超时配置,单位ms。 aliveCheck  
        属性表示在使用Socket以前是否先检查Socket状态。  
    -->  
    <socketpool name="pool_0" maintSleep="5000" socketTO="3000"  
        failover="true" aliveCheck="true" initConn="5" minConn="5" maxConn="250"  
        nagle="false">  
        <!-- 设置memcache服务端实例地址.多个地址用","隔开 -->  
        <servers>127.0.0.1:11211</servers>  
        <!--  
            可选配置。表明了上面设置的服务器实例的Load权重. 例如 <weights>3,7</weights> 表示30% load 在  
            10.2.224.36:33001, 70% load 在 10.2.224.46:33001  
          
        <weights>3,7</weights>  
        -->  
    </socketpool>  
</memcached>  


2) 测试类

    package com.hl.memcached.client.test;  
      
    import java.util.ArrayList;  
    import java.util.List;  
      
    import com.alisoft.xplatform.asf.cache.ICacheManager;  
    import com.alisoft.xplatform.asf.cache.IMemcachedCache;  
    import com.alisoft.xplatform.asf.cache.memcached.CacheUtil;  
    import com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager;  
    import com.hl.memcached.cache.client.TestBean;  
      
    public class ClientTest {  
          
        @SuppressWarnings("unchecked")  
        public static void main(String[] args) {  
            ICacheManager<IMemcachedCache> manager;  
            manager = CacheUtil.getCacheManager(IMemcachedCache.class,  
                    MemcachedCacheManager.class.getName());  
            manager.setConfigFile("memcached.xml");  
            manager.start();  
            try {  
                IMemcachedCache cache = manager.getCache("mclient_0");  
                cache.put("key", "value");  
                System.out.println(cache.get("key"));  
            } finally {  
                manager.stop();  
            }  
        }  
      
    }  

七、使用memcached缓存java bean自定义对象

Memcached可以缓存String,也可以缓存自定义java bean。但必须是可序列化的java bean(implements Serializable即可)

1.         基于java_memcached-release_2.6.3

测试用java bean

    package com.hl.memcached.cache.client;  
      
    import java.io.Serializable;  
      
    public class TestBean implements Serializable{  
        private static final long serialVersionUID = 5344571864700659321L;  
          
        private String name;  
        private Integer age;  
        //get、set方法略  
    }  

MyCache.java 代码
    package com.hl.memcached.cache;  
      
    import java.util.Date;  
      
    import com.danga.MemCached.MemCachedClient;  
    import com.danga.MemCached.SockIOPool;  
      
    public class MyCache {  
        public static void main(String[] args) {  
            MemCachedClient client=new MemCachedClient();  
            String [] addr ={"127.0.0.1:11211"};  
            Integer [] weights = {3};  
            SockIOPool pool = SockIOPool.getInstance();  
            pool.setServers(addr);  
            pool.setWeights(weights);  
            pool.setInitConn(5);  
            pool.setMinConn(5);  
            pool.setMaxConn(200);  
            pool.setMaxIdle(1000*30*30);  
            pool.setMaintSleep(30);  
            pool.setNagle(false);  
            pool.setSocketTO(30);  
            pool.setSocketConnectTO(0);  
            pool.initialize();  
              
    //      String [] s  =pool.getServers();  
            client.setCompressEnable(true);  
            client.setCompressThreshold(1000*1024);  
              
    //      将数据放入缓存  
            TestBean bean=new TestBean();  
            bean.setName("name1");  
            bean.setAge(25);  
            client.add("bean1", bean);  
              
    //      获取缓存数据  
            TestBean beanClient=(TestBean)client.get("bean1");  
            System.out.println(beanClient.getName());  
        }  
    }  

2.         基于alisoft-xplatform-asf-cache-2.5.1

package com.hl.memcached.client.test;  
  
import java.util.ArrayList;  
import java.util.List;  
  
import com.alisoft.xplatform.asf.cache.ICacheManager;  
import com.alisoft.xplatform.asf.cache.IMemcachedCache;  
import com.alisoft.xplatform.asf.cache.memcached.CacheUtil;  
import com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager;  
import com.hl.memcached.cache.client.TestBean;  
  
public class ClientTest {  
      
    @SuppressWarnings("unchecked")  
    public static void main(String[] args) {  
        ICacheManager<IMemcachedCache> manager;  
        manager = CacheUtil.getCacheManager(IMemcachedCache.class,  
                MemcachedCacheManager.class.getName());  
        manager.setConfigFile("memcached.xml");  
        manager.start();  
        try {  
            IMemcachedCache cache = manager.getCache("mclient_0");  
  
            TestBean bean=new TestBean();  
            bean.setName("name1");  
            bean.setAge(25);  
            cache.put("bean", bean);  
            TestBean beanClient=(TestBean)cache.get("bean");  
            System.out.println(beanClient.getName());  
              
            List<TestBean> list=new ArrayList<TestBean>();  
            list.add(bean);  
            cache.put("beanList", list);  
            List<TestBean> listClient=(List<TestBean>)cache.get("beanList");  
            if(listClient.size()>0){  
                TestBean bean4List=listClient.get(0);  
                System.out.println(bean4List.getName());  
            }  
        } finally {  
            manager.stop();  
        }  
    }  
  
}  

八、参考资料:

http://blog.developers.api.sina.com.cn/?p=124

http://www.infoq.com/cn/articles/memcached-java



danga memcached使用 NULL 博文链接:https://sharron5.iteye.com/blog/794600 立即下载

相关推荐

Memcached最新版Jar包

Memcached最新版Jar包: spymemcached-2.11.6.jar spymemcached-2.11.6-javadoc.jar spymemcached-2.11.6-sources.jar https://github.com/dustin/java-memcached-client

memcached三种客户端的使用

memcached三种客户端的使用 博客分类:  memcached memcached客户端spymemcachedxmemcached  Memcached 三种客户端使用 废话说在前头 萌生写博客这个想法,主要在于好整理笔记和巩固知识,加深对在工作中遇到问题的印象,新手上路,请多指教,欢迎圈错,共同学习。 第一种    Com.danga 包下面的memcac

evilcry2012的专栏 4702

memcached_net.spy_com.danga JAR

Memcache java jar 包 java_memcached-release_2.5.1.jar import com.danga.MemCached.MemCachedClient; import net.spy.memcached.MemcachedClient;

Memcached下载安装及客户端测试

memcached下载地址:http://memcached.org/ libevent下载地址:http://libevent.org/ 检查下本地是否已经安装了libevent,命令:rpm -qa|grep libevent 既然已经安装了一个版本的libevent,那么我们就先将其卸载后再安装我们自己的libevent,卸载命令如下: rpm -e --

人生本不易,何添烦恼丝~~ 1182

RS485/CAN总线防护电路设计:TVS选型与ESD防护实战解析

本文深入解析了RS485与CAN总线防护电路设计中的TVS选型与ESD防护实战技巧。针对工业现场常见的静电放电、浪涌等干扰,文章详细阐述了TVS管关键参数的选择、多级防护体系的构建,并特别强调了在隔离电路设计中地回路处理的重要性,帮助工程师设计出更可靠的通信接口。

metaverse5vr的博客 386

逆向解析喜马拉雅新版xm-sign算法:从dws.1.6.8.js到签名生成

本文详细解析了喜马拉雅新版xm-sign算法的逆向破解方法。通过定位核心JS文件dws.1.6.8.js,构建本地Node.js模拟执行环境,并解密关键参数cid与appKey,最终实现签名算法的本地化稳定生成,为数据采集提供可靠解决方案。

weixin_29250403的博客 210

转摘memcache

一、 概念 Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。 二、 适用场合 1. 分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。 2. 数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然...

人生何处不相逢 273

SP贴图高效导入Maya:从材质设置到渲染优化的完整流程

本文详细解析了将Substance Painter(SP)贴图高效导入Maya并配合Arnold渲染器的完整工作流。针对SP贴图在Maya中常见的色彩、法线等问题,核心在于对齐两者的PBR“语言”,重点讲解了SP中正确的贴图导出设置(包括色彩空间)以及在Maya中连接aiStandardSurface材质、处理法线贴图、优化渲染的标准化流程,确保材质效果准确无误。

weixin_29201933的博客 554

memcache 实例学习

转自:http://www.iteye.com/topic/264010memcahe 源码分析:http://www.iteye.com/topic/11145351       Memcache是什么Memcache是danga.com的一个项目,最早是为 LiveJourn

766

三相逆变器拓扑结构的分析及应用场景

三相逆变器是电力电子领域中广泛应用的一种设备,用于将直流电转换为交流电。不同的拓扑结构在性能、成本、复杂度和应用领域上存在差异。小编将在本文中将进一步拓展对三相逆变器拓扑结构的分析,并探讨其适用的应用场景。

道合顺的博客 2235

H3C-HCL模拟器-STP生成树协议实验

边缘接口的存在是为了提高网络的收敛速度和性能。由于边缘接口连接的是终端设备,这些设备通常不会产生环路,因此不需要参与生成树协议的计算和决策。边缘接口通常是指那些不会连接到其他交换机或生成树的冗余路径的接口。H3C交换机千兆口的cost默认是20,把SW2的g1/0/2接口的cost改为100;SW4是根网桥,根据STP计算,闭塞端口应该在SW1上;方法:使得SW2到SW1的cost比SW4到SW1更大;7)修改配置:把SW1连接PC的所有接口配置为边缘接口。协议的计算开销,提高网络的收敛速度。

网络工程 2995

memcached实例化多次报错:com.danga.MemCached.SockIOPool:trying to initialize an already initialized pool

mencached实例化多个对象的时候报错: com.danga.MemCached.SockIOPool Wed Nov 11 09:32:16 CST 2020 - ++++ trying to initialize an already initialized pool 报错原因:多个对象使用了同一个链接池的原因,因为创建连接池不给名称的话就是默认的default所以就算再次实例化对象也是走了同一个连接池 SockIOPool pool = SockIOPool.getInstance(); 解决方案

qq_42554949的博客 691

瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库

瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 3106

java memcached delete_memcached简介及java使用方法

一、什么是MemcacheMemcache是一套分布式高速缓存系统,分布式:即在多台服务器上安装Memcache服务,达到很好的集群效果高速:即所有的数据都是在内存中的,它的读取速度高于我们的硬盘2.Memcache有什么用?当数据量大的时候,我们数据库的压力也大,Memcache的出现可以在我们的数据库和应用之间充当缓冲层即我们在数据库中读取过的数据,在接下来的第二次,第三次就可以直接访问Mem...

weixin_39619270的博客 174

MTK 平台功耗优化策略全解析:Clock 管控、GPU 同步与 Preview 降帧实战方案

在中高端移动终端影像系统中,Camera 模块已成为功耗的关键来源之一,尤其是在高帧率拍摄、AI 模式实时预览等场景下,ISP、Sensor、GPU 与 SoC 时钟频率的大幅提升极易引发系统发热与续航瓶颈。MTK 平台基于多级功耗控制机制,构建了包括 Clock Gate 管理、GPU 时序协同、预览流降帧、Pipeline 低功耗切换等在内的影像功耗优化策略。本文聚焦于 MTK Camera 系统中的核心功耗控制点,基于实际项目部署案例,系统拆解其在不同模式下的节能路径设计与调试方法,为终端厂商与影像系

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2524

用 CDS 作为 Referenced Data Source 开发 SAP Gateway OData 服务,一条更轻的 SEGW 路线

本文介绍了SAP Gateway项目中从传统手工建模到基于CDS View的现代化开发方式转变。主要内容包括: 传统方式需要在SEGW中手动创建Entity Type、Entity Set等元素,并在DPC_EXT中编写大量查询逻辑,存在模型层和业务逻辑重复表达的问题。 7.50版本后,SAP Gateway与ABAP CDS深度集成,可通过SEGW直接引用CDS View作为数据源,自动生成数据模型和SADL读取逻辑,支持完整的OData查询功能。 最佳实践建议通过Consumption View而非直接

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 700

java memcached教程_memcached简介及java使用方法

转载网址:http://blog.youkuaiyun.com/seelye/article/details/8511073一、 概念Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。二、 适用场合1. 分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。2. 数据库前段缓...

weixin_29126497的博客 513

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java中使用memcached_memcached如何在java项目中使用

memcached如何在java项目中使用发布时间:2020-11-26 16:23:24来源:亿速云阅读:89作者:Leahmemcached如何在java项目中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Memcached是一个高性能的分布式内存对象缓存系统,本文介绍了java 使用memcached以及sp...

weixin_36463088的博客 627

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java使用memcached

目录 什么是Memcached? java如何链接memcached客户端? 1.java memcached client 1.1导入memcached的jar相关的jar包 1.2编写连接memcached客户端程序 1.3MemCachedClient的api 2.Xmemcached 2.1导入xmemcached和slf4j的jar包 2.2编写连接程序 3.SpyM...

qq_39290830的博客 2812

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java对memcached的操作_memcached—Java操作Memcached实例

前面博客介绍了如何在Windows操作系统中安装Memcached,总结一下如何使用Java操作Memcached实例:代码一:package com.ghj.packageoftool;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWri...

weixin_28799111的博客 282

java中使用memcached_java使用memcached

packagememcached;importjava.net.InetSocketAddress;importjava.util.concurrent.Future;importnet.spy.memcached.CASResponse;importnet.spy.memcached.CASValue;importnet.spy.memcached.MemcachedClient;public ...

weixin_29129833的博客 386

java中使用memcached_Java中使用MemCached

1、下载 java_memcached-release_2.6.6.zip2、安装memcache服务、window下如果出错,报错“ failed to install service or service already installed”就是运行memcached.exe运行时没有管理员权限,我是在windows平台右键属性里勾选run as Administratormemcache...

weixin_39852953的博客 154
上一篇: Java中重定向与请求转发的区别
下一篇: svn 图标所表示的意思
justdoit_potato
博客等级 码龄11年 44粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值