1.redis缓存处理机制:先从缓存里面取,取不到去数据库里面取,然后丢入缓存中

例如:系统参数处理工具类

package com.ztesoft.iotcmp.utils;

import com.esotericsoftware.minlog.Log;
import com.ztesoft.bss.common.util.SpringUtil;
import com.ztesoft.iotcmp.service.systemparammgr.service.DcSystemParamService;
import com.ztesoft.iotcmp.util.PrimaryKeyUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.StringRedisTemplate; import java.util.HashMap;
import java.util.List;
import java.util.Map; public class SystemParamUtils { public static String getValue(String paramCode,String pkey) throws Exception
{
// 先从缓存里面获取,缓存里面没有再查询
StringRedisTemplate redisTemplate = PrimaryKeyUtils.getStringRedisTemplate();
String paramValue = redisTemplate.opsForValue().get("Value_"+paramCode+"_"+pkey);
if (StringUtils.isBlank(paramValue)) {
// 使用springUtil获取Service,去数据库里取值
DcSystemParamService dcSystemParamService = SpringUtil.getBean("dcSystemParamService");
paramValue = dcSystemParamService.queryValueByCodeAndPKey(paramCode,pkey); if (StringUtils.isBlank(paramValue))
{
Log.error("数据库参数Value获取失败,paramCode="+paramCode+"pkey="+pkey);
return null;
} // 再丢缓存里面去
redisTemplate.opsForValue().set("Value_"+paramCode+"_"+pkey,paramValue);
}
return paramValue;
} public static List<String> getValueList(String paramCode) throws Exception
{
// 先从缓存里面获取,缓存里面没有再查询
StringRedisTemplate redisTemplate = PrimaryKeyUtils.getStringRedisTemplate();
List<String> paramValueList = redisTemplate.opsForList().range("List_"+paramCode,0,-1);
if (paramValueList == null || paramValueList.isEmpty()) {
// 使用springUtil获取Service,去数据库里取值
DcSystemParamService dcSystemParamService = SpringUtil.getBean("dcSystemParamService");
paramValueList = dcSystemParamService.queryValueListByCode(paramCode); if (paramValueList == null)
{
Log.error("数据库参数List获取失败,paramCode="+paramCode);
return null;
} // 再丢缓存里面去
redisTemplate.opsForList().leftPushAll("List_"+paramCode,paramValueList);
}
return paramValueList;
} public static Map<String,String> getMap(String paramCode) throws Exception
{
// 先从缓存里面获取,缓存里面没有再查询
StringRedisTemplate stringRedisTemplate = PrimaryKeyUtils.getStringRedisTemplate();
Map resultValueMap = stringRedisTemplate.opsForHash().entries("Map_"+paramCode);
if (resultValueMap == null || resultValueMap.isEmpty()) {
// 使用springUtil获取Service,去数据库里取值
DcSystemParamService dcSystemParamService = SpringUtil.getBean("dcSystemParamService");
List<Map> paramValueMap= dcSystemParamService.queryValueAndPKeyByCode(paramCode); if (paramValueMap == null || paramValueMap.isEmpty())
{
Log.error("数据库参数Map获取失败,paramCode="+paramCode);
return null;
} resultValueMap = new HashMap<String, String>();
for ( Map<String,String> map : paramValueMap) {
String key = map.get("pkey");
String value = map.get("param_value");
resultValueMap.put(key, value);
}
// 再丢缓存里面去
stringRedisTemplate.opsForHash().putAll("Map_"+paramCode,resultValueMap);
}
return resultValueMap;
}
}
public class PrimaryKeyUtils {
public static StringRedisTemplate getStringRedisTemplate() {
RedisCache redisCache = (RedisCache) CacheFactory.getCacheClient(DataDictCache.getCacheNamespace());
StringRedisTemplate stringRedisTemplate = redisCache.getRedisTemplate();
return stringRedisTemplate;
}
}

2.系统参数表设计结构

redis缓存处理机制的更多相关文章

  1. Redis 缓存失效机制

    Redis缓存失效的故事要从EXPIRE这个命令说起,EXPIRE允许用户为某个key指定超时时间,当超过这个时间之后key对应的值会被清除,这篇文章主要在分析Redis源码的基础上站在Redis设计 ...

  2. SpringBoot缓存管理(三) 自定义Redis缓存序列化机制

    前言 在上一篇文章中,我们完成了SpringBoot整合Redis进行数据缓存管理的工作,但缓存管理的实体类数据使用的是JDK序列化方式(如下图所示),不便于使用可视化管理工具进行查看和管理. 接下来 ...

  3. Redis 缓存失效和回收机制续

    二.Redis Key失效机制 Redis的Key失效机制,主要借助借助EXPIRE命令: EXPIRE key 30 上面的命令即为key设置30秒的过期时间,超过这个时间,我们应该就访问不到这个值 ...

  4. Redis 利用锁机制来防止缓存过期产生的惊群现象-转载自 http://my.oschina.net/u/1156660/blog/360552

    首先,所谓的缓存过期引起的“惊群”现象是指,在大并发情况下,我们通常会用缓存来给数据库分压,但是会有这么一种情况发生,那就是在一定时间 内生成大量的缓存,然后当缓存到期之后又有大量的缓存失效,导致后端 ...

  5. JAVA记录-redis缓存机制介绍(一)

    1.redis介绍 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Re ...

  6. 使用方法拦截机制在不修改原逻辑基础上为 spring MVC 工程添加 Redis 缓存

    首先,相关文件:链接: https://pan.baidu.com/s/1H-D2M4RfXWnKzNLmsbqiQQ 密码: 5dzk 文件说明: redis-2.4.5-win32-win64.z ...

  7. [技术博客] 用户验证码验证机制---redis缓存数据库的使用

    目录 问题引入 初识redis 实际应用 作者:马振亚 问题引入 在这次的开发过程中,我们的需求中有一个是普通用户可以通过特定的机制申请成为社长.因为只有部分人才能验证成功,所以这个最开始想了两种思路 ...

  8. 缓存机制总结(JVM内置缓存机制,MyBatis和Hibernate缓存机制,Redis缓存)

    一.JVM内置缓存(值存放在JVM缓存中) 我们可以先了解一下Cookie,Session,和Cache Cookie:当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cooki ...

  9. Django缓存机制以及使用redis缓存数据库

    目录 Django 配置缓存机制 缓存系统工作原理 Django settings 中 默认cache 缓存配置 利用文件系统来缓存 使用Memcache来缓存: 使用Local-memory来缓存: ...

随机推荐

  1. 剑指offer-面试题40-最下的k个数-快速排序

    /* 题目: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. */ /* 思路: 快速排序,找到第k+1大的数,其左边则为最 ...

  2. php趣题小记

    题目一: $a = 'abc'; $a++; echo $a; // abd 题目二: function myfun($a){ echo $a+10; } $a = 10; echo "my ...

  3. H5_0021:判断平台和微信

    1,跳网站: <script>eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c ...

  4. 纪中集训2020.02.03【NOIP提高组】模拟B 组总结反思——登机(board),游戏(game),分组(group)

    T1 JZOJ5535. 登机(board) 比赛时 一在题目列表里看到题目标题,就热血沸腾了,不知道为什么,老师居然放了一道之前做过的题目.我清楚地记得这题是DP,于是很快码了出来.讲一讲我的思路, ...

  5. CodeForces - 1107E 区间DP

    和紫书上的Blocks UVA - 10559几乎是同一道题,只不过是得分计算不同 不过看了半天紫书上的题才会的,当时理解不够深刻啊 不过这是一道很好区间DP题 细节看代码 #include<c ...

  6. VSCode部署JAVA项目出现The type java.lang.Object cannot be resolved

    如题,出现的原因是这样的:我将mac系统上的eclipse项目复制到了ubuntu环境下,通过vscode的远程功能连接ubuntu. 然后项目上就出现了各种报错,显示The type java.la ...

  7. xctf进阶-unserialize3反序列化

    一道反序列化题: 打开后给出了一个php类,我们可以控制code值: `unserialize()` 会检查是否存在一个 `__wakeup()` 方法.如果存在,则会先调用 `__wakeup` 方 ...

  8. Wannafly Camp 2020 Day 3I N门问题 - 概率论,扩展中国剩余定理

    有一个猜奖者和一个主持人,一共有 \(n\) 扇门,只有一扇门后面有奖,主持人事先知道哪扇门后有奖,而猜奖者不知道.每一轮,猜奖者选择它认为的有奖概率最大(如果有多个最大,随机选一个)的一扇门,主持人 ...

  9. 利用GRC进行安全研究和审计 – 将无线电信号转换为数据包(转)

    0x00 介绍 InGuardians作为一家从事信息安全研究和咨询的公司,自创立以来不但关注着web应用的渗透测试,网络取证,嵌入式设备等领域也致力于无线网络的评估方法上面的研究.在期间无线网络评估 ...

  10. 0级搭建类012-Windows Server 2019安装(2019) 公开

    项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...