springDataRedis入门

该文介绍了如何在SpringBoot2.5.7项目中集成Redis数据存储,包括添加相关依赖、配置文件设置以及使用RedisTemplate进行数据库操作。文章还解决了RedisTemplate的序列化问题,采用了GenericJackson2JsonRedisSerializer进行Json序列化,并展示了存储User对象的示例。另外,提到了命令行客户端显示乱码时,可以使用--raw参数解决。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1、创建springboot项目2.5.7,添加依赖
在这里插入图片描述在这里插入图片描述

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

2、在application.yaml 中添加配置信息

spring:
  redis:
    host: 192.168.159.129
    port: 6379
    password: 123321
    jedis:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
        max-wait: 1000ms

3、注入RedisTemplate,进行数据库操作

package com.jing;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;

import javax.annotation.Resource;

@SpringBootTest
class SqpingdataredisDemoApplicationTests {

    @Resource
    private RedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        redisTemplate.opsForValue().set("name","虎虎");

        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }

}

在这里插入图片描述
问题解决:ObjectOutputStream序列化有点问题,自定义RedisTemplate序列化方式

在这里插入图片描述


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.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        //创建template
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        //设置连接工厂
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();

        //key和hashkey采用String序列化
        redisTemplate.setKeySerializer(RedisSerializer.string());
        redisTemplate.setHashKeySerializer(RedisSerializer.string());

        //value和hashValue采用Json序列化
        redisTemplate.setValueSerializer(jsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jsonRedisSerializer);
        return redisTemplate;
    }
}


在这里插入图片描述

redis命令行客户端仍乱码:启动时带上--raw
在这里插入图片描述
4、key中存储User对象

package com.jing.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private Integer age;

}

@Test
    void testSaveUser(){

        redisTemplate.opsForValue().set("user:100",new User("虎虎",21));
        User o = (User)redisTemplate.opsForValue().get("user:100");
        System.out.println("o = " + o);
    }

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值