zoukankan      html  css  js  c++  java
  • redis—Spring中redis缓存的简单使用

    这里使用的是 Spring-4.3 , redis-2.8 的版本
     
    1、添加maven依赖
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.8.0</version>
    </dependency>
    2、编写自己的redisAPI

    package com.del.tools; 
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool; 
    
    /**
     * 用于缓存的数据访问对象
     * @author Domi 
     */
    public class RedisAPI { 
           
            //引入jedis连接池对象
            public JedisPool jedisPool; 
            public JedisPool getJedisPool() {
                   return jedisPool;
            } 
            public void setJedisPool(JedisPool jedisPool) {
                   this.jedisPool = jedisPool;
            }
     
           /**
            * 缓存的设置
            */
            public boolean set(String key,String value){
                   Jedis jedis = null;              
                   try {                      
                           jedis = jedisPool.getResource();                      
                           jedis.set(key,value);
                           return true;
                   } catch (Exception e) {
                           // TODO: handle exceptionr
                           e.printStackTrace();                      
                   }finally{
                           returnResource(jedisPool, jedis);                      
                   }              
                   return false;
            }      
                  
            /**
             * 判断缓存中是否存在某个key值
             */
            public boolean exist(String key){
                   Jedis jedis =null;
                    try {
                           jedis = jedisPool.getResource();
                           return jedis.exists(key);
                   } catch (Exception e) {
                           // TODO: handle exception
                   }finally{
                           returnResource(jedisPool, jedis);
                           System.out.println("关闭成功===》");                      
                   }
                   return false;
            }
           
            /**
             * 获得缓存中的key
             */       
            public String get(String key){
                   String value = null;
                   Jedis jedis =null;
                   try {
                           jedis = jedisPool.getResource();     
                           value = jedis.get(key);
                   } catch (Exception e) {
                           // TODO: handle exception
                   }finally{
                           returnResource(jedisPool, jedis);                      
                   }              
                   return value;
             }
           
            /**
             * 返还jedisPool 
             */
            public static void returnResource(JedisPool jedisPool,Jedis jedis){
                   if (jedis!=null) {
                           jedisPool.returnResource(jedis);
                   }             
            }             
    }
     
    3、用spring管理redis的bean组件

    <!-- jedis连接池配置-->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> 
        <property name="maxTotal" value="1000"/> <!-- 控制一个pool可分配多少个jedis实例 --> 
        <property name="maxIdle" value="200" />   <!-- 控制一个pool最多有多少个状态为idle(空闲)的jedis实例 --> 
        <property name="maxWaitMillis" value="2000" />  <!-- 表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException --> 
        <property name="testOnBorrow" value="true" /> <!-- 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的 --> 
    </bean> 
     
    <!-- 连接jedis服务器 -->
    <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">
        <constructor-arg ref="jedisPoolConfig"/>
        <constructor-arg value="127.0.0.1"/>
        <constructor-arg value="6379"/>
    </bean>
     
    <!-- 配置redisAPI -->
    <bean id="redisAPI" class="com.del.tools.RedisAPI">
         <property name="jedisPool" ref="jedisPool"/>
    </bean>
     
    4、在业务中使用redisAPI
    /*
             *  根据userID查询购物车列表
             *  使用redis缓存
             */
            @RequestMapping(value="/list")
            public ModelAndView doBuyCarList(HttpSession session){              
                  
                   ModelAndView madnv = new ModelAndView();
                   User user = (User)session.getAttribute("hasLogin");
                   if(user!=null){
    
                           //先判斷redis裡面有沒有值                      
                           List<BuyCar> buycarlist1 = null;                             
                           buycarlist1 = buyCarService.findBuyCarList(user.getUserid()); 
                          String buycarlist = JSON.toJSONString(buycarlist1,true);
                           redisAPI.set("carlist"+user.getUserid(), buycarlist);
                           madnv.addObject("buycarlist", buycarlist1);
                           System.out.println("buycarlist====="+buycarlist1);
                           System.out.println("FROM DB==>");    
                              
                           }else{
                                     String buycarlist = redisAPI.get("carlist"+user.getUserid());                              
                                     if (buycarlist!=null && !"".equals(buycarlist)) {
                                           buycarlist1 =JSON.parseArray(buycarlist, BuyCar.class);
                                           madnv.addObject("buycarlist", buycarlist1);
                                           System.out.println("buycarlist====="+buycarlist);
                                           System.out.println("FROM REDIS==>");
                                     }else{
                                                 System.out.println("error==>");
                                   } 
                           }
                   }
                   madnv.setViewName("buycar/shopping.jsp");              
                   return madnv;
            }

  • 相关阅读:
    团体程序设计天梯赛-练习集L1-002. 打印沙漏
    WUOJ-ACM :1003: 零起点学算法78——牛牛
    ZOJ-2965
    天梯赛-L1-018. 大笨钟
    代码哲学 摒弃“够用就行”的心态
    github 源码阅读
    Biopython SeqIO 读取序列文件,读取信息,写入序列
    Biopython 模块处理Seq序列 方法
    coursera 有比较丰富的生物信息等课程 win7 访问设置
    python 正则匹配 csv文件中特殊符号如■高风险 这样的black block
  • 原文地址:https://www.cnblogs.com/domi22/p/8059681.html
Copyright © 2011-2022 走看看