Spring5中Redis配置

技术更新太快了要跟上。。。
Redis的Maven引用
        <dependency>            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>2.2.4.RELEASE</version>
        </dependency>
Redis的配置
    <!-- redis配置 -->    <!--初始化连接池配置-->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="${redis.maxIdle}"/>
        <property name="maxTotal" value="${redis.maxTotal}"/>
        <property name="maxWaitMillis" value="10000"/>
        <property name="testOnBorrow" value="true"/>
        <property name="testOnReturn" value="true"/>
    </bean>
    <bean id="redisPassword" class="org.springframework.data.redis.connection.RedisPassword">
        <constructor-arg name="thePassword" value="${redis.password}"></constructor-arg>
    </bean>
    <!-- RedisSentinelConfiguration(主从复制)-->
    <!-- RedisClusterConfiguration(集群) -->
    <!-- 单机模式 -->
    <bean id="redisStandaloneConfiguration" class="org.springframework.data.redis.connection.RedisStandaloneConfiguration">
        <property name="hostName" value="${redis.host}"/>
        <property name="port" value="${redis.port}"/>
        <property name="password" ref="redisPassword"/>
    </bean>
    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <constructor-arg name="standaloneConfig" ref="redisStandaloneConfiguration"/>
    </bean>
    <!--手动设置 key  与 value 的序列化方式-->
    <bean id="keySerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    <bean id="valueSerializer" class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"/>
    <!--配置jedis模板  -->
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory"/>
        <property name="keySerializer" ref="keySerializer"/>
        <property name="valueSerializer" ref="valueSerializer"/>
        <property name="hashKeySerializer" ref="keySerializer"/>
        <property name="hashValueSerializer" ref="valueSerializer"/>
    </bean>
    <!--也可以StringRedisTemplate  专注于String的操作  -->
    <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
        <!--<property name="connectionFactory" ref="jedisConnectionFactory"></property>-->
        <!--在StringRedisTemplate与redisTemplate不同,可以直接造构造器中传入ConnectionFactory-->
        <constructor-arg name="connectionFactory" ref="jedisConnectionFactory"></constructor-arg>
        <property name="keySerializer" ref="keySerializer"/>
        <property name="valueSerializer" ref="valueSerializer"/>
        <property name="hashKeySerializer" ref="keySerializer"/>
        <property name="hashValueSerializer" ref="valueSerializer"/>
    </bean>
Redis简单工具
package com.fourlambs.proxyip.base;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.Iterator;
import java.util.concurrent.TimeUnit;
/**
 * @author yuwan [2018/11/24 16:57]
 * @comment Redis util.
 */
@Component
public class RedisUtil {
    @Autowired
    private RedisTemplate redisTemplate;
    public RedisTemplate getRedisTemplate() {
        return redisTemplate;
    }
    /**
     * 存字符串缓存,并设置过期时间
     *
     * @param key
     * @param value
     * @param timeOut 单位s
     */
    public Boolean set(String key, String value, Long timeOut) {
        redisTemplate.opsForValue().set(key, value);
        //给缓存设置清除时间
        return redisTemplate.expire(key, timeOut, TimeUnit.SECONDS);
    }
    public Boolean setObject(String key, Object object, Long timeOut) {
        redisTemplate.opsForValue().set(key,  object);
        //给缓存设置清除时间
        return redisTemplate.expire(key, timeOut, TimeUnit.SECONDS);
    }
    //计数
    public long increment(String key, long lon, long timeout) {
        long l = redisTemplate.opsForValue().increment(key, lon);
        //给缓存设置清除时间
        boolean b = redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
        return b ? l : 0;
    }
    /**
     * 获取缓存
     */
    public Object get(Object key) {
        return redisTemplate.opsForValue().get(key);
    }
    /**
     * 有没有缓存
     */
    public Boolean hasKey(Object key) {
        return redisTemplate.hasKey(key);
    }
    /**
     * 删除
     */
    public void delete(Object key) {
        redisTemplate.delete(key);
    }
    /**
     * 获取所有的key
     * @param keyHeader 如:session*
     */
    public Iterator getKeys(Object keyHeader) {
         return redisTemplate.keys(keyHeader).iterator();
    }
    /**
     * 获取剩余过期时间 秒
     * @param key
     * @return -1 则无限时间
     */
    public Long getExpire(String key) {
        return redisTemplate.getExpire(key, TimeUnit.SECONDS);
    }
    /**
     * 获取剩余过期时间
     * @param key
     * @return -1 则无限时间
     */
    public Long getExpire(String key, TimeUnit timeUnit) {
        return redisTemplate.getExpire(key, timeUnit);
    }
    /**
     * 设置过期时间 秒
     * @param key
     * @param timeout
     * @return 是否设置成功
     */
    public Boolean expire(String key, Long timeout, TimeUnit timeUnit) {
        return redisTemplate.expire(key, timeout, timeUnit);
    }
    // 追加时间
    public Boolean expire(String key, long timeout) {
        return redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
    }
}
以上是 Spring5中Redis配置 的全部内容, 来源链接: utcz.com/z/514315.html

