Spring里面怎么使用Redis

本文介绍了如何在Spring Boot应用中整合Redis,包括在pom.xml添加依赖,配置application.yml文件,自定义RedisConfig以设置RedisTemplate序列化方式,以及创建RedisUtil工具类简化操作。示例代码展示了如何存储和获取数据,方便日常开发中对Redis的操作。
摘要由CSDN通过智能技术生成

首先在pom.xml里面添加相关的依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.3.0</version>
        </dependency>
       

再在application.yml添加Redis的地址和端口号

spring:
  redis:
    host: 127.0.0.1
    port: 6379

然后新建一个 RedisConfig类,主要是用来自定义一个RedisTemplate实例,并且交给Spring容器来控制。 可能你会有疑惑,为什么要自定义RedisTemplate,这个看下源码,可以看到默认的是JDK序列化,根本不好用,我们希望的是key存的是String,value存的是对象的json。这需要自己去填充相关属性。

if (this.defaultSerializer == null) {
            this.defaultSerializer = new JdkSerializationRedisSerializer(this.classLoader != null ? this.classLoader : this.getClass().getClassLoader());
        }

        if (this.enableDefaultSerializer) {
            if (this.keySerializer == null) {
                this.keySerializer = this.defaultSerializer;
                defaultUsed = true;
            }

            if (this.valueSerializer == null) {
                this.valueSerializer = this.defaultSerializer;
                defaultUsed = true;
            }

            if (this.hashKeySerializer == null) {
                this.hashKeySerializer = this.defaultSerializer;
                defaultUsed = true;
            }

            if (this.hashValueSerializer == null) {
                this.hashValueSerializer = this.defaultSerializer;
                defaultUsed = true;
            }
        }

自定义RedisConfig

@Configuration
    public class RedisConfig {
    @Bean
    @SuppressWarnings("all")
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){

        RedisTemplate<String,Object> redisTemplate = new RedisTemplate<String,Object>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        RedisSerializer serializer = new GenericJackson2JsonRedisSerializer();
        //STRING的序列化
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        //key的序列化采用String类型的
        redisTemplate.setKeySerializer(stringRedisSerializer);
        //hash的key也采用String类型
        redisTemplate.setHashKeySerializer(stringRedisSerializer);
        //value采用jackson类型
        redisTemplate.setHashValueSerializer(serializer);
        return redisTemplate;
    }
}

由于在Java中,操纵Redis的语法和Redis中的命令有点不太一样,为了方便使用,我们自定义一个RedisUtil工具类,并把Redis里的命令当场方法名来封装一下。

@Component
public class RedisUtil {
    @Autowired
    @Qualifier("redisTemplate")
    private RedisTemplate redisTemplate;

    public  String getString(String Str) {
        return redisTemplate.opsForValue().get(Str).toString();
    }

    public Boolean setex(String key, String value) {
        try {
            redisTemplate.opsForValue().setIfAbsent(key, value, 60, TimeUnit.SECONDS);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }
}

现在我们来测试一下,查询Redis客户端,发现已经存入了!更多的命令等我完善RedisUtil后,单独再发出来~

@RestController
@RequestMapping("/customer")
public class LoginController {
    @Autowired
    Response response;
    @Autowired
    RedisUtil redisUtil;
    Log log = LogFactory.getLog(LoginController.class);

   
    @RequestMapping("/query")
    public Response userQuery(@RequestBody Customer customer) {
        String tokenStr = JWTUtil.createToken("wsc");
        System.out.println("tokenStr" + tokenStr);
        redisUtil.setex("jinan0621",tokenStr);

        response.setMsg("查询成功");
        response.setStatus(Response.SUCCESS);
        return response;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值