数据字典的缓存刷新与读取的几种方式

简介: 之前有写过数据字典的相关业务是怎么做的,有朋友留言问如何读取,其实很简单,最简单的方式就是每次读取数据库,但是这样的做法很不好,因为数据字典在数据库中属于冷资源,不是经常会变得数据,这样的数据用缓存来做是最好的,在访问数据库前就直接拦截了去数据库的请求,这样减少数据库的压力,毕竟很多页面对于数据字典...

之前有写过数据字典的相关业务是怎么做的,有朋友留言问如何读取,其实很简单,最简单的方式就是每次读取数据库,但是这样的做法很不好,因为数据字典在数据库中属于冷资源,不是经常会变得数据,这样的数据用缓存来做是最好的,在访问数据库前就直接拦截了去数据库的请求,这样减少数据库的压力,毕竟很多页面对于数据字典的访问还是偏多的

画张图简单了解一下就行:

那怎么把数据放入redis中呢?主流的两种做法大致说一下吧:

  1. 在每次进行增删改数据字典的操作后,发送一个消息队列,进行单独记录在redis中的维护(这样的做法我个人不是很喜欢,因为有时候写错了就要重修修改或者删除,这样的频繁操作比较多)

  2. 在每次进行数据字典的增删改后,最后手动执行刷新,这样批量把数据放入缓存中,最后在页面上就能直接用了

在此小编我用的是第二种做法,如图:


在之前的页面上加了刷新缓存的按钮,动态ajax到后台,读取数据库中的数据字典再刷新到缓存中去(有人说这样频繁的操作会很不好,话是这么说,但是这样的操作权限仅限在项目发布成功后,再执行的操作,一般都是大半夜,毫无影响..--)

先来看一下数据库的数据

再看一下缓存中的数据


不难看出,都是一一对应的

最后再来看一下自定义标签,这个主要的目的就是接受jsp上传来的key和对应的数据字典code,最后把value返回出来

private JedisClient jedis = SpringUtils.getContext().getBean(JedisClient.class);
    
    public void doTag() throws JspException, IOException {
        if (StringUtils.isNotEmpty(typeCode) && StringUtils.isNotEmpty(ddKey)) {
            String ddValue = jedis.get(CACHE_DATA_DICTS + ":" + typeCode + ":" + ddKey);

            JspWriter out = getJspContext().getOut();
            out.println(ddValue);
        } else {
            getJspBody().invoke(sw);
            getJspContext().getOut().println(sw.toString());
        }
    }

 

<div class="caption">
                         
                         性别:<dataDict:dataDictValue ddKey="1" typeCode="sex"/>
                         <br/>
                         车辆类型:<dataDict:dataDictValue ddKey="1" typeCode="car_type"/>
                         
                     </div>

 

页面效果:

题外话,这样的做法仅限jsp页面,如果你的数据是由JS render出来的话(比如jqgrid啊等等),那就可以写一个js类对象,每次传入code和key调用ajax从缓存中读取即可。


相关文章
|
12月前
|
域名解析 缓存 网络协议
如何在 Linux 上刷新 DNS 缓存?
如何在 Linux 上刷新 DNS 缓存?
610 0
|
7天前
|
缓存 JavaScript
vue使用keep-alive实现页面前进刷新,后退缓存,完美运行无bug
vue使用keep-alive实现页面前进刷新,后退缓存,完美运行无bug
72 1
|
1月前
|
存储 缓存 监控
DNS 定期刷新缓存
【8月更文挑战第18天】
35 2
|
25天前
|
域名解析 存储 缓存
破解 DNS 缓存的秘密:一个简单实验揭示定时刷新背后的惊人真相!
【8月更文挑战第27天】本文介绍DNS缓存管理的重要性及其实现方法。DNS缓存用于快速响应重复的域名解析请求,但因IP地址变动需定期刷新以确保信息准确。文章提供一个基于Python的示例脚本,模拟DNS缓存刷新过程,包括添加、查询记录以及清除过期项等功能。尽管实际环境中这些任务常由专业DNS服务软件自动处理,但该示例有助于理解DNS缓存的工作机制及其维护策略。
34 0
|
2月前
|
存储 缓存 网络协议
如何在 Linux 上刷新 DNS 缓存?
【7月更文挑战第14天】
54 0
如何在 Linux 上刷新 DNS 缓存?
|
2月前
|
缓存 关系型数据库 分布式数据库
PolarDB产品使用问题之域名缓存不立即刷新,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
缓存 移动开发 JavaScript
WKWebView对网页和js,css,png等资源文件的缓存机制及如何刷新缓存
WKWebView对网页和js,css,png等资源文件的缓存机制及如何刷新缓存
156 1
|
4月前
|
存储 缓存 JavaScript
vue中缓存页面数据(刷新不丢失)
vue中缓存页面数据(刷新不丢失)
285 1
|
4月前
|
缓存 Java 数据库连接
MyBatis支持的缓存刷新模式
MyBatis支持的缓存刷新模式
233 1
|
11月前
|
域名解析 缓存 网络协议
使用阿里云 运营商DNS缓存刷新功能,解决容灾问题
随着互联网应用的广泛应用,许多企业都采用了多地域部署来解决容灾的问题。但是,当出现故障时,需要快把流量切换到备用节点。然而,DNS 缓存的存在可能导致流量无法快速切换,从而影响业务的正常运行。为了避免这种情况的出现,阿里云推出了运营商 DNS 缓存刷新功能,本文将介绍如何使用该功能解决容灾问题。
480 1