<一>. 简单介绍:
Spring Data提供了对很多数据访问技术的支持,比如JPA、Redis、MongoDB、Hadoop等等。
Spring Data Redis(以下简称SDR)在Jedis的基础上,提供了对Redis访问的进一步封装。使用SDR,不再需要手动维护连接的建立、释放,对对象序列化提供了默认实现、不再需要事必亲为。
<二>. 关于依赖:
<properties> <redis.version>2.6.2</redis.version> <spring-data-redis.version>1.5.0.RELEASE</spring-data-redis.version> </properties>
<!-- redis 连接客户端:jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${redis.version}</version> </dependency> <!-- spring集成的基于jedis的redis客户端操作jar包--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>${spring-data-redis.version}</version> </dependency>
<三>. 关于配置:applicationContext.xml
1. 定义连接工厂:关于jedisPoolConfig的配置,参见之前的博客。
- <bean id = "jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
- <constructor-arg index="0" ref="jedisPoolConfig"/>
- <property name="hostName" value="${redis.host}"/>
- <property name="port" value="${redis.port}"/>
- <property name="timeout" value="${redis.timeout}"/>
- <property name="password" value="${redis.password}"/>
- </bean>
2. 定义redisTemplate:提供了对Jedis进行的通用API操作。
- <bean id = "redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
- <property name="connectionFactory" ref="jedisConnectionFactory"/>
- <property name="keySerializer">
- <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
- </property>
- </bean>
说明:
@ SDR默认采用JDK的序列化机制:
使用JdkSerializationRedisSerializer类,进行对象和byte[]之间的相互转换,就像之前已经做得那样。
@ 通常情况下,我们使用字符串形式的key即可,因此:指定keySerializer为StringRedisSerializer类,如上配置。
3. 使用redisTemplate:作为字段,注入到Service层即可。
<四>. 我最喜欢的CRUD:不解释
- /*
- * Copyright (c) 2014, Nick Xu, All rights reserved.
- */
- package com.sdr.cache;
- import org.springframework.data.redis.core.RedisTemplate;
- import com.sdr.model.Userinfo;
- /**
- * 功能简述: SDR入门操作.
- * @author Nick Xu
- * @version 1.0
- */
- public class UserStorage {
- private RedisTemplate<String, Userinfo> redisTemplate;
- public void addOrUpdate(Userinfo user) {
- redisTemplate.opsForValue().set("user.userid." + user.getUserId(), user);
- }
- public Userinfo load(int userId) {
- return redisTemplate.opsForValue().get("user.userid." + userId);
- }
- public void delete(int userId) {
- redisTemplate.delete("user.userid." + userId);
- }
- public RedisTemplate<String, Userinfo> getRedisTemplate() {
- return redisTemplate;
- }
- public void setRedisTemplate(RedisTemplate<String, Userinfo> redisTemplate) {
- this.redisTemplate = redisTemplate;
- }
- }