| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // Package redis provides a redis interface for http caching.
- package redis
- import (
- "github.com/garyburd/redigo/redis"
- "github.com/gregjones/httpcache"
- )
- // cache is an implementation of httpcache.Cache that caches responses in a
- // redis server.
- type cache struct {
- redis.Conn
- }
- // cacheKey modifies an httpcache key for use in redis. Specifically, it
- // prefixes keys to avoid collision with other data stored in redis.
- func cacheKey(key string) string {
- return "rediscache:" + key
- }
- // Get returns the response corresponding to key if present.
- func (c cache) Get(key string) (resp []byte, ok bool) {
- item, err := redis.Bytes(c.Do("GET", cacheKey(key)))
- if err != nil {
- return nil, false
- }
- return item, true
- }
- // Set saves a response to the cache as key.
- func (c cache) Set(key string, resp []byte) {
- c.Do("SET", cacheKey(key), resp)
- }
- // Delete removes the response with key from the cache.
- func (c cache) Delete(key string) {
- c.Do("DEL", cacheKey(key))
- }
- // NewWithClient returns a new Cache with the given redis connection.
- func NewWithClient(client redis.Conn) httpcache.Cache {
- return cache{client}
- }
|