Redis存对象和存Json的思考

2024-02-12 22:29:57 浏览数 (2)

前言

日常使用的还是很多的,经常会用radis存储一些json数据,对象数据,但是这样偶然间会发现不同的项目根据习惯的使用不同,有些人喜欢存对象,有些人喜欢存json。其实存json和存对象本质上到redis这边而言,它都是进行一个字符串的存储,只是会多一个类路径,然后就操作方面的区别。

存储逻辑

在Redis中存储对象和存储JSON数据都是常见的用法。

1. 存储对象:您可以将对象序列化为字节流(如pickle序列化)然后存储在Redis中。这样做可以保留对象的结构和类型信息,但在存储和检索时可能需要更多的处理。在Python中,您可以使用pickle或其他序列化库来序列化对象。

2. 存储JSON:另一种常见的方法是将数据转换为JSON格式,然后存储在Redis中。这种方法更通用,因为JSON是一种轻量级的数据交换格式,易于处理和解析。您可以使用各种编程语言中的JSON库来处理JSON数据。

存对象

有下面这张图可以看出。下图存的是一个对象,但是它里面却包含了一个文件的路径。

存对象的优点缺点

在日常的存对象当中,发现不需要像json字符串一样需要进行反序化,反序列化来反序列化去。但是同样的你存储的对象,你的类名不能改,你的路径也不能改,一旦改了,他就无法做一个存储读取,这就是一个问题。

另外如果你设置的缓存是一个指定时间范围内的缓存倒也没问题,如果有一些缓存可能存储的时间长,一旦你进行一个版本发布类名改了但是缓存没有失效。这时缓存就会变成一个大问题,你还需要定期定期的指定去清理。

存储对象的优点:

  1. 保留了对象的结构和类型信息,可以直接反序列化为原始对象。
  2. 更适合存储复杂的数据结构,如自定义类实例或嵌套对象。

存储对象的缺点:

  1. 可能占用更多的存储空间,因为序列化后的对象通常比JSON数据更大。
  2. 在存储和检索时可能需要更多的处理,如序列化和反序列化的过程可能会增加开销。

存储JSON的优点:

  1. JSON是一种通用的数据格式,易于处理和解析。
  2. 占用的存储空间通常比存储对象更小。

存储JSON的缺点:

  1. 丢失了对象的结构和类型信息,需要在反序列化后手动处理数据类型。
  2. 不适合存储复杂的对象结构,可能需要额外的处理来处理嵌套数据。

总结

无论是存储对象或者存储json这个东西不能一概而论。还是要根据使用场景来如果没有针对特殊的业务,进行一个处理。我感觉他们之间的性能和存储也没有特别大的区别。还是那句话。当数据量小的时候,什么都不是问题。当数据量变得很大的时候,什么都是问题。

最后

点赞关注评论一键三连,每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

0 人点赞