ZBLOG

> db.urilist.find() { "_id" : ObjectId("6787610fb3a57bc85615da73"), "_link" : { "item" : [ { "href" : "http://127.0.0.1:29510/nnrf-nfm/v1/nf-instances/NF_INSTANCE_ID_12345" } ] }, "nfType" : "AMF" } { "_id" : ObjectId("678764d8b3a57bc85615da75"), ...

要将给定的 MongoDB 文档记录存储到 Redis 中,可以使用 Redis 的哈希(hash)数据结构来组织每个字段的数据。以下是如何将你提供的两个记录转换并存储到 Redis 的示例。

示例文档

你提供了两个 MongoDB 记录,如下所示:

  1. {
  2. "_id": ObjectId("6787610fb3a57bc85615da73"),
  3. "_link": {
  4. "item": [
  5. {
  6. "href": "http://127.0.0.1:29510/nnrf-nfm/v1/nf-instances/NF_INSTANCE_ID_12345"
  7. }
  8. ]
  9. },
  10. "nfType": "AMF"
  11. }
  1. {
  2. "_id": ObjectId("678764d8b3a57bc85615da75"),
  3. "nfType": "SMF",
  4. "_link": {
  5. "item": [
  6. {
  7. "href": "http://127.0.0.1:29510/nnrf-nfm/v1/nf-instances/smf_12345"
  8. },
  9. {
  10. "href": "http://127.0.0.1:29510/nnrf-nfm/v1/nf-instances/smf_update_12345"
  11. },
  12. {
  13. "href": "http://127.0.0.1:29510/nnrf-nfm/v1/nf-instances/smf_update_1"
  14. }
  15. ]
  16. }
  17. }

存储方案

为了在 Redis 中有效地存储这些信息,我们可以将每条记录用一个唯一键表示,并使用哈希表来保存各个字段和链接。我们还可以为 _link 中的 item 数组生成一个单独的键(比如,分割为多个哈希表或以 JSON 字符串形式保存)。

Python 示例代码

下面是如何在 Python 中实现此操作的示例:

  1. import redis
  2. import json
  3. # 创建Redis连接
  4. redis_client = redis.StrictRedis(host='localhost', port=6379, db=0)
  5. # 定义要存储的数据
  6. records = [
  7. {
  8. "_id": "6787610fb3a57bc85615da73",
  9. "_link": {"item": [{"href": "http://127.0.0.1:29510/nnrf-nfm/v1/nf-instances/NF_INSTANCE_ID_12345"}]},
  10. "nfType": "AMF"
  11. },
  12. {
  13. "_id": "678764d8b3a57bc85615da75",
  14. "_link": {"item": [
  15. {"href":"http://127.0.0.1:29510/nnrf-nfm/v1/nf-instances/smf_12345"},
  16. {"href":"http://127.0.0.1:29510/nnrf-nfm/v1/nf-instances/smf_update_12345"},
  17. {"href":"http://127.0.0.1:29510/nnrf-nfm/v1/nf-instances/smf_update_1"}
  18. ]},
  19. "nfType":"SMF"
  20. }
  21. ]
  22. # 将数据存入Redis中
  23. for record in records:
  24. # 使用_id作为Redis中的key
  25. key = f"record:{record['_id']}"
  26. # 存储基本信息
  27. redis_client.hset(key, mapping={
  28. 'nfType': record['nfType'],
  29. '_link': json.dumps(record['_link']) # 将_link转换为JSON字符串以存储
  30. })
  31. # 验证存储的数据
  32. for record in records:
  33. key = f"record:{record['_id']}"
  34. retrieved_record = redis_client.hgetall(key)
  35. print(f"Retrieved from Redis for ID {record['_id']}:")
  36. print({k.decode('utf-8'): v.decode('utf-8') for k, v in retrieved_record.items()})

注意事项

  • Key 命名:确保你的 key 是唯一且可辨识的。在这个例子中,我们使用了 "record:<MongoID>" 格式。

  • JSON 序列化:由于 _link 包含嵌套数组,所以我们把它序列化成 JSON 字符串,然后再存储。

  • 检查与验证:执行完后,你可以从 Redis 中读取数据并进行验证。

这种方式允许你轻松扩展与维护,同时确保数据完整性和快速访问。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=21145

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?