簡體   English   中英

如何使用Redis for Python在Redis中搜索值

[英]How to search for values in Redis with redis for python

我目前正在嘗試通過HTTP API在Redis中搜索與特定值匹配的條目,就像使用常規數據庫一樣(例如: http:// localhost:8000 / api?name = John&age = 20 )和redis python庫( https://pypi.org/project/redis/ )。

到目前為止,我得到的代碼返回整個哈希,將每個條目轉換為JSON並將其添加到列表中

import json
import redis
import os

r = redis.StrictRedis(host=os.environ['redis_url'], port=os.environ['redis_port'], password=os.environ['redis_pass'], ssl=True)
result = r.hgetall('Directory')
dic_list = []
for key in result.keys():
    dic_list.append(json.loads(result[key].decode('utf-8')))

return dic_list

我知道我可以通過獲取特定密鑰的值

r.hget('Directory', 'key_I_want')

但是,每個鍵內部都有一個完整的JSON信息,因此,例如,這將是Directory哈希內的鍵值示例

"1": {
     "name": "James", 
      "age": "22", 
      "favorite_color":"Green"
 }, 
"2":{
      "name":"John",
      "age": "20",
      "favorite_color": "red"
  }, 
"3":{
      "name":"Jim",
      "age": "30",
      "favorite_color": "yellow"
  }

所以我知道

r.hget('Directory', '1')

會回來

{
     "name": "James", 
      "age": "22", 
      "favorite_color":"Green"
 }

但是,我真正想要的是查找具有特定值的每個JSON,而不僅僅是獲取散列中每個鍵的值,有沒有實際的方法?

根據您的問題,您可能正在尋找結果[鍵]中的值。 假設值等於val,請嘗試:

for key in result.keys():
    if val in result[key].values():
        dic_list.append(json.loads(result[key].decode('utf-8')))

例如,如果

val = "James"

Yoy將獲得James的所有結果。

您可以將其混合一些,以所需的方式進行更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM