Skip to content

Commit

Permalink
Merge pull request #45 from udhos/master
Browse files Browse the repository at this point in the history
How to make expiration optional.
  • Loading branch information
thrawn01 authored Jul 6, 2022
2 parents 4d2d85e + 33907cd commit 4707649
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ For API docs and examples, see http://godoc.org/github.com/mailgun/groupcache
cluster eventually becomes consistent again.

* Support for expired values. `SetBytes()`, `SetProto()` and `SetString()` now
accept an optional `time.Time{}` which represents a time in the future when the
value will expire. Expiration is handled by the LRU Cache when a `Get()` on a
key is requested. This means no network coordination of expired values is needed.
However this does require that time on all nodes in the cluster is synchronized
for consistent expiration of values.
accept an optional `time.Time` which represents a time in the future when the
value will expire. If you don't want expiration, pass the zero value for
`time.Time` (for instance, `time.Time{}`). Expiration is handled by the LRU Cache
when a `Get()` on a key is requested. This means no network coordination of
expired values is needed. However this does require that time on all nodes in the
cluster is synchronized for consistent expiration of values.

* Now always populating the hotcache. A more complex algorithm is unnecessary
when the LRU cache will ensure the most used values remain in the cache. The
Expand Down
4 changes: 4 additions & 0 deletions sinks.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ var _ Sink = &byteViewSink{}
//
// Implementation of Getter must call exactly one of the Set methods
// on success.
//
// `e` sets an optional time in the future when the value will expire.
// If you don't want expiration, pass the zero value for
// `time.Time` (for instance, `time.Time{}`).
type Sink interface {
// SetString sets the value to s.
SetString(s string, e time.Time) error
Expand Down

0 comments on commit 4707649

Please sign in to comment.