0

我正在将数据添加到 redis 流中,数据为整数或浮点数

> XADD name 1-0 field 1
> XADD name 1-1 field 2

然后我有一个读取流数据的 python 应用程序。

r = redis.Redis(host=HOST,port=PORT,decode_responses=True)

latest = r.xrevrange(
        name="name",
        count=1
    )

#[[
#  "1-1",
#  {
#    "field":"2"  ##data is str not int
#  }
#]]

问题是字典中的结果数据将始终为字符串格式。有人建议我使用hiredis,但我找不到如何获得非字符串输出。有没有办法让 redis 或hiredis 自动将数据转换为正确的数字类型?还是我必须自己实施铸造?

4

2 回答 2

0

或者在存储之前和检索对象之后使用泡菜。

r.set('some_key', pickle.dumps(obj)
obj = pickle.loads(r.get('some_key'))

就 redis 而言,它正在存储和检索字节。

于 2020-09-04T23:27:49.227 回答
0

Redis 是一个文本/二进制数据库。插入 anint会在输入时立即将其转换为字符串。

您必须将响应转换回您int自己。解码响应仅将响应解码bytesstr.

于 2020-09-04T22:56:06.760 回答