Membuat beberapa pengoptimuman yang sangat mudah pada tapak web sebelumnya dan menambah fungsi halaman pada senarai pengguna.
Semasa membuat penomboran, adalah lebih baik untuk mempertimbangkan kelajuan pemuatan Jika anda perlu menunggu beberapa saat untuk menukar halaman, pengalaman akan menjadi sangat teruk.
Jadi saya terfikir untuk menambah cache redis.
Terdapat dua cara untuk menyepadukan redis dengan springboot:
1 Gunakan anotasi, @EnableCaching @Cacheable .
@RequestMapping("/appUser/{currentPage}") public R<String> getTableData1(@PathVariable int currentPage) { //第一次请求 前面几页用到的概率更大 把后面三页存入redis 减少后面分页请求的时间 以后每次加载页面都把那页放入redis // 设置一个小时过期 Page<AppUser> appUserPage = new Page<AppUser>(currentPage, 12); if (currentPage == 1 && !redisTemplate.hasKey(1)) { for (int i = 1; i < 5; i++) { Page<AppUser> redisPage = new Page<AppUser>(i, 12); redisTemplate.opsForValue().set(i, appUserServiceInterface.page(redisPage), 1, TimeUnit.HOURS); } } else if (!redisTemplate.hasKey(currentPage)) { redisTemplate.opsForValue().set(currentPage, appUserServiceInterface.page(appUserPage), 1, TimeUnit.HOURS); return R.success((Page<AppUser>) redisTemplate.opsForValue().get(currentPage)); } else if (redisTemplate.hasKey(currentPage)) { return R.success((Page<AppUser>) redisTemplate.opsForValue().get(currentPage)); } return R.success(appUserServiceInterface.page(appUserPage)); }
@RequestMapping ("/userArea") @Cacheable(value = "appUserData",key ="'userArea'") public R<String> area() { List<AppUser> userList = appUserServiceInterface.list(); List<String> areaList = new ArrayList<>(); for (AppUser appUser : userList) { areaList.add(appUser.getArea()); } //放入map记录每个月份出现的次数 Map<String, Integer> areaTimes = new HashMap<>(); for (String s : areaList) { if (!areaTimes.containsKey(s)) { areaTimes.put(s, 1); }else { areaTimes.put(s, areaTimes.get(s) + 1); } } //排序 //自定义比较器 Comparator<Map.Entry<String, Integer>> valCmp = new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { // TODO Auto-generated method stub return o2.getValue() - o1.getValue(); // 降序排序,如果想升序就反过来 } }; //将map转成List,map的一组key,value对应list一个存储空间 List<Map.Entry<String, Integer>> mapList = new ArrayList<Map.Entry<String, Integer>>(areaTimes.entrySet()); //传入maps实体 Collections.sort(mapList, valCmp); //取前8 int len = mapList.size(); for (int i = 0; i < len-8; i++) { mapList.remove(8); } Map<String, String> resMap = new HashMap<>(); for (Map.Entry<String, Integer> m : mapList) { resMap.put(m.getKey(), m.getValue().toString()); } return R.success(resMap); }
Atas ialah kandungan terperinci Bagaimana SpringBoot menyepadukan Redis menggunakan @Cacheable dan RedisTemplate. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!