Sihl Cache

This module provides the cache service and helpers to store arbitrary values. Think of the cache service as a generic key-value store where you can choose a backend.

Currently MariaDb (Sihl_cache.MariaDb) and PostgreSql (Sihl_cache.PostgreSql) are supported.



First, choose a backend in service/

module Cache = Sihl_cache.PostgreSql


Then, register the service in run/

let services = [ Service.Cache.register () ]


Run pending migrations with make sihl migrate.


The API is documented in Sihl.Contract.Cache.Sig.

(* Associated user_id with a value *)
let%lwt () = Service.Cache.set ("user_id", Some "56") in
let%lwt user_id = Service.Cache.find "user_id" in
let () =
  match user_id with
  | Some user_id -> print_endline @@ "Found user " ^ user_id
  | None -> print_endline "No user found"
(* Delete user_id *)
Service.Cache.set ("user_id", None)