Diogo Franco (Kovensky)
abe7c4fb56
Do not register types with encoding/gob
...
Registering the same type multiple times can lead to a panic. While the
panic is handled in Save, the handling prevents saving the cache.
While doing this seems like a good idea (since then the caller wouldn't
have to register the types themselves), the need to deal with duplicate
entries causes issues with Load. If calling Load to initialize a cache
right after startup, encoding/gob will have no information about the
types written in the cache, and thus won't be able to load the cache.
There are also issues w.r.t. how the type is registered in gob, and
if they are registered in a different form inside go-cache than they
were outside, a panic happens due to different paths being generated:
https://github.com/golang/go/blob/master/src/encoding/gob/type.go#L857
Make sure that it's the caller's respansibility to register types with
encoding/gob, to avoid issues with gob's Register and so that they can
both Save and Load without having to Save beforehand in the same instance.
2014-12-11 17:41:46 +09: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
Patrick Mylund Nielsen
d05b5eb27a
Fixed widths in top section of cache.go
2012-01-15 12:16:10 -06:00
Patrick Mylund Nielsen
ac1a1aeef9
Increment should return an error if the targeted item has expired
2012-01-04 11:37:02 +01:00
Patrick Mylund Nielsen
3a434fd350
Add import statement to examples
2012-01-04 10:08:41 +01:00
Patrick Mylund Nielsen
9e6775b151
Back to weekly
2012-01-04 09:11:27 +01:00
Patrick Mylund Nielsen
62a061f1f4
Add/Replace atomicity for r60.3
2012-01-04 09:09:39 +01:00
Patrick Mylund Nielsen
e6e2a3d192
Complete atomicity for Add and Replace
2012-01-04 08:54:01 +01:00
Patrick Mylund Nielsen
88b75b4791
Unclear about type assertion in pointer example
2012-01-04 08:30:26 +01:00
Patrick Mylund Nielsen
c6060554ee
Back to following weekly
2012-01-04 08:07:50 +01:00
Patrick Mylund Nielsen
1f826dd9de
Compatability with 60.3
2012-01-04 07:54:23 +01:00
Patrick Mylund Nielsen
9fbe1a4edd
Library reference in README
2012-01-03 12:03:43 +01:00
Patrick Mylund Nielsen
c84223dab4
Typo
2012-01-02 17:26:17 +01:00
Patrick Mylund Nielsen
8f430150d6
Expires bool is redundant with pointer to Time
2012-01-02 17:13:29 +01:00
Patrick Mylund Nielsen
99360acb31
V should be Item
2012-01-02 14:44:50 +01:00
Patrick Mylund Nielsen
741c94726a
Added README
2012-01-02 14:13:36 +01:00
Patrick Mylund Nielsen
ca7e0d4f78
gofmt and redundant 'if it was enabled'
2012-01-02 14:11:17 +01:00