你如何在 Redis 中设置一个布尔值?
How do you set a boolean value in Redis?
当我将布尔值 (true
) 设置为 Redis 中的键时,该值被强制转换为字符串 ("true"
)。使用 memcached,我可以取回我放入的内容。但是使用 Redis,它似乎将所有内容都字符串化了。我找不到有关如何解决此布尔问题的任何文档。没有特殊的 boolean_set 方法或布尔选项。
我正在使用 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
"Redis String类型是最简单的可以与Redis键关联的值类型。它是Memcached中唯一的数据类型,所以新手在Redis中使用它也很自然。" - 不可能以“简单”的方式做到。
但是关于您需要什么,您可以创建一些 class 到 write/read 的任何类型的数据。
例如,它在 Rails ActiveRecord Cache
中的实施方式
使用 next Marshal
的方法对这个相当大 class 的一些简单解释:dump
and 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
现在您可以玩任何类型的数据了:
> redis_handler = RedisAnyTypesHandler.new(@redis)
> bool = true
=> true
> redis_handler.write('example', bool)
=> "OK"
> redis_handler.read('example') == bool
=> true
> class Foo
> attr_accessor :foo
> end
=> nil
> foo = Foo.new
=> #<Foo:0x0000556dc19097f8>
> foo.foo = 2
=> 2
> redis_handler.write('example_2', foo)
=> "OK"
> redis_handler.read('example_2').foo
=> 2
当我将布尔值 (true
) 设置为 Redis 中的键时,该值被强制转换为字符串 ("true"
)。使用 memcached,我可以取回我放入的内容。但是使用 Redis,它似乎将所有内容都字符串化了。我找不到有关如何解决此布尔问题的任何文档。没有特殊的 boolean_set 方法或布尔选项。
我正在使用 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
"Redis String类型是最简单的可以与Redis键关联的值类型。它是Memcached中唯一的数据类型,所以新手在Redis中使用它也很自然。" - 不可能以“简单”的方式做到。
但是关于您需要什么,您可以创建一些 class 到 write/read 的任何类型的数据。
例如,它在 Rails ActiveRecord Cache
中的实施方式使用 next Marshal
的方法对这个相当大 class 的一些简单解释:dump
and 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
现在您可以玩任何类型的数据了:
> redis_handler = RedisAnyTypesHandler.new(@redis)
> bool = true
=> true
> redis_handler.write('example', bool)
=> "OK"
> redis_handler.read('example') == bool
=> true
> class Foo
> attr_accessor :foo
> end
=> nil
> foo = Foo.new
=> #<Foo:0x0000556dc19097f8>
> foo.foo = 2
=> 2
> redis_handler.write('example_2', foo)
=> "OK"
> redis_handler.read('example_2').foo
=> 2