springboot整合redis实现缓存中的分页功能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了springboot整合redis实现缓存中的分页功能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2873字,纯文字阅读大概需要5分钟。
内容图文
业务场景:将班级下的学生信息存储进缓存,同时也是方便于对其进行分页操作
具体的流程:将符合条件的数据查询出来,在查询出来之后,再将数据存储进缓存中进行,例如按照报名时间,学生年龄倒序或者是顺序进行进行存储,
具体的代码实现流程: 先从缓存中查找,没有就从数据库中查询,查询出来的数据在保存到redis中,以后分页的情况都是从redis中拿取,主要涉及的代码就是redis的操作,一个是存,一个是取区间范围,一个删除redis区间的数据,都是用Zset中进行的
/**
* 将元素添加进指定的key,并且指定元素的分值----这是存数据的方法
* @param key
* @param obj
* @param score
* @return
*/
public boolean hZSet(String key, Object obj, double score){
return redisTemplate.opsForZSet().add(key, obj, score);
}
/**
* 对数据库中的元素进行分页处理-------这是取数据的操作
* @param key
* @param start
* @param end
* @return
*/
public Set hZget(String key, double start, double end){
return redisTemplate.opsForZSet().rangeByScore(key, start, end);
}
/**
* 根据指定的数据来删除掉数据-------这是删除数据的方法
* @param key
* @param start
* @param end
* @return
*/
public Long hZDel(String key, double start, double end){
return redisTemplate.opsForZSet().removeRangeByScore(key, start, end);
}
由于只是实验性质的,所以我在controller层中做缓存的操作:
/**
* 关于 List<?>与List<Object> 以及 List</Object>
* List<?>只能与List进行转换它与List<Object>是没有关系的
* @return
* @throws Exception
*/
@DataSource("master")
@RequestMapping(value = "page")
public List<Student> redisPage(Integer page1, Integer pageSize){
// List<Student> students = studentMapper.queryDatas();
//redis中的数据进行分页数据
Set studentPage = redisUtil.hZget("studentPage", (page1 - 1) * pageSize + 1, page1 * pageSize);
Object[] objects = studentPage.toArray();
// List<?> objects1 = CollectionUtils.arrayToList(objects);
// List<Object> objects2 = Arrays.asList(objects);
List<Student> students = new ArrayList<Student>(studentPage);
//将redis中的数据进行删除操作
redisUtil.hZDel("studentPage",(page1 - 1) * pageSize + 1, page1 * pageSize);
return students;
}
由于涉及到数组与集合之间的转换,所以我在这里编写了一个工具类:
@Component
public class ArraysUtils {
/**
* 将数组转换为集合的方法
* @param arrays
* @return
*/
private static List arraysToList(Object[] arrays){
return Arrays.asList(arrays);
//另外一种转换方法,这个方法不是静态的方法
//List<?> objects = CollectionUtils.arrayToList(arrays);
}
/**
* 将数组转换为Set类型
* @param arrays
* @return
*/
private static Set arraysToSet(Object[] arrays){
return new HashSet(Arrays.asList(arrays));
}
/**
* 将集合转换为数组
* @param list
* @return
*/
private static Object[] listToArrays(List list){
return list.toArray();
}
/**
* 将list转换为Set
* @param list
* @return
*/
private static Set listToSet(List list){
return new HashSet(list);
}
/**
* set转换为数组
* @param set
* @return
*/
private static Object[] setToArray(Set set){
return set.toArray();
}
/**
* set转换为list
* @param set
* @return
*/
private static List setToList(Set set){
return new ArrayList(set);
}
内容总结
以上是互联网集市为您收集整理的springboot整合redis实现缓存中的分页功能全部内容,希望文章能够帮你解决springboot整合redis实现缓存中的分页功能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。