Scripting API

Purely functional interface for the Scripting API.

Script Commands usage

Once you have acquired a connection you can start using it:

import cats.effect.IO

def putStrLn(str: String): IO[Unit] = IO(println(str))

commandsApi.use { redis => // ScriptCommands[IO, String, String]
  for {
    // returns a String according the value codec (the last type parameter of ScriptCommands)
    greeting <- redis.eval("return 'Hello World'", ScriptOutputType.Value)
    _ <- putStrLn(s"Greetings from Lua: $greeting")
  } yield ()
}

The return type depends on the ScriptOutputType you pass and needs to suite the result of the Lua script itself. Possible values are Integer, Value (for decoding the result using the value codec), Multi (for many values) and Status (maps to Unit in Scala). Scripts can be cached for better performance using scriptLoad and then executed via evalSha, see the redis docs for details.