• Spring配置redis(自定义方法)


    spring和SpringBoot配置redis方法大不一样

    spring需要为redis专门配置xml,

    注解的方式:参考Spring 极速集成注解 redis 实践

    自定义方式:

    注意序列化部分,如果想用json序列化,需要指定序列化方法

    参考:https://blog.csdn.net/supermancoke/article/details/70053421

    redis.properties

    #redis中心
    redis.host=127.0.0.1
    redis.port=6379
    
    redis.maxIdle=100
    redis.maxActive=300
    redis.maxWait=1000
    redis.testOnBorrow=true
    redis.timeout=100000
    
    # 不需要加入缓存的类
    targetNames=xxxRecordManager,xxxSetRecordManager,xxxStatisticsIdentificationManager
    # 不需要缓存的方法
    methodNames=
    
    #设置缓存失效时间
    com.service.impl.xxxRecordManager= 60
    com.service.impl.xxxSetRecordManager= 60
    defaultCacheExpireTime=3600
    
    fep.local.cache.capacity =10000
    

      

    spring-redis.xml

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.2.xsd">
    
        <!-- jedis 配置 -->
        <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig" >
            <property name="maxIdle" value="${redis.maxIdle}" />
            <property name="maxWaitMillis" value="${redis.maxWait}" />
            <property name="testOnBorrow" value="${redis.testOnBorrow}" />
        </bean >
        <!-- redis服务器中心 -->
        <bean id="connectionFactory"  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >
            <property name="poolConfig" ref="poolConfig" />
            <property name="port" value="${redis.port}" />
            <property name="hostName" value="${redis.host}" />
            <property name="timeout" value="${redis.timeout}" ></property>
        </bean >
    
        <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >
            <property name="connectionFactory" ref="connectionFactory" />
            <property name="keySerializer" >
                <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
            </property>
            <property name="valueSerializer" >
                <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer" />
            </property>
        </bean >
    
        <bean id="redisUtil" class="com.shop.cache.RedisUtil" >
            <property name="redisTemplate" ref="redisTemplate" />
        </bean>
    
    </beans>
    

      

    package com.shop.cache;
    
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.ValueOperations;
    
    import java.io.Serializable;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    
    /**
     * Created by Skye on 2018/6/29.
     */
    public class RedisUtil {
        private Logger logger = LoggerFactory.getLogger(RedisUtil.class);
        private RedisTemplate<Serializable, Object> redisTemplate;
    
        /**
         * 批量删除对应的value
         *
         * @param keys
         */
        public void remove(final String... keys) {
            for (String key : keys) {
                remove(key);
            }
        }
    
        /**
         * 批量删除key
         *
         * @param pattern
         */
        public void removePattern(final String pattern) {
            Set<Serializable> keys = redisTemplate.keys(pattern);
            if (keys.size() > 0)
                redisTemplate.delete(keys);
        }
    
        /**
         * 删除对应的value
         *
         * @param key
         */
        public void remove(final String key) {
            if (exists(key)) {
                redisTemplate.delete(key);
            }
        }
    
        /**
         * 判断缓存中是否有对应的value
         *
         * @param key
         * @return
         */
        public boolean exists(final String key) {
            return redisTemplate.hasKey(key);
        }
    
        /**
         * 读取缓存
         *
         * @param key
         * @return
         */
        public Object get(final String key) {
            Object result = null;
            ValueOperations<Serializable, Object> operations = redisTemplate
                    .opsForValue();
            result = operations.get(key);
            return result;
        }
    
        /**
         * 写入缓存
         *
         * @param key
         * @param value
         * @return
         */
        public boolean set(final String key, Object value) {
            boolean result = false;
            try {
                ValueOperations<Serializable, Object> operations = redisTemplate
                        .opsForValue();
                operations.set(key, value);
                result = true;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    
        /**
         * 写入缓存
         *
         * @param key
         * @param value
         * @return
         */
        public boolean set(final String key, Object value, Long expireTime) {
            boolean result = false;
            try {
                ValueOperations<Serializable, Object> operations = redisTemplate
                        .opsForValue();
                operations.set(key, value);
                redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
                result = true;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    
        public void setRedisTemplate(
                RedisTemplate<Serializable, Object> redisTemplate) {
            this.redisTemplate = redisTemplate;
        }
    }
    

      

    使用时

     @Autowired
        private RedisUtil redisUtil;
    
        @Override
        public LocalUser getLocalUserByUserNameAndPwd(String username, String password) {
            LocalUser localuser = localUserDao.queryLocalUserByUserNameAndPWd( username, MD5.getMd5(password) );
    
            //生成cookie
            String token = UUIDUtil.uuid();
    
            redisUtil.set(token, localuser);
            return localuser;
        }
    

      

    UUIDUtil

    package com.shop.util;
    
    import java.util.UUID;
    
    public class UUIDUtil {
    	public static String uuid() {
    		return UUID.randomUUID().toString().replace("-", "");
    	}
    }
    

      

  • 相关阅读:
    LeetCode_222.完全二叉树的节点个数
    LeetCode_219.存在重复元素 II
    LeetCode_217.存在重复元素
    LeetCode_215.数组中的第K个最大元素
    LeetCode_21.合并两个有序链表
    LeetCode_206.反转链表
    LeetCode_205.同构字符串
    LeetCode_202.快乐数
    LeetCode_20.有效的括号
    LeetCode_2.两数相加
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/9242137.html
Copyright © 2020-2023  润新知