From 0ff0a883b5a7e7fb4287ca0f10af7025e3441ba2 Mon Sep 17 00:00:00 2001 From: Patrick Mylund Nielsen Date: Sun, 29 Jan 2012 03:27:01 +0100 Subject: [PATCH] Notes on cache serialization --- README | 19 +++++++++++++++++++ cache.go | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/README b/README index 247b186..38e5128 100644 --- a/README +++ b/README @@ -3,6 +3,10 @@ suitable for applications running on a single machine. Any object can be stored, for a given duration or forever, and the cache can be used safely by multiple goroutines. +Although go-cache isn't meant to be used as a database, the entire cache may +be saved to and loaded from a file (or any io.Reader/Writer) to recover from +downtime quickly. + == Installation goinstall github.com/pmylund/go-cache @@ -135,3 +139,18 @@ func (c *Cache) DeleteExpired() func (c *Cache) Flush() Deletes all items from the cache. + +func (c *cache) Save(w io.Writer) error + Writes the cache's items using Gob to an io.Writer + +func (c *cache) SaveFile(fname string) error + Saves the cache's items to the given filename, creating the file if it + doesn't exist, and overwriting it if it does. + +func (c *cache) Load(r io.Reader) error + Adds gob-serialized cache items from an io.Reader, excluding any items that + already exist in the current cache + +func (c *cache) LoadFile(fname string) error + Loads and adds cache items from the given filename, excluding any items that + already exist in the current cache diff --git a/cache.go b/cache.go index aeea675..bac11ad 100644 --- a/cache.go +++ b/cache.go @@ -326,7 +326,8 @@ func (c *cache) Load(r io.Reader) error { return err } -// Loads and adds cache items from the given filename +// Loads and adds cache items from the given filename, excluding any items that +// already exist in the current cache func (c *cache) LoadFile(fname string) error { fp, err := os.Open(fname) if err != nil {