JSON与对象间的转换 API设计(学习笔记1)

ByteRhapsody
• 阅读 751
  • 关于缓存实现业务说明 :
  • 1.应该查询缓存
  • 2.判断缓存中是否有数据 *
  • 3.如果没有数据,则查询数据库
  • 4.如果有数据,则直接返回数据.
  • 思考: redis中主要操作的类型是String类型,业务数据如何于String进行交互!!!!! * 实现思路: 业务数据 ~ JSON ~ String

设计API:
方法1: 将任意的对象转化为JSON.
方法2: 将任意的JSON串转化为对象.
要求完成异常的处理

public class ObjectMapperUtil{
    //1.定义常量对象:
        优势1:对象独一份,节省空间 
        优势2:对象不允许别人随意篡改
        private static final ObjectMapper Mapper = new ObjectMapper();
        
        //1.任意对象转换为Json
 public static String toJson(Object object){
        try {
            if(object==null){
                throw new RuntimeException("传递的参数object为null,请认真检查");
 }
            return Mapper.writeValueAsString(object);
 } catch (JsonProcessingException e) {
            e.printStackTrace();
 //应该将检查异常,转化为运行时异常
 throw new RuntimeException("传递的对象不支持json转化/检查是否有get/set方法");
 }
    }
//2.将任意Json转换为对象,传递什么类型转化什么对象
 public static <T> T toObject(String json,Class<T> target) {
        //判断字符串的API
 if (StringUtils.isEmpty(json) || target == null) {
            throw new RuntimeException("传递的参数不能为null");
 }
        try {
            return Mapper.readValue(json, target);
 } catch (JsonProcessingException e) {
            e.printStackTrace();
 throw new RuntimeException("json转换异常");
 }
    }
        
        
}

service中的实现步骤:

  • 步骤: * 先查询Redis缓存 K:V
    • true 直接返回数据
    • false 查询数据库 *
    • KEY有什么特点: 1.key应该动态变化 2.key应该标识业务属性 * key=ITEM_CAT_PARENTID::parentId
点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
RedisTemplate常用方法总结
Redis常用的数据类型:StringHashListSetzSetSortedsetString类型判断是否有key所对应的值,有则返回true,没有则返回falseredisTemplate.hasKey(key)有则取出
Stella981 Stella981
3年前
Redis 击穿、穿透、雪崩的解决方案
Redis击穿、穿透、雪崩的解决方案击穿和穿透场景:指的是单个key在缓存中查不到,去数据库查询(透过redis去查db叫击穿)区别:击穿:数据在数据库中真实存在,缓存丢失,大量请求击穿数据库穿透:数据在缓存中没有,数据库中也没有
Stella981 Stella981
3年前
Redis为什么这么快
Redis简介Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件它支持多种类型的数据结构,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(SortedSet或者是ZSet)与范围查询,Bitmaps,Hyperloglogs和
Stella981 Stella981
3年前
Hibernate之二级缓存
一:二级缓存简介为什么需要缓存:      查询大量数据时更快,拉高程序的性能什么样的数据需要缓存:      很少被修改或根本不改的数据数据字典业务场景比如:耗时较高的统计分析sql、电话账单查询sql等关系型数据库:数据与数据之间存在关系(联系)的数据库mysql/Oracle
Stella981 Stella981
3年前
Linux玩转redis从入门到放肆
1\.缓存穿透在大多数互联网应用中,缓存的使用方式如下图所示:!(https://oscimg.oschina.net/oscnet/6a12e0fbee579fa624b2ea1738e89278c3f.png)1.当业务系统发起某一个查询请求时,首先判断缓存中是否有该数据;2.如果缓存中存在,则直接返回数据;3.如果缓存中
Stella981 Stella981
3年前
SDWebImage 实现原理及大致介绍
一、SDWebImage实现原理:1.首先让占位图先显示。2.SDWebImageManage交给SDImageCache先从内存中查找是否有图片,会以URL作为数据的索引在内存中查找是否有对应的缓存。3.如果有缓存,通过代理进行回调展示图片。4.如果内存缓存中没有找到,生成NSInvocati
Stella981 Stella981
3年前
Redis应用学习——缓存的使用与设计
1\.缓存的收益与成本  1.收益:通过缓存加速读写速度。在内存中读写比硬盘速度快降低数据库服务器的负载。比如业务端的请求的数据大多数都由Redis服务器来处理,大大减轻MySQL服务器的压力  2.成本:数据不一致问题,比如Redis服务器与数据库服务器之间的某些数据可能会发
Wesley13 Wesley13
3年前
mysql基础之查询缓存、存储引擎
一、查询缓存    “查询缓存”,就是将查询的结果缓存下载,如果查询语句完全相同,则直接返回缓存中的结果。  如果应用程序在某个场景中,需要经常执行大量的相同的查询,而且查询出的数据不会经常被更新,那么,使用查询缓存会有一定的性能提升。查看当前服务是否开启了查询缓存功能:!复制代码(https://oscimg.oschina.n
浅谈SQL优化小技巧 | 京东云技术团队
回顾MySQL的执行过程,帮助介绍如何进行sql优化。(1)客户端发送一条查询语句到服务器;(2)服务器先查询缓存,如果命中缓存,则立即返回存储在缓存中的数据;(3)未命中缓存后,MySQL通过关键字将SQL语句进行解析,并生成一颗对应的解析树,MySQL
系统存储架构升级分享
一、业务背景系统业务功能:系统内部进行数据处理及整合,对外部系统提供结果数据的初始化(写)及查询数据结果服务。系统网络架构:部署架构对切量上线的影响\内部管理系统上线对其他系统的读业务无影响分布式缓存可进行单独扩容,与存储及查询功能升级无关通过缓存层的隔离
京东云开发者 京东云开发者
7个月前
浅谈SQL优化小技巧
作者:京东零售王军回顾:MySQL的执行过程回顾MySQL的执行过程,帮助介绍如何进行sql优化。(1)客户端发送一条查询语句到服务器;(2)服务器先查询缓存,如果命中缓存,则立即返回存储在缓存中的数据;(3)未命中缓存后,MySQL通过关键字将SQL语句