跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 很多业务用 Redis 做了缓存,假如客户端命中的缓存,那还需要先从 Redis 中读取的数据反序列化成对象再序列化成 JSON 给前端吗?
未分類
23 9 月 2020

很多业务用 Redis 做了缓存,假如客户端命中的缓存,那还需要先从 Redis 中读取的数据反序列化成对象再序列化成 JSON 给前端吗?

很多业务用 Redis 做了缓存,假如客户端命中的缓存,那还需要先从 Redis 中读取的数据反序列化成对象再序列化成 JSON 给前端吗?

資深大佬 : qwerthhusn 0

比如,用的 Spring Web RestController

@GetMapping("/data") public Data get() {   byte[] dataBS = redis.get("key");   if (dataBS == null) {     return getFromDB();   } else {     // 可能用了 Kryo 或者 FST 或者 Protobuf 等序列化协议     Data data = deserialize(dataBS, Data.class);     return data;   } } 

总感觉可以直接存 JSON,然后从 Redis 中直接取出 byte[]返回给客户端,省掉一次反序列化和序列化的流程。但是这样写的感觉可读性不强,而且写法也比较麻烦。

请问大佬们,一般遇到这种情形,你们都是咋做的?

大佬有話說 (6)

  • 資深大佬 : canbingzt

    用 @Cacheable

  • 主 資深大佬 : qwerthhusn

    Cacheable 只是简化了获取逻辑,但是还是需要进行反序列化和二次序列化的
    @canbingzt

  • 資深大佬 : joesonw

    这种 get 一下的请求, encode/decode 的 cpu 消耗很小的. 而且万一请求后面还有 filter, 例如数据字段脱敏呢?

  • 資深大佬 : doufum

    1. spring 的 redisTemplate,配置的时候加上 value 序列化方式,取的时候转型一下就行了啥
    2. 自己写 Redis 工具类的化,重载一下 get 方法,对 value 的序列化 /反序列化加入到重载的方法里面,入参 class 泛型,返回直接接受
    3. 接口加注解,统一 AOP 处理,在 AOP 的方法里面处理转型、序列化、反序列化(配合 1,2 )

  • 主 資深大佬 : qwerthhusn

    @joesonw 是的,突然这么一想也对,相对于耗时的 IO 操作,执行一些 CPU 和内存任务很快,这点点优化基本上没太多意义。系统的瓶颈也不会出现在这里。。。。。。这么理解没错吧

  • 資深大佬 : yejianmail

    你这里可以直接用 String 的 redisTemplate

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具