1
0
Commit Graph

70 Commits

Author SHA1 Message Date
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
Patrick Mylund Nielsen
0ff0a883b5 Notes on cache serialization 2012-01-29 03:27:01 +01:00
Patrick Mylund Nielsen
98c2ce9eb4 Cache serialization 2012-01-29 03:16:59 +01:00