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()); } }