Redis Examples
The official runnable project is ss-keel-examples/examples/14-redis-cache.
Cache-aside read
Section titled “Cache-aside read”cached, err := s.cache.Get(ctx, cacheKey)if err != nil { s.log.Warn("redis get failed [key=%s]: %v", cacheKey, err)} else if cached != nil { var note Note if err := json.Unmarshal(cached, ¬e); err == nil { return ¬e, "cache", nil }}Repopulate on cache miss
Section titled “Repopulate on cache miss”payload, err := json.Marshal(note)if err != nil { return nil, "", err}if err := s.cache.Set(ctx, cacheKey, payload, s.ttl); err != nil { s.log.Warn("redis set failed [key=%s]: %v", cacheKey, err)}Invalidate on write
Section titled “Invalidate on write”if err := s.cache.Delete(ctx, noteCacheKey(saved.ID)); err != nil { s.log.Warn("redis delete failed [key=%s]: %v", noteCacheKey(saved.ID), err)}