Patrick Mylund Nielsen
f73e2280ec
Ensure onEvicted is run after DeleteLRUAmount, and don't allocate evicted items array if no onEvicted function is registered
2017-04-19 10:26:35 -04:00
Patrick Mylund Nielsen
78ff45eea0
Don't return a pointer in Item.LastAccessed()
2017-04-19 10:14:55 -04:00
Patrick Mylund Nielsen
c63dcbab96
Avoid more time.Now() calls
2017-04-18 22:45:37 -04:00
Patrick Mylund Nielsen
795debb4ed
Merge latest master (GetWithExpiration) with LRU
2017-04-18 20:01:30 -04:00
Patrick Mylund Nielsen
fdfec335d5
Various updates to LRU functionality
2017-04-18 19:47:15 -04:00
M
d8d9d6491e
Various fixes for upstream acceptance, and formatting
...
Removes the ctime tracking and access. Reverts NewFrom() changes from
upstream, and adds NewFromWithLRU() in place of it.
2017-04-18 12:40:40 -04:00
Alex Edwards
8c11fe2df0
Add GetWithExpiration
2016-12-08 14:50:49 +01:00
Patrick Mylund Nielsen
e7a9def80f
Add SetDefault() for setting with the default expiration
2016-11-25 18:48:19 -05:00
Patrick Mylund Nielsen
9e6d9117e7
Add 'inlining of expired' note to Items()
2016-11-25 13:57:39 -05:00
Patrick Mylund Nielsen
a2d8b56f0c
Make Items() return a copy rather than an unsynchronized reference to the underlying items map
2016-11-25 13:56:11 -05:00
Patrick Mylund Nielsen
5849ccb308
remove mu.RUnlock call from get
2016-01-08 15:02:42 -05:00
Patrick Mylund Nielsen
d461c5d2dd
'Inline' set in Set, and do time checks before the lock
2015-12-01 11:08:43 -05:00
Patrick Mylund Nielsen
76f1250a65
Make OnEvicted() a little faster
2015-11-30 16:18:49 -05:00
Patrick Mylund Nielsen
afadf13f9f
Back to UnixNano(), syscall dependency isn't worth a few nanoseconds better performance
2015-11-30 15:12:19 -05:00
Patrick Mylund Nielsen
2f0c74ebb8
Use intermediary timevals
2015-11-30 15:02:02 -05:00
Patrick Mylund Nielsen
01842a547c
Use timevals
2015-11-30 14:47:22 -05:00
Patrick Mylund Nielsen
1924ec3baf
Remove expired() since it's no longer used (because of the inlining)
2015-11-30 14:14:52 -05:00
Patrick Mylund Nielsen
8084bd02b5
Inline expiration checks manually for performance
2015-11-30 14:12:45 -05:00
Patrick Mylund Nielsen
eb4f9f6b2f
Use UnixNano int64s instead of Time
2015-11-30 13:54:01 -05:00
Patrick Mylund Nielsen
31c7be0bed
'Inline' Get and Expired
2015-11-30 13:50:17 -05:00
Patrick Mylund Nielsen
4e0d34ef00
Only get the current time once in the DeleteExpired loop
2015-11-30 13:39:27 -05:00
Patrick Mylund Nielsen
901b2413ee
Improve cache locality by removing Item-related pointers
2015-11-28 14:47:46 -05:00
Patrick Mylund Nielsen
ac0fcef49b
Clarify that the OnEvicted function isn't called when an item is overwritten
2015-11-28 12:27:08 -05:00
Patrick Mylund Nielsen
3f2c810ea1
Add OnEvicted()
2015-11-27 22:00:08 -05:00
Patrick Mylund Nielsen
a0136a8980
Don't expose the cache mutex
2015-11-27 13:03:24 -05:00
Fabian Ruff
fe045e4040
Fix leaking the janitor ticker when shutting down
2015-10-13 12:55:54 +02:00
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