1、jar包
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2、JavaBean 配置
<bean id="poolConfig" class=" redis.clients.jedis.JedisPoolConfig">
<!-- 最大空闲数 -->
<property name="maxIdle" value="50" />
<!-- 最大连接数 -->
<property name="maxTotal" value="100" />
<!-- 最大等待时间 -->
<property name="maxWaitMillis" value="20000" />
</bean>
<bean id="connectionFactory" class=" org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="localhost" />
<property name="port" value="6379" />
<!-- <property name="password" value="localhost"/> -->
<property name="poolConfig" ref="poolConfig" />
</bean>
<bean id="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"></bean>
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultSerializer" ref="stringRedisSerializer" />
<property name="keySerializer" ref="stringRedisSerializer" />
<property name="valueSerializer" ref="jdkSerializationRedisSerializer" />
</bean>
3、使用redisTemplate存取值
注意事项:
由于配置文件中使用的是jdkSerializationRedisSerializer,所以entity必须实现序列化
- 实体类
public class Role implements Serializable {
private Integer roleId;
private String roleName;
// 省略getter setter
}
- 调用和存取
@Controller
public class TestController {
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping("/test")
public void test() {
Role role = new Role();
role.setRoleId(1);
role.setRoleName("admin");
// 存值
redisTemplate.opsForValue().set("role_1", role);
// 取值
Role role2 = (Role) redisTemplate.opsForValue().get("role_1");
System.out.println(role2.getRoleName());
}
}
- 使用同一连接的写法
@Controller
public class TestController {
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping("/test")
public void test() {
Role role = new Role();
role.setRoleId(1);
role.setRoleName("admin");
// 同一连接
SessionCallback callBack = new SessionCallback<Role>() {
@Override
public Role execute(RedisOperations operations) throws DataAccessException {
operations.boundValueOps("role_1").set(role);
return (Role) operations.boundValueOps("role_1").get();
}
};
// 取值
Role role2 = (Role) redisTemplate.execute(callBack);
System.out.println(role2.getRoleName());
}
}
网友评论