v1.5.2 (2021-07-28)
- pass a context to the
cache.NewCacheWithGC()method directly.
v1.5.1 (2020-12-02)
- improve benchmarks:
- remove data races from additional concurrent loading;
- implementation of an in-memory cache:
- add explanatory comments;
- describe for releases:
- features;
- change log.
v1.5 (2020-11-07)
- implementation of an in-memory cache:
- operations:
- running garbage collection at the same time as initializing a cache (optional);
- iteration over values and their keys:
- support stopping of iteration:
- via a handling result;
- via a context;
- support stopping of iteration:
- iteration over values and their keys with deletion of expired values:
- support stopping of iteration:
- via a handling result;
- via a context;
- support stopping of iteration:
- options (with running garbage collection; optional):
- context for stopping of iteration;
- implementation of a key-value storage;
- callback for timing;
- callback that produces an instance of an implementation of garbage collection;
- period of running of garbage collection;
- operations:
- refactoring:
- use the
hashmap.WithInterruption()function; - extract the
modelspackage:- move the
cache.Clocktype into it; - move the
cache.Valuestructure into it;
- move the
- use the
- add the example with running garbage collection at the same time as initializing a cache.
- implementation of an in-memory cache:
- operations:
- running garbage collection at the same time as initializing a cache (optional);
- getting a value by a key:
- signaling a reason for the absence of a key - missed or expired;
- getting a value by a key with deletion of expired values:
- signaling a reason for the absence of a key - missed or expired;
- iteration over values and their keys:
- support stopping of iteration:
- via a handling result;
- via a context;
- support stopping of iteration:
- iteration over values and their keys with deletion of expired values:
- support stopping of iteration:
- via a handling result;
- via a context;
- support stopping of iteration:
- setting a key-value pair with a specified time to live:
- support of key-value pairs without a set time to live (persistent);
- deletion;
- options (optional):
- without running garbage collection:
- implementation of a key-value storage;
- callback for timing;
- with running garbage collection:
- context for stopping of iteration;
- implementation of a key-value storage;
- callback for timing;
- callback that produces an instance of an implementation of garbage collection;
- period of running of garbage collection;
- without running garbage collection:
- operations:
- implementation of garbage collection:
- independent implementation of garbage collection running:
- support interruption via a context;
- support specification of a running period;
- implementation of total garbage collection (based on a full scan):
- options (optional):
- callback for timing;
- options (optional):
- implementation of partial garbage collection (based on expiration in Redis):
- options (optional):
- callback for timing;
- maximum iteration count;
- minimum percent of expired values.
- options (optional):
- independent implementation of garbage collection running:
v1.4 (2020-10-20)
- implementation of an in-memory cache:
- options (optional):
- implementation of a key-value storage;
- callback for timing;
- options (optional):
- implementation of garbage collection:
- implementation of total garbage collection (based on a full scan):
- options (optional):
- callback for timing;
- options (optional):
- implementation of partial garbage collection (based on expiration in Redis):
- options (optional):
- callback for timing;
- maximum iteration count;
- minimum percent of expired values;
- options (optional):
- implementation of total garbage collection (based on a full scan):
- refactoring:
- update the
github.com/thewizardplusplus/go-hashmappackage; - use the
hashmap.Storageinterface;
- update the
- misc.:
- improve the Travis CI configuration.
- implementation of an in-memory cache:
- operations:
- getting a value by a key:
- signaling a reason for the absence of a key - missed or expired;
- getting a value by a key with deletion of expired values:
- signaling a reason for the absence of a key - missed or expired;
- setting a key-value pair with a specified time to live:
- support of key-value pairs without a set time to live (persistent);
- deletion;
- getting a value by a key:
- options (optional):
- implementation of a key-value storage;
- callback for timing;
- operations:
- implementation of garbage collection:
- independent implementation of garbage collection running:
- support interruption via a context;
- support specification of a running period;
- implementation of total garbage collection (based on a full scan):
- options (optional):
- callback for timing;
- options (optional):
- implementation of partial garbage collection (based on expiration in Redis):
- options (optional):
- callback for timing;
- maximum iteration count;
- minimum percent of expired values.
- options (optional):
- independent implementation of garbage collection running:
v1.3 (2019-08-15)
- implementation of garbage collection:
- improve support of interruption via a context:
- pass a context to the
gc.GC.Clean()method; - additional interruption via a context:
- in the
gc.TotalGC.Clean()method; - in the
gc.PartialGC.Clean()method;
- in the
- pass a context to the
- improve support of interruption via a context:
- improve benchmarks:
- add to benchmarks:
- different storage sizes;
- different expired percents;
- stop at the end of each benchmark:
- garbage collecting;
- additional concurrent loading;
- slow down additional concurrent loading;
- add to benchmarks:
- refactoring:
- extract from the
gc.TotalGC.Clean()method:- the
gc.TotalGC.handleIteration()method;
- the
- extract from the
gc.PartialGC.Clean()method:- the
gc.counterstructure; - the
gc.iteratorstructure.
- the
- extract from the
v1.2 (2019-07-09)
- implementation of garbage collection:
- independent implementation of garbage collection running;
- implementation of partial garbage collection (based on expiration in Redis).
- implementation of an in-memory cache:
- operations:
- getting a value by a key:
- signaling a reason for the absence of a key - missed or expired;
- getting a value by a key with deletion of expired values:
- signaling a reason for the absence of a key - missed or expired;
- setting a key-value pair with a specified time to live:
- support of key-value pairs without a set time to live (persistent);
- deletion;
- getting a value by a key:
- operations:
- implementation of garbage collection:
- independent implementation of garbage collection running:
- support interruption via a context;
- support specification of a running period;
- implementation of total garbage collection (based on a full scan);
- implementation of partial garbage collection (based on expiration in Redis).
- independent implementation of garbage collection running:
v1.1 (2019-07-08)
- implementation of an in-memory cache:
- make public the expired value model;
- implementation of garbage collection:
- implementation of total garbage collection (based on a full scan):
- support interruption via a context;
- support specification of a running period.
- implementation of total garbage collection (based on a full scan):
- implementation of an in-memory cache:
- operations:
- getting a value by a key:
- signaling a reason for the absence of a key - missed or expired;
- getting a value by a key with deletion of expired values:
- signaling a reason for the absence of a key - missed or expired;
- setting a key-value pair with a specified time to live:
- support of key-value pairs without a set time to live (persistent);
- deletion;
- getting a value by a key:
- operations:
- implementation of garbage collection:
- implementation of total garbage collection (based on a full scan):
- support interruption via a context;
- support specification of a running period.
- implementation of total garbage collection (based on a full scan):
v1.0 (2019-07-05)
- implementation of an in-memory cache:
- operations:
- getting a value by a key:
- signaling a reason for the absence of a key - missed or expired;
- getting a value by a key with deletion of expired values:
- signaling a reason for the absence of a key - missed or expired;
- setting a key-value pair with a specified time to live:
- support of key-value pairs without a set time to live (persistent);
- deletion.
- getting a value by a key:
- operations: