不忘初心,方得始终。内存数据刷新改造小记

获取地区数据的api接口,原先的实现是初次访问时一次性加载到内存变量里,以后的调用则直接从内存变量读取。这样虽然快,但弊端显而易见,当数据有更新,只能通过重启站点服务的方式搞定。
所以,要改造。
直觉想到的是用redis缓存。

在coding的时候,突然觉得还是从内存上做文章多好啊,毕竟读内存是最快的方式了。于是,想到了一个办法,每到整点清空数据变量。代码如下:

import org.joda.time.DateTime;

private static String areaStr = "";
private  String getAreaStr(){
    //整点清除数据,重新调用rpc并加载到内存
    int minuteOfHour = DateTime.now().getMinuteOfHour();
    if (0 == minuteOfHour) {
        areaStr = "";
    }

    if (StringUtil.isBlank(areaStr)) {
        log.info("初始化地区数据到内存");
        //rpc请求
        areaStr = threeLevelClient.selectAreaList();
    }

    return areaStr;
}

使用地区数据的地方不再直接访问areaStr变量,而是调用getAreaStr()方法。
还没等自测,我就意识到不对头了。这是web接口,那整点没有被访问,岂不是就达不到刷新数据的预期了!
还是不忘初心的好!就用redis来搞。考虑到数据量大,我还是做了点改动:把数据放到内存里,通过redis来控制内存数据的刷新。

private static String areaStr = "";
private static JedisCluster jc = JedisClusterUtil.getJedisCluster();

// 地区数据量大,不宜直接放到redis里。这里通过redis控制内存数据的刷新。
private void resetAreaStr() {
    final String areaStr_Key = "payment_api_areaStr";
    String value = jc.get(areaStr_Key);
    if (StringUtils.isBlank(value)) {
        areaStr = threeLevelClient.selectAreaList();
        jc.setex(areaStr_Key, 300, "1");
        log.info("重置redis缓存:" + areaStr_Key);

    }
    if (StringUtils.isBlank(areaStr)) {
        log.info("初始化地区数据到内存");
        //rpc请求
        areaStr = threeLevelClient.selectAreaList();
    }
}

这样无疑是不错的方案了。使用areaStr之前调用resetAreaStr()方法即可。

    @RequestMapping("transferCityQuery")
    public void transferCityQuery(HttpServletResponse response) throws Exception {

//        log.debug("payment_api----获取地区列表:{}", areaStr);
        resetAreaStr();
        List<JSONObject> areaList = JSON.parseArray(areaStr, JSONObject.class);

        List<Map<String, String>> showAreaList = new ArrayList<>();
        areaList.forEach(one -> {
            Map<String, String> bankInfo = new HashMap<>();
            bankInfo.put("provinceName", one.getString("provinceName"));
            bankInfo.put("areaName", one.getString("areaName"));
            showAreaList.add(bankInfo);
        });

        log.info("集合size:{}", areaList.size());

        WebUtil.outputJson(showAreaList, response);

    }

原文地址:https://www.cnblogs.com/buguge/p/10603438.html

时间: 2024-10-13 00:55:50

不忘初心,方得始终。内存数据刷新改造小记的相关文章

「数据治理那点事」系列之三:不忘初心方得始终,数据质量管理要稳住!

文 | 乐天(原创)未经许可,不可转载. 编辑 | 刘能 碳酸 本文约 3209 字,预计阅读时间 9 分钟 作者简介:蒋珍波(乐天),6 年+ 大数据咨询经验,擅长为客户提供科学合理的大数据解决方案.目前担任数澜科技咨询专家,负责数澜大数据平台售前咨询. 本文主要讲述数据治理中的重要工作:数据质量管理,从以下几个角度展开具体讲解: (1)数据质量管理的目标 (2)质量问题产生的根源 (3)数据质量的评估 (4)数据质量管理的流程 (5)数据质量管理的取舍 一.数据质量管理的目标 数据质量管理主

《不忘初心,方得始终》

不忘初心方得始终释义:        不要迷失最初的目标,始终如一的保持当初的信念,最后一定能得到成功. 滚滚长江东逝水,浪花淘尽英雄.是非成败转头空.青山依旧在,几度夕阳红.该词出自<临江仙>.我自2015年从大学毕业后,未能从事本专业相关的工作,有点遗憾.至2020年,在社会上工作五年,经过五年的沉淀和积累.慢慢找到自己前行的方向. 刚刚进入社会,我发现大学里面学习到的知识和社会上需要运用的知识有很大的不同,甚至对很多事物都产生怀疑.这个时候是参加社会实践活动,也是认识社会刚开始的阶段.在

不忘初心,方得始终!

心中挂念着好多人好多事,是这个多愁善感的年纪,还是这个年纪多愁善感的人?!内心还是不够强大,不过是自寻烦恼罢了!不去想,不去听,不去问,自然而然就不会念了. <仙古道>,我闲暇时候构思的一本小说,整体框架还没想好,所以迟迟不能下笔.其实也是自己好久没有去想了,在这个浮夸的社会,人也渐渐变得浮躁了(虽然之前就本浮躁),很难再静下心读书,写书就更成了奢望.写书一直是自己的向往的事,能写下来一个完整的故事,一本成型的书,便一直是自己的梦想!不求好,自己看着舒服享受就行. <仙古道>小说地

不忘初心,方得始终.

想了好久都不知道如何从哪写起.记得初入博客园的初衷是在不经意间看到博主"纯洁的微笑",他写的博客幽默风趣,让人一下就能喜欢上他的写作方式. 通过跟微笑大哥和其他的博主的学习,发现博客园的氛围特别好于是就发此日志记录一下自己阅读博客的经历. 博客记录 https://www.cnblogs.com/warking/p/5710303.html           logback的介绍 https://blog.csdn.net/zhglance/article/details/54931

不忘初心,方得始终——NOIP2016前的感悟

不忘初心,方得始终 袛园精舍钟声响,奏诸世事本无常.沙罗双树失花色,盛者转衰如沧桑.骄者难久,恰如春宵一梦.猛者遂灭,好似风前之尘.    --题记   人生中最令人恐惧的恐怕就是选择了,现在的你拥有选择的权利,而未来的你却没有后悔的权利.命数仿佛大海般起伏不定,难以预料.机缘巧合之下,我选择了OI的道路,我的人生也必会产生翻天覆地的变化.2016年11月11日,月光如水,站在窗前,仰望浩瀚的星辰,我不禁反问自己,我的选择真的正确吗?   自中考失利,无缘郑外,我的心情一直很低落,直到加入OI的

不忘初心,方得始终------记我这一年来的收获

我的第一条博文是在2014你那2月13号发出的.那天开始,要加强学习各项技术.回顾这一年来走的路.韩老师的虚拟机整整看来三遍,可能是因为我笨,前两遍看过后,当时明白了,过一段时候后又忘了.后来做实验,遇到后又不会了.可能是因为自己没有跟着操作一遍.后来把虚拟机的视频挨个重新看了一遍,又把实验做了一遍.王佩丰老师的excel,我也是整整看了三遍.一步一步做的跟着老师做.学习过后,才知道不管你当时看的多么的明白,只要没有亲手实验过,都不会记得太长久.温故而知新,王佩服老师的课程,没看一遍都有一遍的收

写给毕业5年,工作5年的自己:不忘初心,方得始终。

2010年毕业,一转眼毕业5年,也工作了5年(自己认为的).在此不谈具体技术,只说自己5年的经历. 记得小时候就是对计算机这些IT方面的东西比较感兴趣,后来也是有学长们说搞it比较挣钱(笑),所以当年高考完了选专业的时候,就选了网络这个专业,成功的掉进了坑(大雾).临毕业的时候还去听了下na和np的课. 毕业以后,第一份工作就做网管.当时正好有一家英语培训机构在招,自己也就投了简历,没想到第二天就去了(2010.07.10),就这么的从此踏上了一条不归路. 当时其实工作的内容也很简单,就是网络正

追梦软件路,愿不忘初心

第一部分:结缘软件工程 你为什么选择软件工程专业?你认为你的条件如何?(必答)软工是你喜欢的领域吗?是你擅长的领域吗?你热爱这一专业吗?你对软工的热爱是怎样的? 刚开始上高三的我,每时每刻都在刷卷子刷错题,一遍一遍的稳固知识点,强化记忆,以备即将到来的人生第一个分支点--高考. 直到2015年12月份的一天晚上,因腹部剧痛导致失眠,一大早被家人带着去了医院,经过仔细的核查之后确定了不立刻动手术不行的残酷现实. 小毛病总会在关键时刻引发巨大问题,简直就是活生生的bug.明明那么多次都忍了下来没有说

什么是不忘初心

不忘初心,这个词大家并不陌生,可是我对他的理解,直到今天才有了更深层次的认识. 第一个层次:不忘记自己当初开始做一件事情时的本来想法,也就是初衷.这也常常用在一些企业老板进行总结时,用以惊醒自己以及团队,牢记当时创业时的想法,巩固和牢记自己的使命. 自从自己参加工作以来,就常常看到类似的标语,"不忘初心,方得始终","不忘初心,牢记使命"等.可是当一件事情来回的重复,很奇怪,我也就每次听到看到就过去了,没有太多思考.也就一直停留在第一个层次--不要忘记自己当初的想法