FTN14: FutoIn Cache
Version: 1.0
Date: 2015-01-22
Copyright: 2014 FutoIn Project (http://futoin.org)
Authors: Andrey Galkin

CHANGES

1. Concept

This spec is trying to be as simple as possible to meet very basic needs of caching.

It it expected that Service implementation handles cache hammering mitigation (e.g. by "expiring" ttl for some get requests 10% earlier).

2. Interface schema

    {
        "iface" : "futoin.cache",
        "version" : "{ver}",
        "ftn3rev" : "1.1",
        "funcs" : {
            "get" : {
                "params" : {
                    "key" : {
                        "type" : "string",
                        "desc" : "Unique cache key"
                    }
                },
                "result" : {
                    "value" : {
                        "type" : "any",
                        "desc" : "Any previously cached value"
                    }
                },
                "throws" : [
                    "CacheMiss"
                ],
                "desc" : "Trivial cached value retrieval"
            },
            "set" : {
                "params" : {
                    "key" : {
                        "type" : "string",
                        "desc" : "Unique cache key"
                    },
                    "value" : {
                        "type" : "any",
                        "desc" : "arbitrary value to cache"
                    },
                    "ttl" : {
                        "type" : "integer",
                        "desc" : "Time to live in milliseconds"
                    }
                },
                "desc" : "Trivial cached value storing"
            },
            "custom" : {
                "params" : {
                    "cmd" : {
                        "type" : "string",
                        "desc" : "Implementation-defined custom command"
                    },
                    "prm" : {
                        "type" : "any",
                        "desc" : "Implementation-defined custom command parameters"
                    }
                }
            }
        },
        "requires" : [
            "SecureChannel"
        ],
        "desc" : "Audit Log interface"
    }

3. Native interface

=END OF SPEC=