sprinkles-0.3.5.0: src/Web/Sprinkles/Cache/Memcached.hs
{-#LANGUAGE NoImplicitPrelude #-}
{-#LANGUAGE ScopedTypeVariables #-}
{-#LANGUAGE OverloadedStrings #-}
module Web.Sprinkles.Cache.Memcached
where
import ClassyPrelude
import Web.Sprinkles.Cache
import Data.Time.Clock.POSIX
import qualified Data.HashMap.Strict as HashMap
import Data.Default
import qualified Database.Memcached.Binary.Maybe as Memcached
memcachedCache :: IO (Cache ByteString ByteString)
memcachedCache = do
let connectInfo :: Memcached.ConnectInfo = def
withConnection = Memcached.withConnection connectInfo
expiry = 60
return
Cache
{ cacheGet = \key -> do
lazyVal <- withConnection $ Memcached.get_ key
return $ toStrict <$> lazyVal
, cachePut = \key val -> do
withConnection $ Memcached.set 0 expiry key (fromStrict val)
return ()
, cacheDelete = \key -> do
withConnection $ Memcached.delete key
return ()
, cacheVacuum = return 0
}