Indexing 在Redis中将索引(集合)值以原子方式添加/删除到哈希属性
使用Stackexchange.redis,如何对哈希属性的索引进行建模,以便自动删除哈希索引值 例: 在上面的示例中,当使用值Indexing 在Redis中将索引(集合)值以原子方式添加/删除到哈希属性,indexing,redis,set,stackexchange.redis,Indexing,Redis,Set,Stackexchange.redis,使用Stackexchange.redis,如何对哈希属性的索引进行建模,以便自动删除哈希索引值 例: 在上面的示例中,当使用值LastName:Smith添加新哈希时,我可以使用.StringAppend()将值添加到相应的索引(Set)中 如果我需要使用Key=2删除散列,我如何从索引(Set)Key=LastName:Smith中存储的值中自动删除2 我是否需要调整模型以适应更高效的索引,以便按属性查询哈希 对我的措辞进行任何调整,使其更加清晰,我们也将不胜感激 ~z~谢谢 更新我学到的知
LastName:Smith
添加新哈希时,我可以使用.StringAppend()
将值添加到相应的索引(Set)中
如果我需要使用Key=2
删除散列,我如何从索引(Set)Key=LastName:Smith
中存储的值中自动删除2
我是否需要调整模型以适应更高效的索引,以便按属性查询哈希
对我的措辞进行任何调整,使其更加清晰,我们也将不胜感激
~z~谢谢
更新我学到的知识:
只是集合
(我的术语)的值部分键/值对
- Redis具有对
的集合
进行操作的命令。特别是成员
和SADD
。我不必对SREM
,从而提示这个问题值进行整体操作
1) “3”
127.0.0.1:6370>hgetall 3
1) “名字”
2) “鲍勃”
3) “姓氏”
4) “马利” 删除元素 127.0.0.1:6370>hgetall 3
(空列表或集合)
127.0.0.1:6370>成员名称:马利
(空列表或集合)
因此,对于删除,我将有一个LUA脚本,它按照GET on the Set(进入集合)的方式执行某些操作(使用LUA foo从集合值内部删除一个键-可能是字符串替换??),然后将集合添加回?添加示例脚本以删除到答案中。
Hash -> Key=1 Value={ FirstName="Bob", LastName="Smith", Etc=...}
Key=2 Value={ FirstName="Sue", LastName="Smith", Etc=...}
Set(index) -> Key=FirstName:Bob Value={1}
Key=FirstName:Sue Value={2}
Key=LastName:Smith Value={1,2}
eval "redis.call('hset',KEYS[1],KEYS[2],KEYS[3],KEYS[4],KEYS[5]) redis.call('sadd',KEYS[2]..':'..KEYS[3],KEYS[1]) redis.call('sadd',KEYS[4]..':'..KEYS[5],KEYS[1])" 5 3 FirstName Bob LastName Marley
eval "local k2=redis.call('hget',KEYS[1],KEYS[2]) local k3=redis.call('hget',KEYS[1],KEYS[3]) redis.call('srem',KEYS[2]..':'..k2,KEYS[1]) redis.call('srem',KEYS[3]..':'..k3,KEYS[1]) redis.call('del',KEYS[1])" 3 3 FirstName LastName