Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用

简介: 1 修改pom.xml,添加依赖文件: <dependency>     <groupId>com.whalin</groupId>     <artifactId>Memcached-Java-Client</artifactId>     <version>3.0.2</versi


1 修改pom.xml,添加依赖文件:

<dependency>

    <groupId>com.whalin</groupId>

    <artifactId>Memcached-Java-Client</artifactId>

    <version>3.0.2</version>

</dependency>

2 添加memcached-context.xml,注意要在web.xml中进行配置

<?xml version="1.0" encoding="UTF-8"?>

<beans:beans xmlns="http://www.springframework.org/schema/mvc"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"

    xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"

    xmlns:task="http://www.springframework.org/schema/task" xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd

       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

       http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd

       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

   

    <!—注意下面的:memcache在使用的时候会用到-->

    <beans:bean id="memcache" class="com.whalin.MemCached.SockIOPool"

       factory-method="getInstance" init-method="initialize" destroy-method="shutDown">

       <beans:constructor-arg>

           <beans:value>memcache</beans:value>

       </beans:constructor-arg>

       <beans:property name="servers">

           <beans:list>

                 <!--服务器地址-->

              <beans:value>172.16.24.27:11211</beans:value>

           </beans:list>

       </beans:property>

         <!--初始化时对每个服务器建立的连接数目-->

       <beans:property name="initConn">

           <beans:value>20</beans:value>

       </beans:property>

         <!--每个服务器建立最小的连接数-->

       <beans:property name="minConn">

           <beans:value>10</beans:value>

       </beans:property>

         <!--每个服务器建立最大的连接数-->

       <beans:property name="maxConn">

           <beans:value>50</beans:value>

       </beans:property>

         <!--自查线程周期进行工作,其每次休眠时间-->

       <beans:property name="maintSleep">

           <beans:value>1000</beans:value>

       </beans:property>

         <!--Socket的参数,如果是true在写数据时不缓冲,立即发送出去-->

       <beans:property name="nagle">

           <beans:value>false</beans:value>

       </beans:property>

         <!--Socket阻塞读取数据的超时时间-->

       <beans:property name="socketTO">

           <beans:value>1000</beans:value>

       </beans:property>


        

<!-- memcached的连接路径出现问题的时候,代码连接的时候时间超时设置 -->


       <beans:property name="socketConnectTO">


           <beans:value>500</beans:value>


       </beans:property>



    </beans:bean>

</beans:beans>

3 web.xml中配置:

4 编写MemcachedUtils,代码如下:

package com.kuman.cartoon.utils; 

 

import java.util.Date;

 

import org.apache.log4j.Logger;

 

import com.whalin.MemCached.MemCachedClient;

 

 

/**

 * @ClassName: MemcachedUtils

 * @Description: Memcached工具类

 * @author

 * @date 2015-8-6

 * 

 */

public class MemcachedUtils {

    private static final Logger logger = Logger.getLogger(MemcachedUtils.class); 

    private static MemCachedClient cachedClient;

    static { 

        if (cachedClient == null)

            //括号中的名称要和配置文件memcached-context.xml中的名称一致

            cachedClient = new MemCachedClient("memcache");

    } 

 

    private MemcachedUtils() {} 

 

    /**

     * 向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。

     * 

     * @param key

     *           

     * @param value

     *           

     * @return

     */ 

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

        return setExp(key, value, null); 

    } 

 

    /**

     * 向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。

     * 

     * @param key

     *           

     * @param value

     *           

     * @param expire

     *            过期时间 New Date(1000*10):十秒后过期

     * @return

     */ 

    public static boolean set(String key, Object value, Date expire) { 

        return setExp(key, value, expire); 

    } 

 

    /**

     * 向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。

     * 

     * @param key

     *           

     * @param value

     *           

     * @param expire

     *            过期时间 New Date(1000*10):十秒后过期

     * @return

     */ 

    private static boolean setExp(String key, Object value, Date expire) { 

        boolean flag = false; 

        try { 

            flag = cachedClient.set(key, value, expire); 

        } catch (Exception e) { 

            // 记录Memcached日志 

                 logger.error("Memcached set方法报错,key值:" + key + "\r\n"); 

        } 

        return flag; 

    } 

 

    /**

     * 仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。

     * 

     * @param key

     *           

     * @param value

     *           

     * @return

     */ 

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

        return addExp(key, value, null); 

    } 

 

    /**

     * 仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。

     * 

     * @param key

     *           

     * @param value

     *           

     * @param expire

     *            过期时间 New Date(1000*10):十秒后过期

     * @return

     */ 

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

        return addExp(key, value, expire); 

    }

 

    /**

     * 仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。

     * 

     * @param key

     *           

     * @param value

     *           

     * @param expire

     *            过期时间 New Date(1000*10):十秒后过期

     * @return

     */ 

    private static boolean addExp(String key, Object value, Date expire) { 

        boolean flag = false; 

        try { 

            flag = cachedClient.add(key, value, expire); 

        } catch (Exception e) { 

            // 记录Memcached日志 

            logger.error("Memcached add方法报错,key值:" + key + "\r\n"); 

        } 

        return flag; 

    } 

 

    /**

     * 仅当键已经存在时,replace 命令才会替换缓存中的键。

     * 

     * @param key

     *           

     * @param value

     *           

     * @return

     */ 

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

        return replaceExp(key, value, null); 

    } 

 

    /**

     * 仅当键已经存在时,replace 命令才会替换缓存中的键。

     * 

     * @param key

     *           

     * @param value

     *           

     * @param expire

     *            过期时间 New Date(1000*10):十秒后过期

     * @return

     */ 

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

        return replaceExp(key, value, expire); 

    } 

 

    /**

     * 仅当键已经存在时,replace 命令才会替换缓存中的键。

     * 

     * @param key

     *           

     * @param value

     *           

     * @param expire

     *            过期时间 New Date(1000*10):十秒后过期

     * @return

     */ 

    private static boolean replaceExp(String key, Object value, Date expire) { 

        boolean flag = false; 

        try { 

            flag = cachedClient.replace(key, value, expire); 

        } catch (Exception e) { 

            logger.error("Memcached replace方法报错,key值:" + key + "\r\n"); 

        } 

        return flag; 

    } 

 

    /**

     * get 命令用于检索与之前添加的键值对相关的值。

     * 

     * @param key

     *           

     * @return

     */ 

    public static Object get(String key) { 

        Object obj = null; 

        try { 

            obj = cachedClient.get(key); 

        } catch (Exception e) { 

            logger.error("Memcached get方法报错,key值:" + key + "\r\n"); 

        } 

        return obj; 

    } 

 

    /**

     * 删除 memcached 中的任何现有值。

     * 

     * @param key

     *           

     * @return

     */ 

    public static boolean delete(String key) { 

        return deleteExp(key, null); 

    } 

 

    /**

     * 删除 memcached 中的任何现有值。

     * 

     * @param key

     *           

     * @param expire

     *            过期时间 New Date(1000*10):十秒后过期

     * @return

     */ 

    public static boolean delete(String key, Date expire) { 

        return deleteExp(key, expire); 

    } 

 

    /**

     * 删除 memcached 中的任何现有值。

     * 

     * @param key

     *           

     * @param expire

     *            过期时间 New Date(1000*10):十秒后过期

     * @return

     */ 

    private static boolean deleteExp(String key, Date expire) { 

        boolean flag = false; 

        try { 

            flag = cachedClient.delete(key, expire); 

        } catch (Exception e) { 

            logger.error("Memcached delete方法报错,key值:" + key + "\r\n");

        } 

        return flag; 

    } 

 

    /**

     * 清理缓存中的所有键/值对

     * 

     * @return

     */ 

    public static boolean flashAll() { 

        boolean flag = false; 

        try { 

            flag = cachedClient.flushAll(); 

        } catch (Exception e) { 

            logger.error("Memcached flashAll方法报错\r\n"); 

        } 

        return flag; 

    } 

 

    /*@Test

    public void testMemcachedSpring() { 

        MemcachedUtils.set("aa", "bb", new Date(1000 * 60)); 

        Object obj = MemcachedUtils.get("aa"); 

        System.out.println("***************************"); 

        System.out.println(obj.toString()); 

    }*/

        

}

5 SpringMVC中调用的方式:

@RequestMapping(value = "/toIndex")

         public String toIndex(Model model) {

                 //方法一,这种不建议使用

                 //MemCachedClient memCachedClient = new MemCachedClient("memcache");

              //memCachedClient.set("name", "simple");

              //System.out.println(memCachedClient.get("name"));

            

                //方法二,建议这种

             MemcachedUtils.set("name", "simple");

             String name = (String)MemcachedUtils.get("name");

             System.out.println(name);

                  

             return "/admin/index";

         }

 



目录
相关文章
|
2月前
|
安全 Shell 网络安全
设置 码云 SSH 推送和拉取代码
设置 码云 SSH 推送和拉取代码
94 0
|
4月前
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
86 0
Github代码仓库SSH配置流程
|
4月前
|
网络安全 开发工具 git
拉取 gitee 代码,配置SSH,Please make sure you have the correct access rights
拉取 gitee 代码,配置SSH,Please make sure you have the correct access rights
72 1
|
4月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
104 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
4月前
|
网络安全 Windows
在Windows电脑上启动并配置SSH服务
在Windows电脑上启动并配置SSH服务
899 0
|
4月前
|
Ubuntu Shell 网络安全
【Ubuntu】配置SSH
【Ubuntu】配置SSH
108 0
|
4月前
|
安全 Linux 网络安全
在Linux中,如何配置SSH以确保远程连接的安全?
在Linux中,如何配置SSH以确保远程连接的安全?
|
4月前
|
安全 Linux Shell
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
264 0
|
1月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
6月前
|
安全 Linux Shell
Linux中SSH命令介绍
Linux中SSH命令介绍
153 2

热门文章

最新文章