SpringBoot项目实战(二)—— 整合Redis代码生成

1、导入依赖

        
            org.springframework.boot
            spring-boot-starter-data-redis
        

2、配置yml

  redis:
    port: 6379
    host: 127.0.0.1
    database: 1  #使用的数据库
    timeout: 3000 #连接超时事件毫秒
    lettuce:
      pool:
        max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)
        max-wait: -1   # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 10      # 连接池中的最大空闲连接
        min-idle: 5       # 连接池中的最小空闲连接

3、RedisTemplate模版序列化

在不使用序列化配置之前Java数据序列化底层使用的是默认序列化存入Redis中是解析过乱码的数据,存到Redis中可视化太低!使用之后可以显示中文

在SpringBoot中集成了两个模版一个是 RedisTemplate,另一个为 StringRedisTemplate 而虽然StringRedisTempate帮助我们做了序列化,但是存储数据的时候只能存储Sting类型的数据,而RedisTemplate可以存储Object类型,所以我们一个使用RedisTemplate比较多一些!
 


@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
        RedisTemplate redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(lettuceConnectionFactory);
        //设置key序列化方法String
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //设置value的序列化方式json,使用GenericJackson2JsonRedisSerializer替换默认的序列化
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

三、编写工具类

package com.example.fcy.util;

import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.TimeoutUtils;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

/**
 * 

* Redis工具类 *

* * @author fcy * @since 2023-11-28 */ @Component @RequiredArgsConstructor public class RedisUtil { @Resource private RedisTemplate redisTemplate; /** * 获取值 * @param key key * @return */ public Object get(String key) { return key == null ? null : redisTemplate.opsForValue().get(key); } /** * 设置值 * @param key * @param object * @return */ public boolean set(String key, Object object) { try { redisTemplate.opsForValue().set(key, object); return true; } catch (Exception e) { e.printStackTrace(); return false; } } public boolean hashKey(String key) { try { return redisTemplate.hasKey(key); } catch (Exception e) { e.printStackTrace(); return false; } } public boolean expire(String key, long time) { try { if (time > 0) { redisTemplate.expire(key, time, TimeUnit.SECONDS); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } public boolean hset(String key, String item, Object value) { try { redisTemplate.opsForHash().put(key, item, value); return true; } catch (Exception e) { e.printStackTrace(); return false; } } public boolean hset(String key, String item, Object value, long time) { try { redisTemplate.opsForHash().put(key, item, value); if (time > 0) { expire(key, time); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } public Object hget(String key, String item) { return redisTemplate.opsForHash().get(key, item); } public long hdal(String key, String item) { return redisTemplate.opsForHash().delete(key, item); } }

你可能感兴趣的:(spring,boot,redis,后端,java)