Redis键管理
我在一个Python应用中使用Redis。关于如何管理键,有什么建议吗?我尽量把所有的Redis调用放在一个地方,但感觉到处硬编码键不太对。有什么小窍门吗?
2 个回答
1
其实,键名就像你应用里的类和属性,所以在某种程度上会出现一些“重复”的情况。
不过,如果你发现自己为了构建这些键而重复写了很多代码,那你可能需要考虑使用一个映射器。在Python中,有一个叫做Redisco的工具。
如果你想要更简单的选择,在Ruby中有一个叫做Nest的工具(把它移植到Python应该也不难)。它可以帮助你减少对键的引用重复:
users = Nest.new("User")
user = users[1]
# => "User:1"
user[:name]
# => "User:1:name"
redis.set(user[:name], "Foo")
# or even:
user[:name].set("Foo")
user[:name].get
# => "Foo"
2
我使用了一组包装类来处理密钥生成,类似于:
public User Get(string username) {
return redis.Get("user:"+username);
}
我在全局范围内有每个类的实例,所以只需要调用一下
Server.Users.Get(username);
当然,这个是在.NET环境下,但在其他编程语言中也应该有类似的做法。这个方法相比于使用通用的映射工具还有一个额外的好处,就是它提供了一个很好的地方来处理连接共享和索引。