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

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

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

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

那怎么把数据放入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从缓存中读取即可。


相关文章
|
2月前
|
域名解析 缓存 网络协议
使用阿里云 运营商DNS缓存刷新功能,解决容灾问题
随着互联网应用的广泛应用,许多企业都采用了多地域部署来解决容灾的问题。但是,当出现故障时,需要快把流量切换到备用节点。然而,DNS 缓存的存在可能导致流量无法快速切换,从而影响业务的正常运行。为了避免这种情况的出现,阿里云推出了运营商 DNS 缓存刷新功能,本文将介绍如何使用该功能解决容灾问题。
|
2月前
|
域名解析 缓存 网络协议
如何在 Linux 上刷新本地 DNS 缓存?
如何在 Linux 上刷新本地 DNS 缓存?
33 0
如何在 Linux 上刷新本地 DNS 缓存?
|
3月前
|
域名解析 缓存 网络协议
如何在 Linux 上刷新 DNS 缓存?
如何在 Linux 上刷新 DNS 缓存?
85 0
|
9月前
|
缓存 CDN
CDN缓存设置——刷新缓存
CDN缓存设置——刷新缓存自制脑图
232 1
CDN缓存设置——刷新缓存
|
12月前
|
缓存 Linux
缓存区的刷新及配置
缓存区的刷新及配置
94 0
|
Web App开发 缓存 边缘计算
秒懂边缘云 | CDN基础入门:CDN缓存刷新与预热
本章节中将为您介绍「CDN刷新/预热」功能如何理解及使用,功能的注意事项及使用限制,最终效果验证等内容。
2903 0
秒懂边缘云 | CDN基础入门:CDN缓存刷新与预热
|
缓存 网络协议 Windows
Windows 技术篇-设置dns提升网速,刷新dns缓存
dns就是域名解析器,当我们方问域名首先要获取对应的ip,比如www.baidu.com,域名解析器要解析出对应的ip,然后我们才能访问到,如果域名解析器解析错了,或解析慢,当我们访问某些域名的时候就会很慢才能访问到。
459 0
Windows 技术篇-设置dns提升网速,刷新dns缓存
|
存储 缓存 算法
CPU缓存刷新的误解
即使是资深的技术人员,我经常听到他们谈论某些操作是如何导致一个CPU缓存的刷新。看来这是关于CPU缓存如何工作和缓存子系统如何与执行核心交互的一个常见误区。本文将致力于解释CPU缓存的功能以及执行程序指令的CPU核心如何与缓存交互。我将以最新的Intel x86 CPU为例进行说明,其他CPU也使用相似技术以达到相同目的。
146 0
CPU缓存刷新的误解
|
缓存 CDN
阿里云CDN如何刷新清除所有的缓存?
阿里云CDN刷新缓存可以一次性清除所有的缓存吗?新手站长网告诉你当然可以,阿里云CDN清理所有缓存的方法: CDN清除所有缓存的方法 网站改编或者其他大规模更新,一条条清除URL缓存太麻烦了,如何一键清理CDN上所有的缓存呢?很简单: 登录到阿里云CDN控制台; 点击左侧栏的“刷新”,如下图所示: 刷新类型默认是URL,将类型切换成“目录”,然后在下方的URL中输入网站首页的域名即可也可以参考官方文档的方法:使用CDN后,文件与源文件不一致,如何刷新缓存?,新手站长网提醒大家要善用帮助文档,几乎你遇到的问题文档中都有解决方法。
16235 0
推荐文章
更多