是否可以将Redis命令EVAL SHA命令与Spring-Data Redis一起使用?
我们成功地使用EVAL
了 with execute command: redisTemplate.execute(script, null, args);
,但是每次将脚本传输到 Redis 服务器似乎都会产生很大的开销。
是否可以使用 Spring-Data Redis 存储一次脚本并根据其 SHA 运行它?
是否可以将Redis命令EVAL SHA命令与Spring-Data Redis一起使用?
我们成功地使用EVAL
了 with execute command: redisTemplate.execute(script, null, args);
,但是每次将脚本传输到 Redis 服务器似乎都会产生很大的开销。
是否可以使用 Spring-Data Redis 存储一次脚本并根据其 SHA 运行它?
默认的 ScriptExecutor 通过检索脚本的 SHA1 并首先尝试运行 evalsha 来优化性能,如果脚本尚未出现在 Redis 脚本缓存中,则回退到 eval。
案例是“当我们有主/从配置时,即使我在两台服务器上都安装了相同的脚本并使用 evalsha 调用主控,主控每次都会使用 eval 命令将整个脚本转发给从属”。
也许你可以这样做:
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 具有“scriptLoad”方法,允许您加载脚本。