SpringBoot整合Redis缓存中间件

首先在pom.xml中引入依赖

<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>

指明redis主机端口,这里我用的是虚拟机(docker)

  spring:
	   redis:
	    port: 6379
	    host: 192.168.0.106
	    password: 123

关于redis在docker-compose中的配置文件,docker-compose.yml,我觉得也有必要在这里写一下:

version: '3'
services:
  redis:
    image: redis
    container_name: redis
    restart: always
    ports:
      - 6379:6379
    volumes:
      - ./config:/docker/config
      - ./data:/data
    command: redis-server /docker/config/redis.conf

这里我的文件tree:
在这里插入图片描述
我们需要额外配置的配置文件放在conf文件夹下面,redis.conf内容如下,仅供参考,根据自己的需要进行配置:

#redis的databases数量
databases 32
#redis密码
requirepass 123

来写一个例子:

 @GetMapping("/user/{id}")
    public Users findUser(@PathVariable("id") Integer id){
        RedisSerializer redisSerializer = new StringRedisSerializer();
        rediss.setKeySerializer(redisSerializer);
        Users u = (Users) rediss.opsForValue().get("key");
        if(null == u){
            synchronized (this){           //处理缓存穿透问题
                if(u == null) {
                    u = usersDao.UserfindById(id);
                    rediss.opsForValue().set("key",u);
                }
            }
        }
        return u;
    }

redisSerializer这个是让键在显示的时候不是以序列化的形式显示,方便我们查看,上面的代码先是在redis中查找有没有key的键,如果有的话直接就返回了值,如果没有的话,先去数据库中查找,查找的结果放入redis中。这里加了synchronized上了锁,是处理高并发的情况,高并发的时候,只需要一个人在数据库查找到了结果,其他的人就可以直接走缓存了。有效避免了数据库的压力。

在保存对象的时候,redis默认给你序列化,如果你想要把对象转化为json数据,需要修改redis默认的序列化器。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值