【发布时间】:2013-10-24 16:47:52
【问题描述】:
我想在 Redis 中做一个模糊搜索
我有很多域 IP 信息要维护,我想使用哈希来保存它们
Domain-IP的结构是这样的:
域名-IP
域名
ip
last-access(上次我用这个ip访问域)
访问次数
...
现在我想做两件事:
按域搜索此 Domain-IP 信息,例如:select * from domain-ip where domain = "www.google.com"
按域和 IP 更新 Domain-IP 信息,例如:更新 domain-ip set access-count = access-count + 1 where domain = "www.google.com" and ip = "192.168.1.1 "
所以我设计 Redis 中的结构是:
HSET domainip.www.google.com.192.168.1.1 access-count 20
HSET domainip.www.google.com.192.168.1.2 access-count 20
所以我可以像这样按域搜索它们,例如,搜索有关 www.google.com 的信息:
- 通过以下方式获取所有以 www.google.com 开头的密钥:keys domainip.www.google.com*
- 使用这些键循环获取有关 google 的所有信息:
for (string key : keys) { execute("HGETALL " + key) // then convert the hash into a POJO }
更新操作如下:
“HSET 域ip。” + domainStr + "." + ipStr + "访问计数" + 新访问计数;
“HSET 域ip。” + domainStr + "." + ipStr + "最后一次访问" + 新的最后访问;
我的问题是:
循环是否会导致性能问题?
是否有权逐个更新hash文件?
如果你能提供一个好主意来完成我想要在 Redis 中完成的操作,那就太好了,谢谢:D
【问题讨论】:
标签: redis