Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在redis中使用哈希作为密钥的可能性_Ruby_Redis - Fatal编程技术网

Ruby 在redis中使用哈希作为密钥的可能性

Ruby 在redis中使用哈希作为密钥的可能性,ruby,redis,Ruby,Redis,在Python中: import redis db = redis.StrictRedis() db.set({'test1': 'a', 'test2' : 'b'},1) print db.get({'test2': 'b', 'test1' : 'a'}) result : 1 我怎么能用Ruby做呢?(我不想使用JSON,因为在JSON中,散列中元素的顺序必须是强的。)这是可能的,但不能像Python中那样直接使用。这是因为密钥将转换为字符串,但不会有任何特定的规范化。因此,如果交换关

在Python中:

import redis
db = redis.StrictRedis()
db.set({'test1': 'a', 'test2' : 'b'},1)
print db.get({'test2': 'b', 'test1' : 'a'})
result : 1

我怎么能用Ruby做呢?(我不想使用JSON,因为在JSON中,散列中元素的顺序必须是强的。)

这是可能的,但不能像Python中那样直接使用。这是因为密钥将转换为字符串,但不会有任何特定的规范化。因此,如果交换关键点的位置,字符串表示形式将更改

2.1.5 :001 > r = Redis.current
 => #<Redis client v3.2.1 for redis://127.0.0.1:6379/0>
2.1.5 :002 > r.set({test1: 'a', test2: 'b'}, 1)
 => "OK"
2.1.5 :003 > r.keys
 => ["{:test1=>\"a\", :test2=>\"b\"}"]
2.1.5 :004 > r.get({test2: 'b', test1: 'a'})
 => nil
那会转化的

{test2: 'b', test1: 'a'}
{test1: 'a', test2: 'b'}
{"test1" => 'a', "test2" => 'b'}
...
进入

这可以有效地用作密钥

{test2: 'b', test1: 'a'}
{test1: 'a', test2: 'b'}
{"test1" => 'a', "test2" => 'b'}
...
"test1:a/test2:b"