我在Redis <K,V>
中有一些键,其中V是以逗号分隔的子字符串V: <v1,v2,v3,...,vn>
字符串。
到目前为止,我只是通过在Jedis中使用事务来设置密钥(Java中的Redis API)。但是新要求需要我对现有密钥执行一些操作。所以我有两个选择:
选项2似乎更快,因为它将节省往返但我有以下注意事项:
我的解决方案
由于正如下面的答案所说,它们都不是可行的选择。我在C中编写了自己的Redis命令并编译了源代码。所以现在我打电话给
redis-cli> MyCommand K V
对于管道中的每个<K,V>
。我按照教程 - Hacking Redis进行了操作。但是它可能不够,需要自己浏览和理解一些代码!
答案 0 :(得分:3)
wrt#1 - Lua脚本是原子的,但它不提供这种类型的一致性保证。如果脚本失败,Redis会自动回滚其更新 。有一项建议可以改善这种行为,但尚未被Redis接受(请参阅Josiah Carlson的博客:http://www.dr-josiah.com/2015/07/transactions-in-redis.html)
wrt#2 - 我不知道这么大的名单会不会顺利进行,但如果你需要它,你可能会错误地使用它;)