[英]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.