当我设置布尔值时( true
)对于redis中的键,值被强制为字符串( "true"
). 有了memcached,我就能找回我放进去的东西。但对于redis来说,它似乎把一切都串起来了。我找不到任何关于如何解决这个布尔问题的文档。没有特殊的布尔集合方法或布尔选项。
我用的是ruby。
例子如下。
设置:
require 'redis'
@redis = Redis.new
在irb中运行:
irb(main):034:0> bool = true
=> true
irb(main):035:0> bool
=> true
irb(main):036:0> @redis.set("example", bool)
=> "OK"
irb(main):037:0> @redis.get("example")
=> "true"
irb(main):038:0> @redis.get("example") == bool
=> false
1条答案
按热度按时间ig9co6j11#
“redis字符串类型是可以与redis键关联的最简单的值类型。它是memcached中唯一的数据类型,所以对于新手来说在redis中使用它也是很自然的。
但是关于您需要什么,您可以创建一些类来写/读任何类型的数据。
例如,它是如何在rails activerecord缓存中实现的
使用next对这个相当大的类进行一些简单的解释
Marshal
的方法:dump
以及load
```class RedisAnyTypesHandler
def initialize(redis)
@redis = redis
end
def write(key, value)
@redis.set(key, serialize(value))
end
def read(key)
deserialize(@redis.get(key))
end
private
def serialize(value)
Marshal.dump(value)
end
def deserialize(value)
Marshal.load(value)
end
end