Redis是一种性能非常高效的Key-Value数据库,在企业项目开发中应用广泛,因为一直用Spring,所以决定使用Spring支持的spring-data-redis,java中Redis有多种客户端,Spring推荐的是
Jedis,这篇文章就是基于Jedis的。

SDR(Spring Data Redis)简介

**SDR(Spring Data Redis)**支持低层次的通过连接器connector连接到Redis,支持高层次的友好的模板类RedisTemplate,RedisTemplate是建立在低级别的connection基础之上。RedisConnection接收或返回字节数组
需要自身处理连接,比如关闭连接,而RedisTemplate负责处理串行化和反串行化,并且管理对连接进行管理。
RedisTemplate提供操作视图,比如(Bound)ValueOperations,(Bound)ListOperations,(Bound)SetOperations,(Bound)ZSetOperations,(Bound)HashOperations。RedisTemplate是线程安全的,能够用于多个实例中。
RedisTemplate默认选择java-based串行化,也可以切换为其它的串行化方式,或者设置enabledDefaultSerializerfalse或者设置串行化器为null,则RedisTemplateraw byte arrays表示数据。
SDR连接到redis通过RedisConnectionFactory来获得有效的RedisConnectionRedisConnection负责建立和处理和redis后端通信。RedisConnection提供getNativeconnection返回用来通信的底层connection

Maven的pom.xml文件配置

dependencies中添加两个依赖,分别是spring-data-redisjedis

1
2
3
4
5
6
7
8
9
10
11
12
13
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.4.2.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.6.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

Properties文件中配置Redis的基本参数

1
2
3
4
5
6
7
8
# Redis config
redis.host=localhost
redis.port=6379
redis.password=
redis.maxIdle=300
redis.maxActive=600
redis.maxWait=1000
redis.testOnBorrow=true

配置applicationContext.xml

applicationContext.xmlS中配置jedisConnFactoryjedisTemplate,加载Properties的各个属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?xml version="1.0" encoding="UTF-8"?>

<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"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package="com.zeusjava.osf.model" />
<context:component-scan base-package="com.zeusjava.osf.dao.impl" />
<context:component-scan base-package="com.zeusjava.osf.service" />
<context:component-scan base-package="com.zeusjava.osf.util" />
<context:property-placeholder location="classpath:spring/property.properties"/>

<bean id="jedisConnFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:usePool="true"
p:hostName="${redis.host}"
p:port="${redis.port}"
p:password="${redis.password}"/>

<!-- redis template definition -->
<bean id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connectionFactory-ref="jedisConnFactory">

<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="hashKeySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
<tx:annotation-driven transaction-manager="transactionManager" />


</beans>

在java类中使用Redis进行增删改查

下面是一个简单的查询的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Repository("userDao")
public class UserDAOImpl implements UserDAO{

@Autowired
@Qualifier("redisTemplate")
private RedisTemplate<String, String> redisTemplate;

@Resource(name="redisTemplate")
private HashOperations<String, String, Object> mapOps;


public User getUserByID(int id) {
String key = "user:"+id;
Object obj = mapOps.get("user",key);
User user = (User) obj;
return user;
}
}

本站由 Hank Zhao 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
本站总访问量