| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Freckle.App.Memcached
Contents
Description
App-level caching backed by Memcached
Usage:
- Have a Reader-like monad stack over some
App - Set up that
AppwithHasMemcachedClient - Give the value to cache a
Cachableinstance - 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 -> ByteString0 Source # fromCachable :: ByteString0 -> 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
| HasMemcachedClient MemcachedClient Source # | |
Defined in Freckle.App.Memcached.Client Methods memcachedClientL :: Lens' MemcachedClient MemcachedClient Source # | |
| HasMemcachedClient site => HasMemcachedClient (HandlerData child site) Source # | |
Defined in Freckle.App.Memcached.Client Methods memcachedClientL :: Lens' (HandlerData child site) MemcachedClient Source # | |
module Freckle.App.Memcached.MD5