Matt Keller
d600e983c2
For inclusion with upstream projection, Cache.New() has been reverted to
...
its former argument list, and Cache.NewWithLRU() as been added to allow
setting maxItems. cache_test has also been reverted.
2015-03-09 08:17:46 -04:00
Matt Keller
2056c799e1
Comment correction
2015-03-08 12:39:08 -04:00
Matt Keller
bf414c412e
Performance was suffering with very large caches, when the cache was
...
under maxItems pressure. Reverted the LRU handler back to the first
iteration: lazy deletion via the janitor, with bulk removal.
2015-03-08 11:50:57 -04:00
Matt Keller
b60c6ee2c8
Consistency.
2015-03-08 09:23:24 -04:00
Matt Keller
f66ee0bbc6
Injected LRU capabilities that simply:
...
* ensures that when an item is added, if the number of unexpired items
>= maximum number of items specified, the oldest (based on ACCESS) is
expired
* when an item is "gotten", or "set", the access time is updated
The existing janitor system is unchanged, and used to actually delete
the items.
The only change from a consumer standpoint, is one addition parameter at
the end of a "New" call, that specifies the maximum number of items to
allow, or 0, if you want to disable the LRU at all.
2015-02-27 15:57:16 -05:00
Patrick Mylund Nielsen
8a2f4f19ef
go fmt
2014-12-22 02:48:52 -05:00
Patrick Mylund Nielsen
e3a846e1f9
Clarify what NoExpiration and DefaultExpiration are
2014-12-22 02:47:08 -05:00
Patrick Mylund Nielsen
a1dd6b7fff
s/NewFrom/NewFrom()/ in NewFrom doc
2014-12-22 02:39:59 -05:00
Patrick Mylund Nielsen
9ea75a8586
s/NewFrom/NewFrom()/ in Load/LoadFile/Save/SaveFile docs
2014-12-22 02:37:46 -05:00
Patrick Mylund Nielsen
873e78f0db
s/gob.Register/gob.Register()/ in NewFrom doc
2014-12-22 02:30:02 -05:00
Patrick Mylund Nielsen
bc36de7dec
Clarify NewFrom documentation on use cases
2014-12-22 02:15:12 -05:00
Patrick Mylund Nielsen
d68800e607
s/with the same caveats/subject to the same caveat/ in NewFrom doc
2014-12-22 02:09:42 -05:00
Patrick Mylund Nielsen
887753fa90
Refer to DeleteExpired as c.DeleteExpired()
2014-12-22 02:06:10 -05:00
Patrick Mylund Nielsen
888f396121
Update NewFrom doc to be consistent with New
2014-12-22 02:04:11 -05:00
Patrick Mylund Nielsen
46827c6a61
Add NoExpiration and DefaultExpiration constants and use them (thanks to Jason Mooberry)
2014-12-22 01:46:22 -05:00
Patrick Mylund Nielsen
73a30b2033
Add NewFrom, and deprecate Save, SaveFile, Load, and LoadFile
2014-12-22 01:12:10 -05:00
Patrick Mylund Nielsen
ffd0b9e3ec
Move the unexportedShardedCache to sharded.go
2014-12-22 00:24:49 -05:00
Patrick Mylund Nielsen
6ea7e6fb42
Remove the pointless unexportedInterface
2014-12-22 00:12:48 -05:00
Patrick Mylund Nielsen
7d1d6d6ae9
Note about needing explicit synchronization if you want to use the returned items map and its cache at the same time
2013-08-08 15:10:54 -04:00
Patrick Mylund Nielsen
e91e36d111
ItemCount() is equivalent to len(c.Items()), not len(c.Items)
2013-08-08 14:54:03 -04:00
Patrick Mylund Nielsen
fd89281dfd
s/field/fields/
2013-08-08 14:53:24 -04:00
Patrick Mylund Nielsen
f8cc27acbc
Export Item wrapping type, and add an Items() method to cache
2013-08-08 14:53:02 -04:00
Patrick Mylund Nielsen
baa5a64da4
Revert 3986bff
for now
2013-06-30 22:05:40 -04:00
Patrick Mylund Nielsen
3986bff69b
Don't keep the read lock after traversing the items map (before saving to the io.Writer) in Save
2013-06-30 20:20:38 -04:00
Patrick Mylund Nielsen
5388b25b3b
Use an RWMutex instead of a Mutex, making Get a read operation only (this slightly changes the eviction behavior: lookup doesn't completely expunge an expired item, but the janitor still will at the next cleanup.) Also, use the same RWMutex in Load and Save (thanks, Alan Shreve)
2013-06-30 20:11:57 -04:00
Patrick Mylund Nielsen
c9f5754801
Add O(1) ItemCount method to retrieve items currently in the cache map (whether expired and not cleaned up or not)
2013-04-18 14:32:01 -04:00
Patrick Mylund Nielsen
d5d03c28d4
Add specialized increment and decrement methods
2013-04-18 14:24:30 -04:00
Sergey Shepelev
a768a84319
Save/LoadFile must close file
2012-09-19 03:25:42 +04:00
Patrick Mylund Nielsen
b3a957a46c
Handle float64 and int64 Increment/Decrement separately, and don't use Increment(-n) in Decrement to support uints
2012-08-17 13:39:02 +02:00
Patrick Mylund Nielsen
9cc10f6f2f
Use a type switch instead, and Use unexported NewSharded in test
2012-08-17 11:35:20 +02:00
Patrick Mylund Nielsen
13225a8ae4
Unexport the shardedcache interface and implementation until both the API and implementation are solid
2012-08-17 11:32:24 +02:00
Patrick Mylund Nielsen
15cda21ff4
Add an interface, embed the mutex, and unexport some unnecessarily exported fields
2012-07-04 19:34:37 +01:00
Patrick Mylund Nielsen
bf97a87cc7
Cleaner bucket selection
2012-06-22 09:33:27 +01:00
Patrick Mylund Nielsen
52c269d8ae
Testing a sharded cache. Could be useful for massively parallel applications
2012-06-22 09:24:09 +01:00
Patrick Mylund Nielsen
0a962bf9eb
Keep the same tense in docstrings, and remove a little ambiguity
2012-06-22 04:24:48 +01:00
Patrick Mylund Nielsen
8f6294df58
Remove unused Version const
2012-06-22 04:10:33 +01:00
Patrick Mylund Nielsen
026efae39f
Stay below 80 chars in width
2012-06-22 03:56:12 +01:00
Patrick Mylund Nielsen
724bd0e963
Move comment explaining the manual mutex unlocking down to the first place where we actually do it
2012-06-22 03:51:34 +01:00
Patrick Mylund Nielsen
aa7f52c169
Be clearer about the defaults, <80 width for the janitor comment, and remove 'default cleanup interval' -- there can be only one
2012-06-22 03:50:10 +01:00
Patrick Mylund Nielsen
8495026156
c can be collected. It isn't necessarily (right after)
2012-06-22 03:44:04 +01:00
Patrick Mylund Nielsen
74f0b20353
Don't fmt.Println warning if gob.Register fails--just return an err
2012-02-23 04:16:42 +01:00
Patrick Mylund Nielsen
8805e79189
Properly handle Gob panic
2012-02-19 01:21:07 +01:00
Patrick Mylund Nielsen
91bd4334f1
Don't use defer for mutex unlocking (it currently adds ~200ns)
2012-02-17 01:40:55 +01:00
Patrick Mylund Nielsen
13b338b204
Modify error on Gob panic
2012-02-17 00:22:46 +01:00
Patrick Mylund Nielsen
dfeb3cfa2b
No reason to use *sync.Mutex
2012-02-17 00:20:20 +01:00
Patrick Mylund Nielsen
ef0ef15586
Newline after the error message, or url gets concatenated with the stack trace
2012-02-12 01:42:57 +01:00
Patrick Mylund Nielsen
bbb477e5bd
Version 1.0
...
Added Version constant
2012-01-29 04:45:45 +01:00
Patrick Mylund Nielsen
106d5795c8
Remind me why the README needed to be in cache.go
2012-01-29 03:47:21 +01:00
Patrick Mylund Nielsen
c2c31db092
Ditto for source file
2012-01-29 03:46:29 +01:00
Patrick Mylund Nielsen
8598a0c29a
Touch-ups
2012-01-29 03:34:14 +01:00