searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

redis存储json数据

2023-07-02 14:46:37
129
0

存储为字符串

使用字符串存取JSON的方法比较简单和直接。先将JSON对象序列化为字符串,在大多数编程语言中,都有相应的JSON库可以使用然后使用Redis的String数据类型存储。

字符串存取JSON的读写效率通常较高,存储和读取操作仅涉及字符串的序列化和反序列化。但字符串在存取过程中无法直接操作JSON的结构和属性,需要先进行反序列化为JSON对象才能进行操作。

 

存储为哈希表

将JSON对象的每个属性作为Hash的字段(Field),对应的属性值作为字段的值。这样就将整个JSON数据存储为一个Hash对象。使用Hash提供的命令对JSON数据进行灵活的操作,如读取、修改、删除等。还可以使用HGETALL命令一次性获取所有字段和值的列表,方便地获取整个JSON数据。

hash存储json方式优点是可以针对单个属性进行读写操作,存储和读取效率较高。但无法对整个JSON对象进行排序和范围查询。

 

存储为列表

将JSON对象序列化为字符串,将JSON数据按照插入顺序保存在List中。可使用LPUSH命令将JSON字符串添加到List的左侧,或使用RPUSH命令添加到右侧

列表保存json对象可以保持JSON对象的顺序,并支持按索引访问和弹出操作。但无法直接根据属性进行查询和排序,需要遍历整个列表才能找到符合条件的JSON对象

存储为有序集合

Sorted Set本身并不直接支持存储JSON数据,通过为每个JSON字符串定义一个分值,可以实现按分值排序和范围检索。

使用JSON库将JSON对象转换为字符串。给JSON字符串定义一个适当的分值。分值可以是整数或浮点数,并用于排序。

使用Redis的Sorted Set提供的命令,可以按照分值范围或排名检索JSON数据。

将从Sorted Set中检索到的JSON字符串进行反序列化,将其转换回JSON对象。

这种方式JSON对象要通过成员的分值进行排序和检索,无法直接根据JSON对象的属性进行检索。

 

RedisJSON 存储json

RedisJSON是一个Redis模块,它扩展了Redis,使其能够原生地存储和处理JSON数据。

RedisJSON提供了一种将JSON对象作为单个Redis键存储的方式,并提供了一系列命令来处理JSON数据。

示例命令:

1)保存json对象到键'key'

JSON.SET key . {"name": "peter", "age": 30, "city": "Guangzhou"}

 

2)获取JSON对象

JSON.GET key

 

3)更新JSON对象的属性

JSON.SET key .city "shenzhen"

 

4)获取JSON对象的属性值

JSON.GET key .name

 

5) 删除Redis键中的JSON对象

DEL key

 

要使用RedisJSON,需要在Redis中安装并加载RedisJSON模块,并使用支持RedisJSON的客户端才能进行操作。

 

总结

综上所述,具体使用哪种方式存储json对象,需要结合业务使用场景:

  • 如果业务类型中对于缓存的读取缓存的场景更多,并且更新缓存不频繁(或者每次更新都更新json数据中的大多数key),那么选择String方式。
  • 如果业务类型中对于缓存的更新比较频繁(特别是每次只更新少数几个键)时, 或者每次只想取json数据中的少数几个键值时,选择hash方式。
  • 如果业务类型中需要存储和操作复杂的JSON数据结构,还要快速检索JSON数据,可以选择RedisJSON方式。
0条评论
0 / 1000
w****n
12文章数
1粉丝数
w****n
12 文章 | 1 粉丝
原创

redis存储json数据

2023-07-02 14:46:37
129
0

存储为字符串

使用字符串存取JSON的方法比较简单和直接。先将JSON对象序列化为字符串,在大多数编程语言中,都有相应的JSON库可以使用然后使用Redis的String数据类型存储。

字符串存取JSON的读写效率通常较高,存储和读取操作仅涉及字符串的序列化和反序列化。但字符串在存取过程中无法直接操作JSON的结构和属性,需要先进行反序列化为JSON对象才能进行操作。

 

存储为哈希表

将JSON对象的每个属性作为Hash的字段(Field),对应的属性值作为字段的值。这样就将整个JSON数据存储为一个Hash对象。使用Hash提供的命令对JSON数据进行灵活的操作,如读取、修改、删除等。还可以使用HGETALL命令一次性获取所有字段和值的列表,方便地获取整个JSON数据。

hash存储json方式优点是可以针对单个属性进行读写操作,存储和读取效率较高。但无法对整个JSON对象进行排序和范围查询。

 

存储为列表

将JSON对象序列化为字符串,将JSON数据按照插入顺序保存在List中。可使用LPUSH命令将JSON字符串添加到List的左侧,或使用RPUSH命令添加到右侧

列表保存json对象可以保持JSON对象的顺序,并支持按索引访问和弹出操作。但无法直接根据属性进行查询和排序,需要遍历整个列表才能找到符合条件的JSON对象

存储为有序集合

Sorted Set本身并不直接支持存储JSON数据,通过为每个JSON字符串定义一个分值,可以实现按分值排序和范围检索。

使用JSON库将JSON对象转换为字符串。给JSON字符串定义一个适当的分值。分值可以是整数或浮点数,并用于排序。

使用Redis的Sorted Set提供的命令,可以按照分值范围或排名检索JSON数据。

将从Sorted Set中检索到的JSON字符串进行反序列化,将其转换回JSON对象。

这种方式JSON对象要通过成员的分值进行排序和检索,无法直接根据JSON对象的属性进行检索。

 

RedisJSON 存储json

RedisJSON是一个Redis模块,它扩展了Redis,使其能够原生地存储和处理JSON数据。

RedisJSON提供了一种将JSON对象作为单个Redis键存储的方式,并提供了一系列命令来处理JSON数据。

示例命令:

1)保存json对象到键'key'

JSON.SET key . {"name": "peter", "age": 30, "city": "Guangzhou"}

 

2)获取JSON对象

JSON.GET key

 

3)更新JSON对象的属性

JSON.SET key .city "shenzhen"

 

4)获取JSON对象的属性值

JSON.GET key .name

 

5) 删除Redis键中的JSON对象

DEL key

 

要使用RedisJSON,需要在Redis中安装并加载RedisJSON模块,并使用支持RedisJSON的客户端才能进行操作。

 

总结

综上所述,具体使用哪种方式存储json对象,需要结合业务使用场景:

  • 如果业务类型中对于缓存的读取缓存的场景更多,并且更新缓存不频繁(或者每次更新都更新json数据中的大多数key),那么选择String方式。
  • 如果业务类型中对于缓存的更新比较频繁(特别是每次只更新少数几个键)时, 或者每次只想取json数据中的少数几个键值时,选择hash方式。
  • 如果业务类型中需要存储和操作复杂的JSON数据结构,还要快速检索JSON数据,可以选择RedisJSON方式。
文章来自个人专栏
redis
12 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0