项目记录:利用Redis实现缓存以提升查询效率

一、概述

当我们查询所有数据时,如果缓存中没有,则去数据库查询,如果有,直接查缓存的数据就行。注意定期更新缓存数据。

二、主体代码

java 复制代码
    private static final String ROOM_SCHEDULES_HASH = "RoomSchedules";

    @Override
    public List<RoomSchedule> getAllRoomSchedules()  {
        BoundHashOperations<String, String, String> hashOps = stringRedisTemplate.boundHashOps(ROOM_SCHEDULES_HASH);
        if (hashOps.size() == 0) {
            List<RoomSchedule> roomSchedules = roomScheduleMapper.getAllRoomSchedules();
            for (RoomSchedule roomSchedule : roomSchedules) {
                ObjectMapper objectMapper = new ObjectMapper();
                try {
                    String json = objectMapper.writeValueAsString(roomSchedule);
                    hashOps.put(roomSchedule.getId().toString(), json);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            stringRedisTemplate.expire(ROOM_SCHEDULES_HASH, 3, TimeUnit.MINUTES);  // 设置有效期为三分钟
            return roomSchedules;
        } else {
            Map<String, String> entries = hashOps.entries();

            List<RoomSchedule> roomSchedules = new ArrayList<>();
            for (String json : entries.values()) {
                try {
                    ObjectMapper objectMapper = new ObjectMapper();
                    RoomSchedule roomSchedule = objectMapper.readValue(json, RoomSchedule.class);
                    roomSchedules.add(roomSchedule);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return roomSchedules;
        }

       
    }

BoundHashOperations是绑定键值的方法,意味着之后的操作都是对此键进行操作。

ObjectMapper类提供了一系列json序列化和反序列化的操作。

缓存更新操作是通过设置TTL有效期来实现的。

三、效果实现

可以看到引入Redis缓存后,查询效率明显提升。

相关推荐
月空MoonSky19 分钟前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa19 分钟前
【MySQL 06】表的增删查改
数据库·mysql
向上的车轮1 小时前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长1 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
全栈师2 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle
Data 3172 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop
BergerLee3 小时前
对不经常变动的数据集合添加Redis缓存
数据库·redis·缓存
gorgor在码农3 小时前
Mysql 索引底层数据结构和算法
数据结构·数据库·mysql
Dylanioucn3 小时前
【分布式微服务云原生】掌握分布式缓存:Redis与Memcached的深入解析与实战指南
分布式·缓存·云原生
huapiaoy3 小时前
Redis中数据类型的使用(hash和list)
redis·算法·哈希算法