SpringDataRedis快速入门

SpringDataRedis

什么是SpringDataRedis

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis

SpringDataRedis中提供了RedsiTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类中

基于SpringBoot使用

1.引入依赖

复制代码
  <!--添加 redis 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2.配置yml文件

复制代码
spring:
  redis:
    host: 你的虚拟机ip
    port: 端口号
    password: 你的redis密码
    lettuce:
      pool:
        max-active: 8 #最大连接
        max-idle: 8 #最大空闲连接
        min-idle: 0 #最小空闲连接
        max-wait: 100ms #连接等待时间

3.注入RedisTemolate

java 复制代码
 @Autowired
    RedisTemplate redisTemplate;

4.编写测试

java 复制代码
@SpringBootTest
public class RedisDemoApplicationTests {

    @Autowired
    RedisTemplate redisTemplate;

    @Test
    void Test(){
        //写入一条String数据
        redisTemplate.opsForValue().set("name","你好");
        //获取String数据
        Object res = redisTemplate.opsForValue().get("name");
        System.out.println(res);
    }
}

redistemplate默认将key和value当作java对象,会自动将key和value序列化

我们可以自定义RedisTemplate的序列化方式

java 复制代码
@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){
        //创建RedisTemplate对象
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //设置连接工厂
        template.setConnectionFactory(connectionFactory);
        //创建JSON序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
        //设置Key的序列化
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());
        //设置Value的序列化
        template.setValueSerializer(jsonRedisSerializer);
        template.setHashKeySerializer(jsonRedisSerializer);
        //返回
        return template;
    }
}

为了节省内存空间,我们不会使用JSON序列化器来处理value,而是统一使用String序列化器,要求只能存储String类型的key和value。当要存储Java对象时,手动完成对对象的序列化和反序列化

Spring默认提供了一个StringRedisTemplate类,它的key和value的序列化方式默认就是String方式。省去了我们自己定义RedisTemplate的过程:

java 复制代码
@SpringBootTest
public class RedisStringTest {

    @Autowired
    StringRedisTemplate stringRedisTemplate;
    //JSON工具
    private static final ObjectMapper mapper = new ObjectMapper();

    @Test
    void testUser() throws JsonProcessingException {
        User user = new User("小张",16);
        //将对象序列化后存入
        stringRedisTemplate.opsForValue().set("user1", mapper.writeValueAsString(user));
        String user1 = stringRedisTemplate.opsForValue().get("user1");
        //将取出的字符串反序列化
        User user2 = mapper.readValue(user1, User.class);
        System.out.println(user2.getName()+":"+user2.getAge());
    }
}

使用hash类型

java 复制代码
@Test
    void testHash(){
        stringRedisTemplate.opsForHash().put("user:200","name","小张");
        stringRedisTemplate.opsForHash().put("user:200","age","16");
        Map<Object, Object> entries = stringRedisTemplate.opsForHash().entries("user:200");
        System.out.println(entries);
    }
相关推荐
怒放吧德德9 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆10 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌13 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊14 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang14 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang15 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解15 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
曲幽19 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
SimonKing20 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean20 小时前
Jackson View Extension Spring Boot Starter
java·后端