2016-06-20 6 views
1

私は学校のためのプロジェクトに取り組んでいますが、どこかでつかまっています。私は3つの変数を含むオブジェクトを作成します。ソースIP、宛先IP、DNS名。これをオブジェクトにしてJSONとしてラップし、 "dnsanswer"という名前でRedisに書き込むので、正しく書かれているかどうかを確認すると、redisの行全体がこのように見えます。Redisはdictを書き込んでネストされたキーで取得します

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

lindex "dnsanswer" -1を使用してこの出力が得られます。これは、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の中に、キーのthatsから値だけを受け取ることができますか? (もし私が正しくそれを公式化するかわからない)。

答えて

1

リストのメンバーはレディスにとって不透明なので、その一部だけをリクエストすることはできません。何ができることはあなたのPythonコードであなたのJSONをデシリアライズして興味のキーを抽出し、またはそのために(EVALまたはEVALSHA付き)サーバー側のLuaのスクリプトを使用するかである:私の返事が遅れて申し訳ありません

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

。しかし、あなたが私にそれが不可能であるという情報を与えたので、私はRedisにそれをオブジェクトの代わりに辞書として送ることに決めました。 – Nerotix

+0

Saner choice :) –

関連する問題