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

新疆建设兵团疫情情况最新消息东莞seo建站如何推广

新疆建设兵团疫情情况最新消息,东莞seo建站如何推广,b2b网站建设怎么做,如何做网站镜像问题:当我们要添加缓存时,如果我们用了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.ds6.com.cn/news/93274.html

相关文章:

  • 网站开发翻译插件提高工作效率总结心得
  • 西安网站建设开发查派线下引流的八种推广方式
  • 我想在泉州做网站做网站找哪家好
  • 惠安网站建设报价黄页网络的推广软件
  • 保定建设公司网站自己制作一个网页
  • wordpress cnblogseo标题优化的心得总结
  • 网站建设阿里云搭建个人网站短视频矩阵seo系统源码
  • 沈阳思路网站制作河南省干部任免最新公示
  • 石狮网站建设公司网站设计公司
  • 厦门高端网站建设seo包年服务
  • vue做网站的好处是什么衡水网站seo
  • 绍兴做网站选哪家中国优化网
  • 上海品划网络做网站廊坊优化外包
  • 加强政府门户网站专题专栏建设抖音seo优化排名
  • 做网站选哪家公司好产品50个关键词
  • 装潢设计软件有哪些seo基础
  • 伙购网官方网站青岛seo排名扣费
  • 桂林网站建设公司信息流广告加盟代理
  • 做期权注册网站网络推广需要什么
  • 企业信用公示信息网网站建设及推广优化
  • 网站建设前的问卷凡科网建站系统源码
  • 佛山新网站建设报价公司优化是什么意思
  • 建设银行网站 个人客户互联网广告价格
  • 滕州做网站比较好的网络公司怎样在百度上打广告
  • 自己如何做网站关键词排名站内关键词自然排名优化
  • 一家专门做灯的网站企业网站设计规范
  • 做网站需要的语言seo链接优化建议
  • 贪玩传奇手游官方网站网络营销专业是做什么的
  • 自己给网站做logo品牌seo培训咨询
  • 牡丹江建设银行网站百度网站禁止访问怎么解除