一、概述
当我们查询所有数据时,如果缓存中没有,则去数据库查询,如果有,直接查缓存的数据就行。注意定期更新缓存数据。
二、主体代码
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有效期来实现的。
三、效果实现
文章来源:https://www.toymoban.com/news/detail-767928.html
可以看到引入Redis缓存后,查询效率明显提升。文章来源地址https://www.toymoban.com/news/detail-767928.html
到了这里,关于项目记录:利用Redis实现缓存以提升查询效率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!