springBoot项目中使用redis

开始之前先了解一下使用redis作为缓存中间件有那些缺点

        1.缓存穿透

        当查询请求发送过来的时候,通过redis的key未查到对应的数据,请求会直接打到数据库上,这种被称为:缓存穿透。可能情况redis宕机。

       2.缓存击穿

       当查询请求发送过来的时候,请求过来的key在redis中不存在,所有的请求直接打到数据库上,这种情况被称为:缓存击穿。

       3.缓存雪崩

        当大量的查询请求发送过来的时候,在redis中未查询到数据,穿过redis,直接将大量请求打到redis数据库上,数据库受不了这么大的压力,直接崩了,因为请求过去数据库要自己开辟内存,这种被称为:缓存雪崩。一般这种情况发生了,就gg了。

进入正题

        springboot项目使用redis已经很方便了,接下来我按照步骤一一为大家呈现

  1. 在项目中引入所需的pom文件
  2. 配置相应的redisConfig(建议使用的时候直接继承)
  3. 写具体的redisDao的实现

1.引pom

        <!-- redis 的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <!-- 过滤lettuce,使用jedis作为redis客户端 -->
            <exclusions>
                <!-- 过滤lettuce,使用jedis作为redis客户端 -->
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.7.1</version>
        </dependency>

 集成好的引入直接用即可,这里使用jedis排除lettuce

        配置好对应的redis的用户名,密码,端口号等

        springboot项目扫配置文件顺序是:properties->yml

2.写配置

继承调用配置

@Component
public class RedisBase {

    @Resource
    public RedisTemplate<String, Object> redisTemplate;

    public HashOperations<String, String, Object> redisHashHelp ;

    public ListOperations<String, Object> redisListHelp ;

    public ValueOperations<String, Object> redisValueHelp;

    public SetOperations<String, Object> redisSetHelp;

    @PostConstruct
    private void init(){
        opsForListHelp = redisTemplate.opsForList();
        opsForHashHelp = redisTemplate.opsForHash();

        opsForValueHelp = redisTemplate.opsForValue();

        opsForSetHelp = redisTemplate.opsForSet();
    }

}

序列化配置

@EnableCaching
@Configuration
public class GlobalRedisConfig {

    @Resource
    private RedisConnectionFactory redisConnectionFactory;

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        RedisSerializer<String> stringSerializer = new StringRedisSerializer();

        // key序列化
        redisTemplate.setKeySerializer(stringSerializer);
        // value序列化
        redisTemplate.setValueSerializer(RedisSerializer.json());

        // Hash key序列化
        redisTemplate.setHashKeySerializer(stringSerializer);
        // Hash value序列化
        redisTemplate.setHashValueSerializer(RedisSerializer.json());

        redisTemplate.setEnableDefaultSerializer(true);
        redisTemplate.afterPropertiesSet();

        return redisTemplate;
    }

3.写redis的接口和实现类

这里就要根据业务需求进行编写了

建好储存数据转换的RO

更据需求选择使用数据类型常用的就:字符串(strings),散列(hashes)

接口

public interface RedisDao {

   
    public void insert(String key, String ro);

    public String find(String key);

}

实现

@Component
public class RedisDaoImpl extends RedisBaseOps implements RedisDao {

    @Override
    public void insert(String key, String ro) {
        super.opsForValueHelp.set(key, ro);
    }


    @Override
    public String fing(Sting key) {
       return super.opsForValueHelp.get(key);
    }
}

这里需要注意key的设计,这个特别重要!!!

这里只是简单的演示下,详细使用请多看redis官网

人人编程网详细教程网站这里也分享一下,一定要根据实际业务进行编写使用!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值