从 redis 流和 python 获取 int 或 float 响应
Getting int or float response from redis stream and python
我正在将数据添加到 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 自动将数据转换为正确的数值类型?还是我必须自己实施转换?
Redis 是一个 textual/binary 数据库。插入 int
会在输入时立即将其转换为字符串。
您必须自己将响应转换回 int
。解码响应仅解码 bytes
对 str
的响应。
或者在存储之前和检索对象之后使用 pickle。
r.set('some_key', pickle.dumps(obj)
obj = pickle.loads(r.get('some_key'))
就redis而言,它正在存储和检索字节。
我正在将数据添加到 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 自动将数据转换为正确的数值类型?还是我必须自己实施转换?
Redis 是一个 textual/binary 数据库。插入 int
会在输入时立即将其转换为字符串。
您必须自己将响应转换回 int
。解码响应仅解码 bytes
对 str
的响应。
或者在存储之前和检索对象之后使用 pickle。
r.set('some_key', pickle.dumps(obj)
obj = pickle.loads(r.get('some_key'))
就redis而言,它正在存储和检索字节。