jetcache icon indicating copy to clipboard operation
jetcache copied to clipboard

存入的value为啥有一些乱码

Open starslink opened this issue 1 year ago • 5 comments

QuickConfig qc = QuickConfig.newBuilder(SHOP_ITEM_LACK_LOCAL)
      // 24 小时过期
      .expire(Duration.ofHours(24))
      .localExpire(Duration.ofHours(24))
      .localLimit(Integer.MAX_VALUE)
      .cacheType(CacheType.BOTH)
      .valueEncoder(Fastjson2ValueEncoder.INSTANCE)
      .valueDecoder(Fastjson2ValueDecoder.INSTANCE)
      // 本地通知过期
      .syncLocal(true)
      .build();
    shopItemLackCache = cacheManager.getOrCreateCache(qc);
@PostMapping("/post")
  public String post(@RequestBody A a) {
    shopItemLackCache.put("AX", a);
    return "ok";
  }

  static class A {

    private String x;

    private String y;

    public A() {
    }

    public A(String x, String y) {
      this.x = x;
      this.y = y;
    }

    public String getX() {
      return x;
    }

    public void setX(String x) {
      this.x = x;
    }

    public String getY() {
      return y;
    }

    public void setY(String y) {
      this.y = y;
    }
  }

一个简单的POST请求: image

  • 存入的值为: ���#com.alicp.jetcache.CacheValueHolder7{"accessTime":1729242058279,"expireTime":1729328458279}1com.example.testinit.controller.CacheController$A{"x":"123","y":"xxxx"}

starslink avatar Oct 18 '24 09:10 starslink

有额外的元信息

areyouok avatar Oct 18 '24 23:10 areyouok

[
    {
        "@type": "com.xxxx.oms.domain.base.DataDictItem",
        "createdTime": "2023-04-11T09:13:19",
        "dataDictId": 16274017971061760,
        "dataDictItemCode": "test",
        "dataDictItemExtendName": "红灯打开",
        "dataDictItemExtendName1": "red-on",
        "dataDictItemExtendName2": "1",
        "dataDictItemId": 16274024014480384,
        "dataDictItemName": "扫描提醒哦",
        "modifiedTime": "2024-02-26T15:04:13",
        "system": false
    },
    {
        "@type": "com.xxxx.oms.domain.base.DataDictItem",
        "createdTime": "2023-04-12T15:02:50",
        "dataDictId": 16274017971061760,
        "dataDictItemCode": "test1",
        "dataDictItemId": 16275783180272640,
        "dataDictItemName": "测试1",
        "modifiedTime": "2023-04-12T15:02:50",
        "system": false
    }
]

为啥不是这样显示呢

starslink avatar Oct 21 '24 15:10 starslink

你不能只顾自己需要的数据,框架也需要额外的数据

areyouok avatar Oct 22 '24 00:10 areyouok

我知道您的意思,我的意思是CacheValueHolder能不能也格式化存储

例如这样

{
    "type": "@com.alicp.jetcache.CacheValueHolder",
    "expireTime": 12323434,
    "accessTime": 123123213,
    "value": {
        "type": {
            "@type": "com.xxxx.oms.domain.base.DataDictItem",
            "createdTime": "2023-04-12T15:02:50",
            "dataDictId": 16274017971061760,
            "dataDictItemCode": "test1",
            "dataDictItemId": 16275783180272640,
            "dataDictItemName": "测试1",
            "modifiedTime": "2023-04-12T15:02:50",
            "system": false
        }
    }
}

starslink avatar Oct 22 '24 06:10 starslink

不光是CacheValueHolder,还有别的信息,首先最重要的信息是编码方式(比如描述这条数据是json编码方式),放在最前面。

这不可能改了,改了就兼容,如果你觉得有必要,就得自己改。

areyouok avatar Oct 23 '24 03:10 areyouok