一.当采用reddis缓存的时候,如果同时,一万次访问,那么就会有10000次访问数据库所以就会对数据库造成巨大压力,这时候,就要用到线程

    1.方法体上加锁(优点,防护住了并发锁,缺点降低了内存效率)

 1  /**
 2      * 最简洁的高并发处理,但是,牺牲效率大
 3      *
 4      * @return
 5      */
 6     public synchronized List<Student> selectAllStudent1() {
 7 
 8         // 字符串序列化器
 9         RedisSerializer redisSerializer = new StringRedisSerializer();
10         redisTemplate.setKeySerializer(redisSerializer);
11 
12         /**
13          * 在高并发条件下,此处有问题,缓存穿透问题
14          */
15         //查询关键字
16         List<Student> studentList = (List<Student>) redisTemplate.opsForValue().get("allStudents");
17 
18         if (null == studentList) {
19 
20             //缓存为空,查询数据库
21             studentList = studentMapper.selectAllStudent();
22 
23             //把数据库中查询出的数据,放入redis中
24             redisTemplate.opsForValue().set("allStudents", studentList);
25         }
26 
27         return studentList;
28     }
View Code

相关文章:

  • 2021-03-31
  • 2022-12-23
  • 2021-04-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-18
  • 2021-04-25
  • 2021-07-07
  • 2022-12-23
  • 2021-07-25
  • 2022-12-23
  • 2021-11-12
相关资源
相似解决方案