Spring Boot 集成redis

前期概要

 Spring Boot 操作Redis数据库,有三种方式:

01.Jedis (Api比较全面)官方推荐的客服端

02.Lettuce (缓存)Spring Boot 内置

03.RedisSon 分布式锁

Spring Data Redis

RedisTemplate(一般为键的操作)、ValueOperations(字符串操作)、HashOperations(哈希类型)、ListOperations(列表) 、SetOperations(集合)、ZsetOperations(有序集合)

Idea 连接Redis

  • 创建Redis项目工程 导入Mven工程
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  • 配置application.yml文件
spring:
  redis:
    database: 10
    host: 你自己的端口号
    port: 6379
    password: ""
    timeout: 5s
    #  s 秒   ns 微秒  m 分钟   h小时 d 天
    connect-timeout: 3s
    lettuce:
      pool:
        # 空闲最小链接
        min-idle: 0
        max-wait: 10s
        # 核心连接数
        max-idle: 5
        #  最大连接数
        max-active: 8
  • 创建配置类
@Configuration
public class RedisConfig {
    /**
     *
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
//        FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        StringRedisSerializer keyRedisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(keyRedisSerializer);
        GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
        redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);
        // 注册到RedisConnectionFactory
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }
}
  • 测试
@SpringBootTest
@Slf4j
public class RedisTemplateTest {

    @Resource
    private RedisTemplate<String, Object> redisTemplate;


    @Test
    public void exists() {
        Boolean b = redisTemplate.hasKey("test:key");
        assert b!= null;
        log.debug(b.toString());
    }

    @Test
    public void del(){
        Boolean delete = redisTemplate.delete("test:key");
        redisTemplate.expire("test:key:exp",1, TimeUnit.MINUTES);
        redisTemplate.expire("test:key:exp", Duration.ofMinutes(1));
        Date date = new Date(System.currentTimeMillis() + 6 * 1000);
        redisTemplate.expireAt("test:key:exp",date);
    }

    @Test
    public void expire(){
        //ttl 获取过期时间
        Long expire = redisTemplate.getExpire("test:key:exp");
    }

}



@SpringBootTest
@Slf4j
public class SetOperationsTest {

    @Resource
    private RedisTemplate redisTemplate;

    @Test
    public void sadd() {
        SetOperations setOperations = redisTemplate.opsForSet();

        setOperations.add("friend:user:id:" + 1, 6, 2, 3, 4, 5, 4);
        setOperations.add("friend:user:id:" + 2, 10, 11, 3, 6);

        Set set = setOperations.intersect("friend:user:id:" + 1, "friend:user:id:" + 2);
        set.forEach(item -> {
            log.debug(item.toString());
        });
    }
}


  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值