从redis stream和python获取int或float响应

2024-04-26 17:52:04 发布

您现在位置: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自动将数据转换为正确的数字类型?还是我必须自己实施角色扮演


Tags: 数据字符串nameredis应用程序hostfieldport
2条回答

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

您必须自己将响应转换回int。解码响应仅将bytes响应解码为str

或者在存储对象之前和检索对象之后使用pickle

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

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

相关问题 更多 >