zoukankan      html  css  js  c++  java
  • Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。

    maven使用:

    <!--redis   jar包-->
        <dependency>
          <groupId>redis.clients</groupId>
          <artifactId>jedis</artifactId>
          <version>2.9.0</version>
        </dependency>
        <dependency>
          <groupId>org.springframework.data</groupId>
          <artifactId>spring-data-redis</artifactId>
          <version>1.6.2.RELEASE</version>
        </dependency>
    
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-ehcache</artifactId>
          <version>1.0.0</version>
        </dependency>

    1:redis的连接信息

    #访问地址
    redis.host=127.0.0.1
    #访问端口
    redis.port=6379
    #注意,如果没有password,此处不设置值,但这一项要保留
    redis.password=
    
    #最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
    redis.maxIdle=300
    #连接池的最大数据库连接数。设为0表示无限制
    redis.maxActive=600
    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
    redis.maxWait=1000
    #在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;
    redis.testOnBorrow=true

    2:spring和redis的整合

     1 <beans xmlns="http://www.springframework.org/schema/beans"
     2        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3        xmlns:p="http://www.springframework.org/schema/p"
     4        xmlns:mvc="http://www.springframework.org/schema/mvc"
     5        xmlns:util="http://www.springframework.org/schema/util"
     6        xmlns:aop="http://www.springframework.org/schema/aop"
     7        xmlns:context="http://www.springframework.org/schema/context"
     8        xmlns:task="http://www.springframework.org/schema/task"
     9        xsi:schemaLocation="http://www.springframework.org/schema/beans
    10       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    11       http://www.springframework.org/schema/util
    12       http://www.springframework.org/schema/util/spring-util-4.3.xsd
    13       http://www.springframework.org/schema/mvc
    14       http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
    15       http://www.springframework.org/schema/aop
    16       http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    17       http://www.springframework.org/schema/context
    18       http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    19 
    20 
    21     <!-- 引入properties配置文件 -->
    22     <context:property-placeholder location="classpath:redis.properties" ignore-unresolvable="true"/>
    23 
    24     <!-- redis连接池 -->
    25     <bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig">
    26         <property name="maxTotal" value="${redis.maxActive}"></property>
    27         <property name="maxIdle" value="${redis.maxIdle}"></property>
    28         <property name="maxWaitMillis" value="${redis.maxWait}"></property>
    29         <property name="testOnBorrow" value="${redis.testOnBorrow}"></property>
    30     </bean>
    31 
    32     <!-- redis连接工厂 -->
    33     <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    34         <property name="hostName" value="${redis.host}"></property>
    35         <property name="port" value="${redis.port}"></property>
    36         <property name="password" value="${redis.password}"></property>
    37         <property name="poolConfig" ref="jedisConfig"></property>
    38     </bean>
    39     <!-- redis操作模板,这里采用尽量面向对象的模板 -->
    40     <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
    41         <property name="connectionFactory" ref="connectionFactory"/>
    42         <!--     如果不配置Serializer,那么存储的时候只能使用String,如果用对象类型存储,那么会提示错误 can't cast to String!!!-->
    43         <property name="keySerializer">
    44             <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    45         </property>
    46         <property name="valueSerializer">
    47             <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
    48         </property>
    49         <!--开启事务-->
    50         <property name="enableTransactionSupport" value="true"/>
    51     </bean>
    52 </beans>

    3:在业务代码中使用

     1 /**
     2      * 使用redis的缓存机制
     3      */
     4     @Autowired
     5     private RedisTemplate redisTemplate;
     6 
     7     /**
     8      * 分页查询所有
     9 
    10      * @return
    11      */
    12     @Override
    13     public List<Goods> listGoods() {
    14         List<Goods> goods = goodsDao.listGoods();
    15         for(Goods goods1:goods){
    16             //把每一个goods对象保存到redis中的List中。
    17             redisTemplate.opsForList().rightPush("goodsList", goods1);
    18         }
    19         return goods;
    20     }

    4:测试

    @Test
        public void testListGoods(){
            List<Goods> goods = redisTemplate.opsForList().range(
                    "goodsList", 0, -1);
            if(goods.size()==0){
                List<Goods> goods1 = goodsService.listGoods();
                for (Goods goods2:goods1){
                    System.out.println(goods2);
                }
            }else {
               // System.out.println(goods);
                for(Goods goods1:goods){
                    System.out.println(goods1);
                }
            }
        }

    可以看到已经保存到redis的数据库中了。

     5:编写一个RedisTemplate的公用类

    package com.betteryanwo.util;
    
    import org.springframework.data.redis.core.*;
    
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    /**
     * Create by 六
     * Date:18-7-16
     * RedisTemplate的公用类
     */
    public class RedisTemplateUtil {
    
        private RedisTemplate redisTemplate;
    
        public RedisTemplateUtil(RedisTemplate redisTemplate) {
            this.redisTemplate = redisTemplate;
        }
    
    
        public void set(String key, Object value) {
            ValueOperations valueOperations = redisTemplate.opsForValue();
            valueOperations.set(key, value);
    
            //BoundValueOperations的理解对保存的值做一些细微的操作
    //        BoundValueOperations boundValueOperations = redisTemplate.boundValueOps(key);
        }
    
        public Object get(String key) {
            return redisTemplate.opsForValue().get(key);
        }
    
        public void setList(String key, List<?> value) {
            //Operation  操作。
            ListOperations listOperations = redisTemplate.opsForList();
            listOperations.leftPush(key, value);
        }
    
        public Object getList(String key) {
            return redisTemplate.opsForList().leftPop(key);
        }
    
        public void setSet(String key, Set<?> value) {
            SetOperations setOperations = redisTemplate.opsForSet();
            setOperations.add(key, value);
        }
    
        public Object getSet(String key) {
            return redisTemplate.opsForSet().members(key);
        }
    
    
        public void setHash(String key, Map<String, ?> value) {
            HashOperations hashOperations = redisTemplate.opsForHash();
            hashOperations.putAll(key, value);
        }
    
        public Object getHash(String key) {
            return redisTemplate.opsForHash().entries(key);
        }
    
    
        public void delete(String key) {
            redisTemplate.delete(key);
        }
    
        public void clearAll() {
            redisTemplate.multi();
        }
    }
  • 相关阅读:
    为什么 PCB 生产时推荐出 Gerber 给工厂?
    Fedora Redhat Centos 有什么区别和关系?
    【KiCad】 如何给元件给元件的管脚加上划线?
    MCU ADC 进入 PD 模式后出现错误的值?
    FastAdmin 生产环境升级注意
    EMC EMI 自行评估记录
    如何让你的 KiCad 在缩放时不眩晕?
    KiCad 5.1.0 正式版终于发布
    一次单片机 SFR 页引发的“事故”
    java基础之集合
  • 原文地址:https://www.cnblogs.com/bulrush/p/9318982.html
Copyright © 2011-2022 走看看