当前位置: 首页 > news >正文

滁州网站建设设计免费网站现在是怎么了

滁州网站建设设计,免费网站现在是怎么了,美工设计素材网站,android安装教程问题:当我们要添加缓存时,如果我们用了PageHelper时,PageHelper只会对查询语句有效(使用到sql的查询),那么如果我们把查询到的数据都添加到缓存时,就会无法进行分页; 此时我们选择将…

问题:当我们要添加缓存时,如果我们用了PageHelper时,PageHelper只会对查询语句有效(使用到sql的查询),那么如果我们把查询到的数据都添加到缓存时,就会无法进行分页;

此时我们选择将分页后的数据加入缓存,前端传入page和count表示查询页数和个数,我们将其拼接到查询物品key作为唯一key添加进入redis中,每次查询不同页数都会添加缓存,

但是,当我们数据进行更新时可能会导致所有添加的缓存都会与数据库不符合,所以每次更新我们都要将缓存进行删除操作,下次查询再次进行缓存~

下面我们使用PageHelper和redis做缓存分页

每次查询页码数和每页数量和对应的key拼接起来存入redis中、

下面我们使用redisClient存入redis,通过redisTemplate进行模糊扫描扫描对于key下各个页码的缓存,当内容进行更新时删除掉之前的缓存,当我们再次请求时才会去加缓存

直接看代码

👇

@Service
public class AAAAServiceImpl  implements aaaaService {
    @Autowired
    private TIntegralPrizesMapper integralPrizesMapper;
    @Resource
    private RedisTemplate<String,String> redisTemplate;
    @Autowired
    private IRedisClient redisClient;
    @Autowired
    private AAAAOrderMapper aaaaMapper;
    @Autowired
    private AAAAServiceImpl aaaaService;
    public static final String XXX_KEY="XXX_AS_";


    @Override
    public void addPrizes(AAAA aaaa) {
        aaaa.setId(UUID.randomUUID().toString().replace("-",""));
        aaaa.setCreateTime(new Date());
        aaaa.setUpdateTime(new Date());
        //  处理传入数据
        aaaaMapper.addPrizes(aaaa);

//查询以XXX_KEY+aaaa.getxx()开头的所有缓存(count表示要查询的数量,我们可以大概设置一个最大值(不要太大,不然影响性能))
        ScanOptions      options=ScanOptions.scanOptions().match(XXX_KEY+aaaa.getxx()+"*").count(100).build();
        Cursor<byte[]> cursor=redisTemplate.getConnectionFactory().getConnection().scan(options);

//循环查询数据
        while (cursor.hasNext()){

//将得到的字符组转换为String
            String key=new String(cursor.next());

//删除缓存
            redisClient.delete(key);
        }
        try {

//关闭游标
            cursor.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    @Override
    public String deleteXX(AAAADTO aaaaDTO) {
        //更新时间
        aaaaDTO.setUpdateTime(new java.util.Date());
        aaaaMapper.deleteSXPrizes(aaaaDTO);
        ScanOptions options=ScanOptions.scanOptions().match(XXX_KEY+aaaDTO.getxx()+"*").count(100).build();
        Cursor<byte[]> cursor=redisTemplate.getConnectionFactory().getConnection().scan(options);
        while (cursor.hasNext()){
            String key=new String(cursor.next());
            redisClient.delete(key);
        }
        try {
            cursor.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return msg;
    }

    @Override
    public PageInfo<XXXPrizes> selectXXX(AAADTO aaaDTO) {

        //对于每一页设置唯一的key存入redis
        String key = XXX_KEY+aaaDTO.getxx()
                +"page="+aaaDTO.getPage()
                +"count="+aaaDTO.getCount();
        //查询缓存
        String tagsStr =  redisClient.get(key);
        if (StrUtil.isNotBlank(tagsStr)) {

        //将String解析
            return JSON.parseObject(tagsStr, new TypeReference<PageInfo<XXXPrizes>>() {});
        }
        //pc进行分页 
        PageHelper.startPage(aaaDTO.getPage(),aaaDTO.getCount());
        List<TIntegralPrizes> tX = aaaMapper.selectxxx(aaaDTO);
        PageInfo<XXXPrizes> pageInfo=new PageInfo<>(tX);

        //解决缓存穿透问题()当数据库为空时,给缓存一个值,使其不会一直访问数据库

        //因为这里我们set的值为pageInfo所以不用关心这个问题
        

        //转换为json字符串
        //存入缓存
            String strList = JSON.toJSONString(pageInfo);
            redisClient.set(key, strList, 5 * ((int) (Math.random() * 4) + 1), TimeUnit.MINUTES);

        return pageInfo;
    }
}
以上就是一个缓存分页的例子,当然做缓存分页方法有很多,此方法仅供参考

http://www.yayakq.cn/news/651313/

相关文章:

  • 做怎样的企业网站在猪八戒上做网站要注意什么
  • 域名 放别人网站个性菜单 wordpress
  • 应用网站模板濮阳公司做网站
  • 安康有建网站的公司吗个旧云锡建设集团网站
  • 如何做旅游网站的思维导图产品朋友圈推广词
  • 网站推广软文甄选天天软文最好看的网站设计
  • php建设网站怎么用网页设计尺寸pc端
  • 自适应网站开发seo南京做网站建设
  • 做汽配的都上什么网站雷州手机网站建设
  • 做电子商务网站需要什么手续高州手机网站建设公司
  • 深圳手机移动网站开发室内设计效果图怎么收费
  • 京东网站建设框架图苏州做网站公
  • 如何兼职做网站百度权重1是什么意思
  • 网站搭建与推广wordpress代码加亮的
  • 网页空间和数据库的区别百度关键词优化费用
  • js网站文字重叠app开发制作平台网站建设
  • 做网站有哪些页面布局在哪里找到
  • 长治市建设局网站中国建设银行网站主要功能
  • 网站建站客户需求表单大城网站建设
  • 水墨风格网站源码做网站公司汉狮网络
  • 课程网站开发运行环境wordpress域名搬家
  • 万网域名注册后如何做网站教学设备外贸用哪个网站
  • 外贸品牌网站设计青州网站建设优化
  • 公司网站建设需要提供什么材料广东网站建设发信息
  • 网站内页标题怎么填加盟网站有哪些
  • 确实网站的建设目标目前做定制产品的网站
  • 电子商务c2c网站功能申请域名注册备案平台
  • 海淘网站国外建设网站流程
  • 家居企业网站建设新闻整合营销方案案例
  • 做网站后期都用什么软件临沂企业宣传片制作公司