美文网首页
Redis共享数据时的异常

Redis共享数据时的异常

作者: 谁在烽烟彼岸 | 来源:发表于2019-09-27 14:41 被阅读0次

多个项目同时使用一个redis,数据共享

依赖

项目a使用

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.4</version>
</dependency>

项目b使用

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.44</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.10</version>
</dependency>

状况

当项目a/b使用自己写入数据一切正常,
当项目a使用项目b的写入的数据时,无法读取,

org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Unrecognized token 'article_5d81fceea0ef1c017f76ae7d': was expecting ('true', 'false' or 'null')
 at [Source: [B@68261ba; line: 1, column: 65]; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'article_5d81fceea0ef1c017f76ae7d': was expecting ('true', 'false' or 'null')
 at [Source: [B@68261ba; line: 1, column: 65]
        at org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer.deserialize(Jackson2JsonRedisSerializer.java:73)
        at org.springframework.data.redis.serializer.SerializationUtils.deserializeValues(SerializationUtils.java:50)
        at org.springframework.data.redis.serializer.SerializationUtils.deserialize(SerializationUtils.java:63)
        at org.springframework.data.redis.core.AbstractOperations.deserializeValues(AbstractOperations.java:253)
        at org.springframework.data.redis.core.DefaultValueOperations.multiGet(DefaultValueOperations.java:125)

查询redis数据库发现数据存在差异,差异存在于""
项目a

项目a.png
项目b
项目b.png

查看代码
项目a


项目a.png

项目b


项目b.png

红框中为差异的地方

原因分析

RedisTemplate和StringRedisTemplate对于数据的处理是不一样的
虽然我们都是存储的String类型,在RedisTemplate中静jackson处理之后还是一个对象,有"",而使用StringRedisTemplate处理过之后就是一个文本,没有""
所以当所以当项目a去解析项目b写入的数据时,因为没有双引号,识别为对象(number/bool)而非String。

相关文章

  • Redis共享数据时的异常

    多个项目同时使用一个redis,数据共享 依赖 项目a使用 项目b使用 状况 当项目a/b使用自己写入数据一切正常...

  • Redis集群 笔记 2020-02-10

    Redis集群 Redis集群(cluster): 在多个Redis节点间共享数据。去中心化,无proxy。(区块...

  • redis 测试集群搭建

    Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation)。 Redis...

  • Redis 集群

    Redis集群101 Redis 集群是一个提供在多个Redis节点间自动地共享数据的程序集。 Redis 集群在...

  • Redis和Mysql数据一致性解决方案

    常规逻辑在更新数据时remove操作Redis操作,需要考虑remove操作异常时的事务回退等处理,比较复杂,以下...

  • Redis设计 - 集群原理

    前言 Redis Cluster是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享...

  • Linux下Redis集群部署

    一、Redis集群介绍 Redis 集群是一个提供在多个Redis节点间共享数据的程序集。Redis集群并不支持处...

  • Redis中Key中为什么要使用{}

    一、Redis集群介绍 Redis集群是一个提供在多个Redis间节点间共享数据的程序集,Redis集群能够实现k...

  • 三、Redis 的持久化技术 —— AOF 日志 与 RDB快照

    考虑这样一个场景,当Redis发生异常重启时,Redis 的数据都是存在内存中的,这时该怎么找回来?实际上,Red...

  • Redis Cluster 分布式集群

    一.什么是Redis Cluster 1)Redis集群是一个可以在多个Redis节点之间进行数据共享的设施(in...

网友评论

      本文标题:Redis共享数据时的异常

      本文链接:https://www.haomeiwen.com/subject/eujructx.html