我是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) redisTemplate1.opsForHash().get("KEY1", 1);
但是,不幸的是它引发了一个异常。
java.lang.ClassCastException: com.redis.model.Address cannot be cast to com.redis.model.Student
所以,我的问题是:
- 是否可以使用多个Redis模板?
- 如果是,我可以使用相同的键(每个模板都唯一)存储不同类型的数据并访问使用该模板和键存储的相同数据吗?
- 如果不行,有哪些替代方法可以执行相同的操作?
提前致谢。