redis练习时报错:WRONGTYPE Operation against a key holding the wrong kind of value
博主ide上练习redis的基本操作时出现的问题,在反复检查了代码没有问题后实在没办法去网上查找资料
@Test
void test2() {
stringRedisTemplate.opsForList().leftPush("name","zhangsan");
//添加多个元素
stringRedisTemplate.opsForList().leftPushAll("name","lisi","wangwu","zhaoliu");
//获取所有元素
List<String> name = stringRedisTemplate.opsForList().range("names", 0, -1);
System.out.println("=======遍历所有元素");
for (String s : name) {
System.out.println("s = " + s);
}
}
然而还是没有解决问题,最后终于发现问题的所在,在单元测试1和2中我使用了同一个key,导致我在单元测试2中测试的时候报错,所以一定要保证key的唯一性
@Test
void test1() {
//简单字符串类型
stringRedisTemplate.opsForValue().set("name", "zs");
//判断key是否存在
Boolean key = stringRedisTemplate.hasKey("name");
System.out.println("key = " + key);
//查看key的类型
DataType type = stringRedisTemplate.type("name");
System.out.println("type = " + type);
if (key) {
String name = stringRedisTemplate.opsForValue().get("name");
System.out.println("name = " + name);
}
//设置过期时间的字符串类型
stringRedisTemplate.opsForValue().set("age", "15", 30, TimeUnit.SECONDS);
String age = stringRedisTemplate.opsForValue().get("age");
System.out.println("age = " + age);
//获取key的有效时间
Long age1 = stringRedisTemplate.getExpire("age");
System.out.println("age的剩余时间 = " + age1);
Set<String> keys = stringRedisTemplate.keys("*");
System.out.println("======遍历所有的key");
for (String s : keys) {
System.out.println("s = " + s);
}
}
@Test
void test2() {
stringRedisTemplate.opsForList().leftPush("name","zhangsan");
//添加多个元素
stringRedisTemplate.opsForList().leftPushAll("name","lisi","wangwu","zhaoliu");
//获取所有元素
List<String> name = stringRedisTemplate.opsForList().range("names", 0, -1);
System.out.println("=======遍历所有元素");
for (String s : name) {
System.out.println("s = " + s);
}
}