是否可以将Redis命令EVAL SHA命令与Spring-Data Redis一起使用?
我们成功使用EVAL
执行命令:redisTemplate.execute(script, null, args);
,
但是每次将脚本传输到Redis服务器似乎都会产生很大的开销。
是否可以使用Spring-Data Redis将脚本存储一次并根据其SHA运行?
答案 0 :(得分:4)
默认的ScriptExecutor通过检索来优化性能 脚本的SHA1并尝试首先运行evalsha,退回 如果脚本尚未存在于Redis脚本缓存中,则进行评估。
案例是"当我们有主/从配置时,即使我在两台服务器上安装了相同的脚本并使用evalsha调用主服务器,主服务器也会将整个脚本转发给带有eval的服务器每次命令"。
答案 1 :(得分:1)
也许你可以这样做:
final String scriptString1= script1.getScriptAsString();
redisTemplate.execute(new RedisCallback<String>(){
@Override
public String doInRedis(RedisConnection connection) throws DataAccessException {
DefaultStringRedisConnection newConnection = new DefaultStringRedisConnection(connection);
return newConnection.scriptLoad(scriptString1);
}
});
DefaultStringRedisConnection具有方法&#34; scriptLoad&#34;并允许您加载脚本。