【发布时间】:2014-05-15 03:03:45
【问题描述】:
我是 Redis 新手,想用我现有的 Spring 应用程序来实现它。
我的问题是使用具有相同键的不同 redisTemplate 来存储不同类型的值。
例如
我在 spring 中定义了 redisTemplate1 和 redisTemplate2 bean,比如。
<bean id="redisTemplate1" class ="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref ="connectionFactory" />
<bean id="redisTemplate2" class ="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref ="connectionFactory" />
在我的服务的 java 文件中,我使用这两个 redis 模板创建了两个不同的数据结构。
@Autowired
@Qualifier(value = "redisTemplate1")
private RedisTemplate<String, Student> redisTemplate1;
@Autowired
@Qualifier(value = "redisTemplate2")
private RedisTemplate<String, Address> redisTemplate2;
并且,使用以下模式来存储数据。
redisTemplate1.opsForHash().put("KEY1", student.getId(), student);
redisTemplate2.opsForHash().put("KEY1", address.getId(), address);
情况是,我的每个表的主键都以 1 开头。所以 1 是否有 Student 和 Address 的主键。
我正在使用下面的行从数据存储中获取学生。
(Student) redisTemplate1.opsForHash().get("KEY1", 1);
但是,不幸的是它会产生异常。
java.lang.ClassCastException: com.redis.model.Address cannot be cast to com.redis.model.Student
所以,我的问题是,
- 是否可以使用多个 redis 模板?
- 如果是,我可以使用相同的密钥(每个模板唯一)来存储不同类型的数据并访问使用该模板和密钥存储的相同数据吗?
- 如果不是,执行相同操作的替代方法是什么?
提前致谢。
【问题讨论】:
标签: spring spring-mvc redis