class MultiRedisLock implements Lock {

  @Override
  public boolean release(final List<String> keys, final String storeId, final String token) {
    final var keysWithStoreIdPrefix = keys.stream().map(key -> storeId + ":" + key).collect(Collectors.toList());

    final var released = stringRedisTemplate.execute(lockReleaseScript, keysWithStoreIdPrefix, token);
    if (released) {
      log.debug("Release script deleted the record for keys {} with token {} in store {}", keys, token, storeId);
    } else {
      log.error("Release script failed for keys {} with token {} in store {}", keys, token, storeId);
    }
    return released;
  }

  public  MultiRedisLock(final StringRedisTemplate stringRedisTemplate);

}