1
0
Commit Graph

117 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
03284ca422 Replace sharded hash function/misc mods 2014-12-22 10:37:59 -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
32dd451b6d README.md: Be consistent with NewFrom() 2014-12-22 01:59:29 -05:00
Patrick Mylund Nielsen
238c0209c0 New markdown README (thanks Jason Mooberry) 2014-12-22 01:55:57 -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
23b49bf74d LICENSE: Remove sneaky space character 2014-12-22 00:01:09 -05:00
Patrick Mylund Nielsen
61ce35d44e LICENSE: Update copyright to 2012-2014 2014-12-21 23:56:20 -05:00
Patrick Mylund Nielsen
8c0eccfc44 CONTRIBUTORS: Add Jason Mooberry 2014-12-21 23:51: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
3ff6a5407e Reference 'go doc' in the README 2013-08-08 15:02:23 -04:00
Patrick Mylund Nielsen
c383ebd2ba Remove go doc-style reference from README since go doc now shows public methods from (private) embedded structs 2013-08-08 15:01:48 -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
2fb27e8369 Change the names of the MutexMap benchmarks to RWMutex to clarify the changes to the map benchmarks and the cache itself 2013-06-30 20:40:26 -04:00
Patrick Mylund Nielsen
155ab21e5d Use an RWMutex in the cache-equivalent map tests now that the cache uses one 2013-06-30 20:31:46 -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
1fc39f1402 Add ItemCount method description to README reference 2013-04-18 15:26:16 -04:00
Patrick Mylund Nielsen
1140511315 Condense the reference in the README by removing the duplicate descriptions and providing one general one for all of them 2013-04-18 15:24:40 -04:00
Patrick Mylund Nielsen
739fb494dc Update LICENSE file to 2012-2013 2013-04-18 14:35:10 -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
Patrick Mylund Nielsen
b5601e904d Clarify licensing on contributed code 2012-10-08 12:34:42 +02:00
Patrick Mylund Nielsen
525c0ccc26 Add CONTRIBUTORS file and 'and the go-cache contributors' bit to the copyright line in LICENSE 2012-10-08 12:31:23 +02:00
Patrick Mylund Nielsen
e30c8eff7a Merge pull request #4 from temoto/patch-1
Attempt to close the file in SaveFile/LoadFile, and return either the serialization error, or the Close() error.
2012-10-08 03:27:04 -07:00
Sergey Shepelev
a768a84319 Save/LoadFile must close file 2012-09-19 03:25:42 +04:00
Patrick Mylund Nielsen
72916cf4df Update README to reflect API change: IncrementFloat now only works on float32 and float64, and the use of Decrement should be encouraged over Increment (with a negative number) since Increment converting a negative signed integer to an unsigned integer probably isn't the intended behavior 2012-08-17 13:48:55 +02: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
0f0584a805 Fix BenchmarkCacheSetDeleteSingleLock 'cheating' by unintentionally only locking once in the whole benchmark, rather than once per set and delete 2012-06-22 06:52:32 +01:00