redis,python和存储信息

时间:2014-05-02 07:29:42

标签: python redis webserver

所以我正在开发一个基于Flask的简单网络服务器,它存储并稍后显示我通过邮件调用收到的一些信息。

无论如何,我收到的信息都是这样存储的:

@app.route('client/<client_id>/', methods=['POST'])
def status(client_id):

    r_server=redis.Redis("127.0.0.1")

    jsonobj=request.data
    data=json.loads(jsonobj)

    result = {
        'client_id': client_id
        'current test': data[0]
        'status': data[1]
    }

    return

现在我想要的是将它保存到redis中,同时保持client_id当前测试和状态链接在一起。

有一种简单的方法可以将它存储在redis中并稍后收到它,我可以使用client_id查看操作吗?

问候

1 个答案:

答案 0 :(得分:1)

如果特定client_id的信息是可覆盖的,则可以使用Redis哈希(http://redis.io/commands/hmset)。例如:

>>> r=redis.Redis('')
>>> r.hmset('ClientID:127.0.0.1', {'test':'1', 'status':'success'})
True
>>> r.hmget('ClientID:127.0.0.1',['test','status'])
['1', 'success']

如果必须追加记录,您可以将每个记录转储为字符串,并保存在Redis列表中。例如:

>>> r.rpush('ClientID:127.0.0.1', json.dumps({'test':'1', 'status':'success'}))
1L
>>> r.rpush('ClientID:127.0.0.1', json.dumps({'test':'2', 'status':'failure'}))
2L
>>> [json.loads(x) for x in r.lrange('ClientID:127.0.0.1', 0, -1)]
[{u'test': u'1', u'status': u'success'}, {u'test': u'2', u'status': u'failure'}]