在redis中存储两组表
Store two sets of tables in redis
使用Python和redis api;
我想存储一个字典,例如
Value -> List of Words(L.O.W)
Each word in L.O.W -> Value
基本上我希望所有内容都可以来回搜索(以尽可能最好的方式),但是由于 Redis 不支持多个 table/records,我们将如何在 Redis 中处理这个问题?
PS:我认为 Redis 是这样做的最佳选择,我也是 python 的新手
直接的方法是使用两种类型的集合:一种用于存储值->低,一种用于相反的方向,从低到>值的词。
SADD val1 low1 low2
SADD val2 low2 low3
SADD low1 val1
SADD low2 val1 val2
SADD low3 val2
对于value->L.O.W.,我认为有两个可行的方案:
1) 存储L.O.W。作为以值作为键名的集合。在 redis-py
中,这可能看起来像这样:
import redis
db = redis.StrictRedis() # Put connection info here
...
...
db.sadd(value, *listOfWords) # Assuming listOfWords is an iterable object (list, set, etc.)
#To recover the LOW for a given value:
listOfWords = db.smembers(value)
2) 存储所有值->L.O.W。查找作为散列,其 key/value 对分别是您的 "value" 和 "serialized" 单词列表。顶级哈希将被赋予一个键名以确保其功能显而易见(在下面的示例中我选择了 value_low_lookup
:
db.hset(`value_low_lookup`, value, ';'.join(listOfWords))
#Recovering the LOW
listOfWords = db.hget('value_low_lookup', value).split(';')
就 Redis 的存储而言,选项 #2 的内存效率更高,但需要在客户端进行更多处理(拉出分号连接的字符串并将其分隔到单词列表中)。在插入 Redis 之前,您还必须在客户端执行唯一性保证(如果这是一项要求)。
对于 L.O.W.-> 值,我认为散列可能是在 Redis 中表示该值的最有效方式,类似于上面的选项 #2。此散列中的 key/value 对可以分别是一个词和与该词来自的 LOW 关联的值。
使用Python和redis api;
我想存储一个字典,例如
Value -> List of Words(L.O.W)
Each word in L.O.W -> Value
基本上我希望所有内容都可以来回搜索(以尽可能最好的方式),但是由于 Redis 不支持多个 table/records,我们将如何在 Redis 中处理这个问题?
PS:我认为 Redis 是这样做的最佳选择,我也是 python 的新手
直接的方法是使用两种类型的集合:一种用于存储值->低,一种用于相反的方向,从低到>值的词。
SADD val1 low1 low2
SADD val2 low2 low3
SADD low1 val1
SADD low2 val1 val2
SADD low3 val2
对于value->L.O.W.,我认为有两个可行的方案:
1) 存储L.O.W。作为以值作为键名的集合。在 redis-py
中,这可能看起来像这样:
import redis
db = redis.StrictRedis() # Put connection info here
...
...
db.sadd(value, *listOfWords) # Assuming listOfWords is an iterable object (list, set, etc.)
#To recover the LOW for a given value:
listOfWords = db.smembers(value)
2) 存储所有值->L.O.W。查找作为散列,其 key/value 对分别是您的 "value" 和 "serialized" 单词列表。顶级哈希将被赋予一个键名以确保其功能显而易见(在下面的示例中我选择了 value_low_lookup
:
db.hset(`value_low_lookup`, value, ';'.join(listOfWords))
#Recovering the LOW
listOfWords = db.hget('value_low_lookup', value).split(';')
就 Redis 的存储而言,选项 #2 的内存效率更高,但需要在客户端进行更多处理(拉出分号连接的字符串并将其分隔到单词列表中)。在插入 Redis 之前,您还必须在客户端执行唯一性保证(如果这是一项要求)。
对于 L.O.W.-> 值,我认为散列可能是在 Redis 中表示该值的最有效方式,类似于上面的选项 #2。此散列中的 key/value 对可以分别是一个词和与该词来自的 LOW 关联的值。