【发布时间】:2012-10-15 04:00:31
【问题描述】:
我在我的 python 应用程序中使用 redis 来存储简单的值,例如计数器和时间戳列表,但是我试图获取一个计数器并将它与一个数字进行比较,我遇到了一个问题。
如果我这样做:
import redis
...
myserver = redis.Redis("localhost")
myserver.set('counter', 5)
然后尝试像这样获取该值:
if myserver.get('counter') < 10:
myserver.incr('counter')
然后我在 if 语句中得到一个类型错误,因为我在比较 '5' 我正在存储一个整数值并获得一个字符串 1(可以考虑作为不同的值)。
我的问题是:这应该像那样工作吗?我的意思是它是一个非常基本的类型,我知道我是否必须解析对象但一个 int?好像我做错了什么。
我缺少什么配置吗?
有没有办法让 redis 返回正确的类型而不是字符串? 我这样说是因为它对于列表和日期时间甚至浮点值都是一样的。
这可能是我正在使用的 redis-py 客户端而不是 redis 本身的问题吗?
【问题讨论】:
-
我一直在搞乱他们的发行版附带的 src/redis-cli。不幸的是,它看起来像 redis 将整数存储为字符串,并在执行 incr/decr 操作时推断出类型。
-
你可以使用 if int(myserver.get('counter'))
标签: python types redis type-conversion