Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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 #
toCachable :: a -> ByteString Source #
fromCachable :: ByteString -> Either String a Source #
Instances
Cachable ByteString Source # | |
Defined in Freckle.App.Memcached toCachable :: ByteString -> ByteString Source # fromCachable :: ByteString -> Either String ByteString Source # | |
Cachable ByteString Source # | |
Defined in Freckle.App.Memcached | |
Cachable Text Source # | |
Defined in Freckle.App.Memcached 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 #
memcachedClientL :: Lens' env MemcachedClient Source #
Instances
HasMemcachedClient MemcachedClient Source # | |
HasMemcachedClient site => HasMemcachedClient (HandlerData child site) Source # | |
Defined in Freckle.App.Memcached.Client memcachedClientL :: Lens' (HandlerData child site) MemcachedClient Source # |
module Freckle.App.Memcached.MD5