`

数据缓存--Memcach详解及如何使用(带代码)?

阅读更多

在使用Memcach之前,先搞清楚什么是Memcach以及Memcached?   

A.什么是Memcache?

        Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,  它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的   说就是将数   据调用到内存中,然后从内存中读取,从而大大提高读取速度。Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结   果缓存到系统内存中,从而加速Web应用程序的响应速度。

B..Memcache和memcached的区别?

   其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了吧。一个是项目名称,一个是主程序文件名,在网上看到了很多人不明白,于是混用了。

1..Memcached的安装【下边的文件里安装包,可以直接下载】

   在1.4.5版本之前,memcached可以被安装成一个服务,但之后的版本中该功能被移除了。因此memcached的安装可以分为两类,第一类是1.4.5之前的版本,另一类是1.4.5之后的版本。

  1)安装memcached < 1.4.5:

       1.将下载的文件解压到任意目录。

       2. 1.4.5之前版本的memcached会被安装成一个服务,以administrator打开控制台,运行下面的命令:

          c:\memcached\memcached.exe -d install

        * 注意将路径c:\memcached\memcached.exe替换成你本地的安装路径。

       3.然后使用下面的命令启动或停止memcached服务:

          c:\memcached\memcached.exe -d start

          c:\memcached\memcached.exe -d stop

       4.例如你想增加memcached所使用的最大内存限制,可以修改ImagePath的值:

          "c:\memcached\memcached.exe" -d runservice -m 512

         * 除了参数'-m 512'之外,你还可以使用其它的参数。通过“c:\memcached\memcached.exe -h”可以查             看所有能使用的参数。

       5.如果要卸载memcached服务,可以使用下面的命令:

          c:\memcached\memcached.exe -d uninstall

    2)安装memcached >= 1.4.5

        1.将下载的文件解压到任意目录。

        2.    1.4.5之后版本的memcached不能作为Windows服务来运行,可以在命令行中启动memcache。以             管理员身份打开cmd,然后输入如下命令:

                                        Memcached-x86 –p 11211 –m 128 –vv

        3. memcached启动选项如下:

         选项 说明

          -p 使用的TCP端口,默认为11211

         -m 最大内存大小默认为64m

         -vv 用very verbose模式启动,调试信息和错误输出到控制台

         -d 作为daemon在后台启动

      4.在java中如何使用Memcache

         1.添加jar包:【下边的文件里有jar包】

             commons-pool-1.5.6.jar、

             java_memcached-release_2.6.6.jar、

             slf4j-api-1.6.1.jar、

2.添加辅助类MemcachedUtil.java【直接复制 粘贴就行到你的包里(如:com.wf.ssm.util)】

    import java.util.Date;

    import com.danga.MemCached.MemCachedClient;

    import com.danga.MemCached.SockIOPool;

 

    public class MemcachedUtil {

 

/**

     * memcached客户端单例

     */

    private static MemCachedClient cachedClient = new MemCachedClient();

     

    /**

     * 初始化连接池

     */

    static {

        //获取连接池的实例

        SockIOPool pool = SockIOPool.getInstance();

         

        //服务器列表及其权重

        String[] servers = {"127.0.0.1:11211"};

        Integer[] weights = {3};

         

        //设置服务器信息

        pool.setServers(servers);

        pool.setWeights(weights);

         

        //设置初始连接数、最小连接数、最大连接数、最大处理时间

        pool.setInitConn(10);

        pool.setMinConn(10);

        pool.setMaxConn(1000);

        pool.setMaxIdle(1000*60*60);

         

        //设置连接池守护线程的睡眠时间

        pool.setMaintSleep(60);

         

        //设置TCP参数,连接超时

        pool.setNagle(false);

        pool.setSocketTO(60);

        pool.setSocketConnectTO(0);

         

        //初始化并启动连接池

        pool.initialize();

         

        //压缩设置,超过指定大小的都压缩

        //      cachedClient.setCompressEnable(true);

        //      cachedClient.setCompressThreshold(1024*1024);

    }

     

    private MemcachedUtil(){

    }

     

    public static boolean add(String key, Object value) {

        return cachedClient.add(key, value);

    }

     

    public static boolean add(String key, Object value, Date expireDate) {

        return cachedClient.add(key, value, expireDate);

    }

    

    public static boolean add(String key, Object value, Integer millSeconds){

    return cachedClient.add(key, value, new Date(new Date().getTime()+millSeconds));

    }

     

    public static boolean put(String key, Object value) {

        return cachedClient.set(key, value);

    }

     

    public static boolean put(String key, Object value, Date expireDate) {

        return cachedClient.set(key, value, expireDate);

    }

    

    public static boolean put(String key, Object value, Integer millSeconds){

    return cachedClient.set(key, value, new Date(new Date().getTime()+millSeconds));

    }

     

    public static boolean replace(String key, Object value) {

        return cachedClient.replace(key, value);

    }

     

    public static boolean replace(String key, Object value, Date expireDate) {

        return cachedClient.replace(key, value, expireDate);

    }

    

    public static boolean replace(String key, Object value, Integer millSeconds){

    return cachedClient.replace(key, value, new Date(new Date().getTime()+millSeconds));

    }

     

    public static Object get(String key) {

        return cachedClient.get(key);

    }

    

   public static Object delete(String key) {

       return cachedClient.delete(key);

   }

  }

 

3.注意,被添加到缓存的类必须实现接口Serializable。

 

 

 

 

 

分享到:
评论

相关推荐

    Java 操作Memcach实例

    在Java开发中,Memcached是一个广泛应用的分布式内存缓存系统,用于提高应用程序的数据访问速度。本教程将详细讲解如何在Java项目中集成和使用Memcached,以及通过提供的工具类实现各种操作。 首先,Memcached的...

    (全)传智播客PHP就业班视频完整课程

    8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...

    如何安装memcach.docx

    Memcached是一款高性能的分布式内存对象缓存系统,常用于减轻数据库负载,提升Web应用性能。本文将详细介绍如何在Linux环境下安装Memcached。 1. **创建安装目录** 首先,我们需要在系统中创建一个用于安装...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...

    史上最全传智播客PHP就业班视频课,8月份视频

    8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...

    服务器缓存服务memcache

    - 获取缓存:`get($key)`,根据$key`获取缓存数据。 - 删除缓存:`delete($key)`,根据$key`删除缓存。 5. **Memcache在实际应用中的优势:** - **提升性能**:通过缓存常用数据,显著减少数据库调用,提高Web...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    8-17 1.apache服务器使用及配置④ apache虚拟主机 web访问时序图 8-17 2.apache服务器使用及配置⑤ 作业点评 提出apache和php整合的需求 8-17 3.php开发环境的搭建和使用① appserv套件安装 8-17 4.php开发环境的...

    memcach-session-manager(MSM)所需jar包,TOMCAT7

    标题提及的是"memcach-session-manager(MSM)所需jar包,TOMCAT7",这表明我们关注的是一个用于管理Tomcat7应用服务器会话的组件,即Memcached Session Manager(MSM)。MSM是基于Memcached的,它将用户的会话数据...

    SSM - SpringMVC4 + Spring4 + mybatis3 + c3p0 + 缓存框架 + Mysql.rar

    Memcach分布式缓存系统.doc可能是关于如何集成和使用Memcached的文档。压缩包中的"memcached-x86"和"Memcached JAR"是Memcached的客户端程序和Java驱动,用于与缓存服务器交互。 最后,MySQL 是一个广泛使用的开源...

    Memcache Session Manager + Tomcat8.5.6

    8. **安全性考虑**: 使用Memcache进行session共享时,需要注意数据的安全性,例如使用安全的网络协议传输数据,以及对敏感信息进行加密。 总结起来,这个架构结合了Nginx的负载均衡、Tomcat的Web应用处理、Memcache...

    memcached linux安装说明+ java客户端调用例子

    **memcached** 是一款高性能、分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用性能。在Linux系统上安装和配置memcached,并通过Java客户端进行调用是常见的操作流程,下面将详细介绍这一过程。 ### 一...

    基于MySQL的数据库中间件SOHU-DBProxy.zip

    SOHU-DBProxy 是由 搜狐 数据库团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的 MySQL-Proxy 0.8.3版本的基础上, 修改了大量bug,添加了很多功能特性。现在已经在sohu的多个业务线上使用...

    Tomcat+memcached-session-manager1.8(MSM)

    为了解决这个问题,开发人员通常会选择将session数据分布式存储,如使用Memcached这样的内存缓存系统。`memcached-session-manager1.8(MSM)`就是这样一个工具,它允许Tomcat将用户的session数据透明地保存到...

    windows php memcache 扩展

    Memcache是一款高性能的分布式内存对象缓存系统,它可以用来存储各种数据,如数据库查询结果、静态文件等,以减少对数据库的访问,提高网站性能。在Windows操作系统上配置PHP与Memcache的扩展,可以实现PHP应用程序...

    全面了解django的缓存机制及使用方法

    五、缓存的设置与使用 示例一: CACHES = {  'default': {  'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211',  } } 示例二: CACHES = { 'default': { '...

    memcached-1.2.5.tar.gz

    总结,memcached-1.2.5在Linux环境下的部署和使用为应用程序提供了高效的数据缓存解决方案。了解其基本原理和操作方法,结合实际业务需求进行优化配置,可以极大地提升系统的响应速度和并发处理能力。同时,注意安全...

    ocaml-memcached:OCaml 内存缓存客户端

    用于 OCaml 的 Memcached Memcached 是一个纯 OCaml memcached 客户端库,具有与来自libhashkit 兼容的散列算法选择。...使用库该库提供了两个接口,就像大多数标准库数据结构一样,用于访问 memcach

    scrapbook:PHP缓存库,顶部带有用于Memcached,Redis,Couchbase,APC(u),SQL的适配器以及其他功能(例如事务处理,踩踏保护)

    目录 雷迪斯 Couchbase APC(u) MySQL PostgreSQL SQLite的 文件系统 记忆 ...psr /缓存 psr /简单缓存 ... 安装与使用 如果您使用Composer管理项目的依赖项,只需将对... 这是一个简单的示例:具有踩踏保护的Memcach

Global site tag (gtag.js) - Google Analytics