我在我的骆驼应用程序中使用Redis组件。一个问题是它会自动将字符串前缀到键。例如,假设我跑在我的骆驼的应用程序如下:骆驼Redis自动将字符串前缀到密钥
from("direct://path/to/store/in/redis")
.setHeader(RedisConstants.COMMAND, constant("SET"))
.setHeader(RedisConstants.KEY, constant("key"))
.setHeader(RedisConstants.VALUE, constant("value"))
.to(spring-redis://localhost:6379);
然后,如果我打开命令行Redis的客户端和运行下面列出的所有键在DB:
> keys *
返回:
1) "\xac\xed\x00\x05t\x00\x03key"
在这里,你可以看到它前面加上\西飞\固定的\ X00 \ x05t \ X00 \ X03的键,我不知道它的确切位置做到这一点。
如果我只使用GET和SET Redis命令,这不会成为问题,因为出于某种原因,它会为这些命令预先输入与该键相同的字符串,所以没有键错误匹配。但是,如果我尝试执行不同的Redis命令,如KEYS,通过骆驼应用程序,就像这样:
from("direct://some/other/path/to/redis")
.setHeader(RedisConstants.COMMAND, constant("KEYS"))
.setHeader(RedisConstants.PATTERN, constant("*"))
.to(spring-redis://localhost:6379);
它预先考虑一个稍微不同的串星号,这会导致查询不返回任何东西因为模式没有匹配。也就是说,
> KEYS *
命令转换为类似在Redis的以下内容:
> KEYS "\xac\xed\x00\x05t\x00\x05t*"
对这个有什么想法?