Redis通过嵌套键

时间:2016-06-20 14:27:30

标签: python json dictionary redis

所以我正在为一所学校的项目工作,但我被困在某个地方。我创建了一个包含3个变量的对象; source ip,destination ip,dnsname。我在一个对象中创建它,然后我将它包装为JSON并将其写入Redis,名称为“dnsanswer”,因此redis中的整行看起来像这样,当我检查它是否写得正确时,我得到这个输出:

{"srcip": "74.125.136.94", "NA": "www.google.nl", "dstip": "192.168.79.135"}

我使用lindex“dnsanswer”-1获得此输出,这将显示Redis中最后添加的行。

我现在被卡住的是这个;我希望能够从Redis请求“dstip”。我使用rpush将对象写入redis和lindex以查看Redis中最后写的行。

这是将函数写入redis的函数的代码:

def toRedis(pakket):

    r_serv = redis.StrictRedis(host='localhost', port=6379, db=0)

    r_serv.rpush("dnsanswer", pakket) #werkt
    print r_serv.lindex("dnsanswer", -1) #werkt

TL; DR如何从Redis中的密钥中只获取一个值? (不确定我是否正确地制定了它。)

1 个答案:

答案 0 :(得分:1)

列表的成员对Redis不透明,因此您无法仅请求其中的一部分。您可以做的是在Python代码中反序列化您的JSON并提取您感兴趣的密钥,或者使用服务器端Lua脚本(使用EVALEVALSHA):

local member = redis.call('LINDEX', KEYS[1], -1)
local json = cjson.decode(member)
return json[]