Vivian Mathews
0640633ccc
Fix race condition
...
- the gc finalize for an object races with the janitor.Run goroutine
- because the janitor.stop channel is created in the Run() goroutine this leads
to a data race.
- fix by creating the channel when the janitor is created
7 years ago
Alex Edwards
8c11fe2df0
Add GetWithExpiration
8 years ago
Patrick Mylund Nielsen
e7a9def80f
Add SetDefault() for setting with the default expiration
8 years ago
Patrick Mylund Nielsen
9e6d9117e7
Add 'inlining of expired' note to Items()
8 years ago
Patrick Mylund Nielsen
a2d8b56f0c
Make Items() return a copy rather than an unsynchronized reference to the underlying items map
8 years ago
Patrick Mylund Nielsen
5849ccb308
remove mu.RUnlock call from get
9 years ago
Patrick Mylund Nielsen
d461c5d2dd
'Inline' set in Set, and do time checks before the lock
9 years ago
Patrick Mylund Nielsen
76f1250a65
Make OnEvicted() a little faster
9 years ago
Patrick Mylund Nielsen
afadf13f9f
Back to UnixNano(), syscall dependency isn't worth a few nanoseconds better performance
9 years ago
Patrick Mylund Nielsen
2f0c74ebb8
Use intermediary timevals
9 years ago
Patrick Mylund Nielsen
01842a547c
Use timevals
9 years ago
Patrick Mylund Nielsen
1924ec3baf
Remove expired() since it's no longer used (because of the inlining)
9 years ago
Patrick Mylund Nielsen
8084bd02b5
Inline expiration checks manually for performance
9 years ago
Patrick Mylund Nielsen
eb4f9f6b2f
Use UnixNano int64s instead of Time
9 years ago
Patrick Mylund Nielsen
31c7be0bed
'Inline' Get and Expired
9 years ago
Patrick Mylund Nielsen
4e0d34ef00
Only get the current time once in the DeleteExpired loop
9 years ago
Patrick Mylund Nielsen
901b2413ee
Improve cache locality by removing Item-related pointers
9 years ago
Patrick Mylund Nielsen
ac0fcef49b
Clarify that the OnEvicted function isn't called when an item is overwritten
9 years ago
Patrick Mylund Nielsen
3f2c810ea1
Add OnEvicted()
9 years ago
Patrick Mylund Nielsen
a0136a8980
Don't expose the cache mutex
9 years ago
Fabian Ruff
fe045e4040
Fix leaking the janitor ticker when shutting down
9 years ago
Patrick Mylund Nielsen
8a2f4f19ef
go fmt
10 years ago
Patrick Mylund Nielsen
e3a846e1f9
Clarify what NoExpiration and DefaultExpiration are
10 years ago
Patrick Mylund Nielsen
a1dd6b7fff
s/NewFrom/NewFrom()/ in NewFrom doc
10 years ago
Patrick Mylund Nielsen
9ea75a8586
s/NewFrom/NewFrom()/ in Load/LoadFile/Save/SaveFile docs
10 years ago
Patrick Mylund Nielsen
873e78f0db
s/gob.Register/gob.Register()/ in NewFrom doc
10 years ago
Patrick Mylund Nielsen
bc36de7dec
Clarify NewFrom documentation on use cases
10 years ago
Patrick Mylund Nielsen
d68800e607
s/with the same caveats/subject to the same caveat/ in NewFrom doc
10 years ago
Patrick Mylund Nielsen
887753fa90
Refer to DeleteExpired as c.DeleteExpired()
10 years ago
Patrick Mylund Nielsen
888f396121
Update NewFrom doc to be consistent with New
10 years ago
Patrick Mylund Nielsen
46827c6a61
Add NoExpiration and DefaultExpiration constants and use them (thanks to Jason Mooberry)
10 years ago
Patrick Mylund Nielsen
73a30b2033
Add NewFrom, and deprecate Save, SaveFile, Load, and LoadFile
10 years ago
Patrick Mylund Nielsen
ffd0b9e3ec
Move the unexportedShardedCache to sharded.go
10 years ago
Patrick Mylund Nielsen
6ea7e6fb42
Remove the pointless unexportedInterface
10 years ago
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
11 years ago
Patrick Mylund Nielsen
e91e36d111
ItemCount() is equivalent to len(c.Items()), not len(c.Items)
11 years ago
Patrick Mylund Nielsen
fd89281dfd
s/field/fields/
11 years ago
Patrick Mylund Nielsen
f8cc27acbc
Export Item wrapping type, and add an Items() method to cache
11 years ago
Patrick Mylund Nielsen
baa5a64da4
Revert 3986bff
for now
12 years ago
Patrick Mylund Nielsen
3986bff69b
Don't keep the read lock after traversing the items map (before saving to the io.Writer) in Save
12 years ago
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)
12 years ago
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)
12 years ago
Patrick Mylund Nielsen
d5d03c28d4
Add specialized increment and decrement methods
12 years ago
Sergey Shepelev
a768a84319
Save/LoadFile must close file
12 years ago
Patrick Mylund Nielsen
b3a957a46c
Handle float64 and int64 Increment/Decrement separately, and don't use Increment(-n) in Decrement to support uints
12 years ago
Patrick Mylund Nielsen
9cc10f6f2f
Use a type switch instead, and Use unexported NewSharded in test
12 years ago
Patrick Mylund Nielsen
13225a8ae4
Unexport the shardedcache interface and implementation until both the API and implementation are solid
12 years ago
Patrick Mylund Nielsen
15cda21ff4
Add an interface, embed the mutex, and unexport some unnecessarily exported fields
13 years ago
Patrick Mylund Nielsen
bf97a87cc7
Cleaner bucket selection
13 years ago
Patrick Mylund Nielsen
52c269d8ae
Testing a sharded cache. Could be useful for massively parallel applications
13 years ago