Redis(二):Spring + RedisTemplate 操作Redis(单机)

1. POM.xml

<dependency>  
    <groupId>org.springframework.data</groupId>  
    <artifactId>spring-data-redis</artifactId>  
    <version>1.7.0.RELEASE</version>  
</dependency>  
<dependency>  
    <groupId>redis.clients</groupId>  
    <artifactId>jedis</artifactId>  
    <version>2.8.0</version>  
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.7.9</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.7.9</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.7.9</version>
</dependency>

2. redis.properties

#ip地址  
redis.host=192.168.170.129  
#端口号  
redis.port=6379  
#密码  
#redis.password=  
#链接数据库  
#redis.default.db=0  
#客户端超时时间单位是毫秒  
redis.timeout=100000  
  
#最大空闲数  
redis.maxIdle=300  
#最大连接数,0表示无限制,如果jedis2.4以后用redis.maxTotal  
#redis.maxActive=300  
redis.maxTotal=1000  
#最大建立连接等待时间  
redis.maxWaitMillis=1000  
#连接的最小空闲时间 默认18000000毫秒(30分钟)  
redis.minEvictableIdleTimeMillis=300000  
#每次释放连接的最大数目,默认3  
redis.numTestsPerEvictionRun=1024  
#逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1    
redis.timeBetweenEvictionRunsMillis=30000  
#是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个   
redis.testOnBorrow=true  
#在空闲时检查有效性, 默认false  
redis.testWhileIdle=true

3. application.xml

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    <property name="locations">  
        <list>  
            <value>classpath:dbconfig.properties</value>  
            <value>classpath:redis.properties</value>  
        </list>  
    </property>  
</bean>  
<!-- ==========================Jedis配置=========================== -->  
<!-- 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="${redis.maxWaitMillis}"/>
    <!-- 逐出连接的最小空闲时间 默认1800000毫秒(30分钟) -->  
    <property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}"/>
    <!-- 每次逐出检查时,逐出的最大数目,如果为负数就是 : 1/abs(n), 默认3 -->  
    <property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}"/>
    <!-- 逐出扫描的时间间隔(毫秒)如果为负数,则不运行逐出线程, 默认-1 -->  
    <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}"/>
    <!-- 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个 -->  
    <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
    <!-- 在空闲时检查有效性,默认false -->  
    <property name="testWhileIdle" value="${redis.testWhileIdle}"/>
</bean>  
<!-- redis单节点数据库连接配置 -->  
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">  
    <!-- IP地址 -->  
    <property name="hostName" value="${redis.host}"/>
    <!-- 端口  -->  
    <property name="port" value="${redis.port}"/>
    <!-- 密码 -->  
    <!-- <property name="password" value="${redis.password}"/> -->  
    <!-- 客户端超时时间单位是毫秒 -->  
    <property name="timeout" value="${redis.timeout}"/>
    <!-- 连接池配置 -->
    <property name="poolConfig" ref="jedisPoolConfig"/>
</bean>  
<!-- redisTemplate配置,redisTemplate是对Jedis的对redis操作的扩展 -->  
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">  
    <property name="connectionFactory" ref="jedisConnectionFactory"/>
    <!-- 如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,则会提示错误 -->  
    <property name="keySerializer">  
        <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    </property>  
    <property name="valueSerializer">  
        <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer" />  
    </property>  
    <property name="hashKeySerializer">  
        <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>  
    </property>  
    <property name="hashValueSerializer">  
        <bean class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer"/>  
    </property>
    <!-- 开启事务 -->  
    <property name="enableTransactionSupport" value="true"/>
</bean>  

4. 最后在Service中注入RedisTemplate

public class TblDeptServiceImpl extends ServiceImpl<TblDeptMapper, TblDept> implements TblDeptService {  
    @Autowired  
    private RedisTemplate redisTemplate;  
      
    public void setUser() {  
        //用redisTemplate操作  
        TblDept tblDept = new TblDept();  
        tblDept.setDeptId(123);  
        tblDept.setRmFlag(1);  
        redisTemplate.opsForHash().put("myhash","user",tblDept);  
    }  
} 
原文地址:https://www.cnblogs.com/yifanSJ/p/9103731.html