Safe Haskell | None |
---|---|
Language | GHC2021 |
Freckle.App.Memcached
Contents
Description
App-level caching backed by Memcached
Usage:
- Have a Reader-like monad stack over some
App
- Set up that
App
withHasMemcachedClient
- Give the value to cache a
Cachable
instance - Use
caching
To avoid Cachable
, see cachingAs
and cachingAsJSON
.
Synopsis
- class Cachable a where
- toCachable :: a -> ByteString
- fromCachable :: ByteString -> Either String a
- caching :: (MonadUnliftIO m, MonadLogger m, MonadTracer m, MonadReader env m, HasMemcachedClient env, Cachable a, HasCallStack) => CacheKey -> CacheTTL -> m a -> m a
- cachingAs :: (MonadUnliftIO m, MonadLogger m, MonadTracer m, MonadReader env m, HasMemcachedClient env, HasCallStack) => (ByteString -> Either String a) -> (a -> ByteString) -> CacheKey -> CacheTTL -> m a -> m a
- cachingAsJSON :: (MonadUnliftIO m, MonadLogger m, MonadTracer m, MonadReader env m, HasMemcachedClient env, FromJSON a, ToJSON a, HasCallStack) => CacheKey -> CacheTTL -> m a -> m a
- cachingAsCBOR :: (MonadUnliftIO m, MonadLogger m, MonadTracer m, MonadReader env m, HasMemcachedClient env, Serialise a, HasCallStack) => CacheKey -> CacheTTL -> m a -> m a
- class HasMemcachedClient env where
- memcachedClientL :: Lens' env MemcachedClient
- module Freckle.App.Memcached.CacheKey
- module Freckle.App.Memcached.CacheTTL
- module Freckle.App.Memcached.MD5
Documentation
class Cachable a where Source #
Instances
Cachable ByteString Source # | |
Defined in Freckle.App.Memcached Methods toCachable :: ByteString -> ByteString Source # fromCachable :: ByteString -> Either String ByteString Source # | |
Cachable ByteString Source # | |
Defined in Freckle.App.Memcached Methods toCachable :: ByteString -> ByteString Source # fromCachable :: ByteString -> Either String ByteString Source # | |
Cachable Text Source # | |
Defined in Freckle.App.Memcached Methods toCachable :: Text -> ByteString Source # fromCachable :: ByteString -> Either String Text Source # |
caching :: (MonadUnliftIO m, MonadLogger m, MonadTracer m, MonadReader env m, HasMemcachedClient env, Cachable a, HasCallStack) => CacheKey -> CacheTTL -> m a -> m a Source #
Memoize an action using Memcached and Cachable
cachingAs :: (MonadUnliftIO m, MonadLogger m, MonadTracer m, MonadReader env m, HasMemcachedClient env, HasCallStack) => (ByteString -> Either String a) -> (a -> ByteString) -> CacheKey -> CacheTTL -> m a -> m a Source #
Like caching
, but with explicit conversion functions
cachingAsJSON :: (MonadUnliftIO m, MonadLogger m, MonadTracer m, MonadReader env m, HasMemcachedClient env, FromJSON a, ToJSON a, HasCallStack) => CacheKey -> CacheTTL -> m a -> m a Source #
Like caching
, but de/serializing the value as JSON
cachingAsCBOR :: (MonadUnliftIO m, MonadLogger m, MonadTracer m, MonadReader env m, HasMemcachedClient env, Serialise a, HasCallStack) => CacheKey -> CacheTTL -> m a -> m a Source #
Cache data in memcached in CBOR format
Re-exports
class HasMemcachedClient env where Source #
Methods
memcachedClientL :: Lens' env MemcachedClient Source #
Instances
module Freckle.App.Memcached.MD5