• 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;
            }

  • 相关阅读:
    uboot的Makefile分析
    S3C2440上触摸屏驱动实例开发讲解(转)
    linux嵌入式驱动软件开发(csdnblog)
    [连接]研究MSN的一些参考资料(MSNP15)
    关于Asp.net中使用以下代码导出Excel表格的问题
    FCKEditor在Asp.net的安装
    奥运后,接手两个项目,PECT培训,CIW培训,系分考试...........一堆流水帐
    [转]甩掉数据字典,让Sql Server数据库也来一个自描述
    SQL Server 调优将会用到的非常好的DMV
    SQL Server 监视数据文件大小变化
  • 原文地址:https://www.cnblogs.com/domi22/p/8059681.html
Copyright © 2020-2023  润新知