解决 java springboot整合Redis 拿取Redis客户端设置的值时拿不到或发生异常 问题

2023-12-21 16:42:56

这里 我们终端连接 Redis数据库
在这里插入图片描述
然后 我们在终端输入命令 set一个name 值为 xmm 然后终端 get name 也是拿到了值
在这里插入图片描述
然后 再拿java操作get name 要么给你个null 要不就直接异常
在这里插入图片描述
这边 我们需要另一个API StringRedisTemplate
因为RedisTemplate有两个泛型 我们给的是String, Object 它是以对象形式操作的
StringRedisTemplate是字符串形式操作的
而我们在终端 Redis 客户端装进去的数据 都是字符串形式操作的

然后 我们在config目录下创建一个类 名字随便取 叫 StringRedisConfig 参考代码如下

package com.example.webdom.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;

@Configuration
public class StringRedisConfig {

    @Bean
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        StringRedisTemplate template = new StringRedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }
}

在这里插入图片描述
然后 将测试类代码更改如下

package com.example.webdom;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

@SpringBootTest
public class WebDomApplicationTests {

    @Autowired
    private StringRedisTemplate StringRedisTemplate;

    @Test
    void set() {
        ValueOperations<String, String> ops = StringRedisTemplate.opsForValue();
        ops.set("hh","你好");
    }
    @Test
    void get() {
        ValueOperations<String, String> ops = StringRedisTemplate.opsForValue();
        Object age = ops.get("name");
        System.out.println(age);
    }
}

这里 我们条件装配了 StringRedisTemplate
然后 我们在声明它时 很明显 我们的泛型必须都是双字符串了 <String, String>
然后 get和set的方式还是没有变的
我们重新执行get 看看name有没有问题
在这里插入图片描述
很明显 这样就运行成功了

这里需要强调 设置和修改是同样的 比如 你系统中没有name 你 set name 111 初始值是 111 字段name
当你再次 set name 222 那么 它就会将name的值 修改为 222 没则设置 有则覆盖

文章来源:https://blog.csdn.net/weixin_45966674/article/details/135131391
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。