github.com/philippgille/gokv
v0.7.0
#2061 most downloaded on Go modules
philippgille/gokv
What this package is like to depend on
Last release 1 years ago
29 Jun 2025
Release timing varies
gaps range from 2 weeks to 2.3 years
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
50 releases · first in 2018
0 releases in the last 12 months
see the full history below
Release timeline
50 releases · Oct 2018 to Jun 2025Releases
latest 50-
v0.7.1-0.20250629173028-c96b6b6bc37329 Jun 2025 pre-releaseNothing published for this version
-
v0.7.1-0.20250627195511-62058bc225ad27 Jun 2025 pre-releaseNothing published for this version
-
v0.7.1-0.20250627113229-1d71df2f2a1d27 Jun 2025 pre-releaseNothing published for this version
-
v0.7.1-0.20250627094632-24142fe2ecd227 Jun 2025 pre-releaseNothing published for this version
-
v0.7.1-0.20240602190052-c954c5435f3502 Jun 2024 pre-releaseNothing published for this version
-
v0.7.1-0.20240128200346-0a05f2ed73e828 Jan 2024 pre-releaseNothing published for this version
-
v0.7.028 Jan 2024Release notes
Open source →Note that while we'll tag this with v0.7.0,
that's only for the gokv root module - not
for the other modules, which come later.
Check tag 'release/v0.7.0' for the commit
where the entire repo is at v0.7.0.Release notes
Open source →After a very long time since the last release (v0.6.0) we're finally releasing v0.7.0! There's a new store implementation (
noop), a new codec (protobuf) and various improvements, updates and fixes in the store implementations. We moved from Travis CI to GitHub Actions, introduced the use of Mage (a Makefile alternative in Go) and improved the test automation and CI process in general.This would not have been possible without the help of the new and existing contributors - thank you so much! I'm also thankful for the people who asked me about the project maintenance/activity after it has been dormant for a while, or pushed for a new release. Knowing that people make use of, like and care about the project means a lot!
Note: For now we're doing one centralized release across the repository, while also tagging all separate modules individually as required by Go modules. In the future we might update and release the modules more independently.
Note 2: Tag
v0.7.0points to v0.7.0 of the rootgokvmodule, but the other modules in this repo are then updated and thus tagged separately (as required for Go modules). Check tagrelease/v0.7.0for the commit at which the entire repo represents v0.7.0. See docs/releasing.md for details.Added
- New codec:
proto(for protocol buffers) (PR #127 by @glimchb) - New store implementation:
noop(PR #126 by @peczenyj) - Optional timeout configuration for
datastorestore implementation (PR #133 by @glimchb) - Optional timeout configuration for
redisstore implementation (PR #130 by @glimchb)
Improved
Library:
- Updated dependencies of all modules within the same major version (PR #108 + #145 + #166)
- So except for a few required major version updates, all dependencies are now up-to-date as of 2024-01-07
- Major update of
BigCachedependency dyanamodbtests are now independent of any AWS config/credential file (PR #108)- Updated
Hazelcastdependency to v1.3.0 (PR #112 by @yuce) - Updated
redisdependency from v6.15.9 to v9.2.1 (PR #130 by @glimchb) - Use
anyinstead ofinterface{}(PR #150) - Block on etcd connection fail (PR #163)
- Various security updates by @dependabot
- Switch of used
MongoDBdependency, from unmaintainedgithub.com/globalsign/mgoto officialgo.mongodb.org/mongo-driver(PR #165)
Tests / CI:
- Test script (
build/test.sh) now starts all required services instead of relying on Travis CI for some (PR #108) - Dependency update scripts (
build/update-deps.sh/build/update-deps.ps1) were changed to only update direct dependencies (PR #108) - Migrated CI from Travis CI to GitHub Actions (PR #110)
- Migrated from Bash and PowerShell build/test scripts to Mage (PR #111)
- With this comes also the improvement that individual modules can now be tested. Like
mage test redis. For testing all modules there'smage test all.
- With this comes also the improvement that individual modules can now be tested. Like
- Added more Go versions in CI test matrix (PR #134 by @glimchb)
- Use GitHub action for Mage (PR #135 by @glimchb)
- Added Windows to CI build matrix (PR #139 by @glimchb)
- Updated Mage from 1.13 to 1.15 (PR #148)
- Better error handling in Magefile (PR #151)
- Added Docker health check to test containers (PR #142 by @glimchb)
- Use the Docker health checks to reduce wait time for containers in CI (PR #154)
- Update and improve usage of GitHub Actions dependencies (PR #156)
- Prefix test container names with gokv (PR #161)
- Reduce test container wait time (PR #162)
- Add Docker health checks to Consul and Memcached (PR #168)
- Skip etcd concurrency test in CI (PR #172)
- Remove test skipping on connection failure from almost all store implementations (PR #173)
- Add
Replacetarget in Magefile (PR #174)
Fixes
- Fixed
gomapdata race (PR #90 by @tdakkota)- Includes a regression test covering most (if not all) storage-specific implementations 👍
- Fixed double CI builds when maintainer pushed a commit to an open PR (PR #143)
- Fix concurrency tests (PR #176)
Breaking changes
redisstore now has a default timeout of 2 seconds (previously no timeout). You can customize/remove the timeout via the store's config. (PR #130 by @glimchb)datastorestore: Update of direct dependencies lead to indirect dependency update ofgoogle.golang.org/grpcfromv1.46.0tov1.59.0, which is incompatible with Go 1.18 dueatomic.Int64being used, which was introduced in Go 1.19.- The
interface{}toanychange makesgokvincompatible with Go version 1.17 and older. Please open an issue if you're stuck on an old Go version and would like us to revert this change. - The switch of the used MongoDB library from an unmaintained 3rd party library to the official one might make it incompatible with old MongoDB servers, or with data that was inserted with a previous version of gokv. This is just a warning - it's not confirmed. (PR #165
New Contributors
Release notes
Open source →Note: For now we're doing one centralized release across the repository, while also tagging all separate modules individually as required by Go modules. In the future we might update and release the modules more independently.
Note 2: Tag
v0.7.0points to v0.7.0 of the rootgokvmodule, but the other modules in this repo are then updated and thus tagged separately (as required for Go modules). Check tagrelease/v0.7.0for the commit at which the entire repo represents v0.7.0. See docs/releasing.md for details.Added
- New codec:
proto(for protocol buffers) (PR #127 by @glimchb) - New store implementation:
noop(PR #126 by @peczenyj) - Optional timeout configuration for
datastorestore implementation (PR #133 by @glimchb) - Optional timeout configuration for
redisstore implementation (PR #130 by @glimchb)
Improved
Library:
- Updated dependencies of all modules within the same major version (PR #108 + #145 + #166)
- So except for a few required major version updates, all dependencies are now up-to-date as of 2024-01-07
- Major update of
BigCachedependency dyanamodbtests are now independent of any AWS config/credential file (PR #108)- Updated
Hazelcastdependency to v1.3.0 (PR #112 by @yuce) - Updated
redisdependency from v6.15.9 to v9.2.1 (PR #130 by @glimchb) - Use
anyinstead ofinterface{}(PR #150) - Block on etcd connection fail (PR #163)
- Various security updates by @dependabot
- Switch of used
MongoDBdependency, from unmaintainedgithub.com/globalsign/mgoto officialgo.mongodb.org/mongo-driver(PR #165)
Tests / CI:
- Test script (
build/test.sh) now starts all required services instead of relying on Travis CI for some (PR #108) - Dependency update scripts (
build/update-deps.sh/build/update-deps.ps1) were changed to only update direct dependencies (PR #108) - Migrated CI from Travis CI to GitHub Actions (PR #110)
- Migrated from Bash and PowerShell build/test scripts to Mage (PR #111)
- With this comes also the improvement that individual modules can now be tested. Like
mage test redis. For testing all modules there'smage test all.
- With this comes also the improvement that individual modules can now be tested. Like
- Added more Go versions in CI test matrix (PR #134 by @glimchb)
- Use GitHub action for Mage (PR #135 by @glimchb)
- Added Windows to CI build matrix (PR #139 by @glimchb)
- Updated Mage from 1.13 to 1.15 (PR #148)
- Better error handling in Magefile (PR #151)
- Added Docker health check to test containers (PR #142 by @glimchb)
- Use the Docker health checks to reduce wait time for containers in CI (PR #154)
- Update and improve usage of GitHub Actions dependencies (PR #156)
- Prefix test container names with gokv (PR #161)
- Reduce test container wait time (PR #162)
- Add Docker health checks to Consul and Memcached (PR #168)
- Skip etcd concurrency test in CI (PR #172)
- Remove test skipping on connection failure from almost all store implementations (PR #173)
- Add
Replacetarget in Magefile (PR #174)
Fixes
- Fixed
gomapdata race (PR #90 by @tdakkota)- Includes a regression test covering most (if not all) storage-specific implementations 👍
- Fixed double CI builds when maintainer pushed a commit to an open PR (PR #143)
- Fix concurrency tests (PR #176)
Breaking changes
redisstore now has a default timeout of 2 seconds (previously no timeout). You can customize/remove the timeout via the store's config. (PR #130 by @glimchb)datastorestore: Update of direct dependencies lead to indirect dependency update ofgoogle.golang.org/grpcfromv1.46.0tov1.59.0, which is incompatible with Go 1.18 dueatomic.Int64being used, which was introduced in Go 1.19.- The
interface{}toanychange makesgokvincompatible with Go version 1.17 and older. Please open an issue if you're stuck on an old Go version and would like us to revert this change. - The switch of the used MongoDB library from an unmaintained 3rd party library to the official one might make it incompatible with old MongoDB servers, or with data that was inserted with a previous version of gokv. This is just a warning - it's not confirmed. (PR #165
New Contributors
Release notes
Open source →Note: Tag
v0.7.0points to v0.7.0 of the rootgokvmodule, but the other modules in this repo are then updated and thus tagged separately (as required for Go modules). Check tagrelease/v0.7.0for the commit at which the entire repo represents v0.7.0. See docs/releasing.md for details.Added
- New codec:
proto(for protocol buffers) (PR #127 by @glimchb) - New store implementation:
noop(PR #126 by @peczenyj) - Optional timeout configuration for
datastorestore implementation (PR #133 by @glimchb) - Optional timeout configuration for
redisstore implementation (PR #130 by @glimchb)
Improved
Library:
- Updated dependencies of all modules within the same major version (PR #108 + #145 + #166)
- So except for a few required major version updates, all dependencies are now up-to-date as of 2024-01-07
- Major update of
BigCachedependency dyanamodbtests are now independent of any AWS config/credential file (PR #108)- Updated
Hazelcastdependency to v1.3.0 (PR #112 by @juze) - Updated
redisdependency from v6.15.9 to v9.2.1 (PR #130 by @glimchb) - Use
anyinstead ofinterface{}(PR #150) - Block on etcd connection fail (PR #163)
- Various security updates by @dependabot
- Switch of used
MongoDBdependency, from unmaintainedgithub.com/globalsign/mgoto officialgo.mongodb.org/mongo-driver(PR #165)
Tests / CI:
- Test script (
build/test.sh) now starts all required services instead of relying on Travis CI for some (PR #108) - Dependency update scripts (
build/update-deps.sh/build/update-deps.ps1) were changed to only update direct dependencies (PR #108) - Migrated CI from Travis CI to GitHub Actions (PR #110)
- Migrated from Bash and PowerShell build/test scripts to Mage (PR #111)
- With this comes also the improvement that individual modules can now be tested. Like
mage test redis. For testing all modules there'smage test all.
- With this comes also the improvement that individual modules can now be tested. Like
- Added more Go versions in CI test matrix (PR #134 by @glimchb)
- Use GitHub action for Mage (PR #135 by @glimchb)
- Added Windows to CI build matrix (PR #139 by @glimchb)
- Updated Mage from 1.13 to 1.15 (PR #148)
- Better error handling in Magefile (PR #151)
- Added Docker health check to test containers (PR #142 by @glimchb)
- Use the Docker health checks to reduce wait time for containers in CI (PR #154)
- Update and improve usage of GitHub Actions dependencies (PR #156)
- Prefix test container names with gokv (PR #161)
- Reduce test container wait time (PR #162)
- Add Docker health checks to Consul and Memcached (PR #168)
- Skip etcd concurrency test in CI (PR #172)
- Remove test skipping on connection failure from almost all store implementations (PR #173)
- Add
Replacetarget in Magefile (PR #174)
Fixes
- Fixed
gomapdata race (PR #90 by @tdakkota)- Includes a regression test covering most (if not all) storage-specific implementations 👍
- Fixed double CI builds when maintainer pushed a commit to an open PR (PR #143)
- Fix concurrency tests (PR #176)
Breaking changes
redisstore now has a default timeout of 2 seconds (previously no timeout). You can customize/remove the timeout via the store's config. (PR #130 by @glimchb)datastorestore: Update of direct dependencies lead to indirect dependency update ofgoogle.golang.org/grpcfromv1.46.0tov1.59.0, which is incompatible with Go 1.18 dueatomic.Int64being used, which was introduced in Go 1.19.- The
interface{}toanychange makesgokvincompatible with Go version 1.17 and older. Please open an issue if you're stuck on an old Go version and would like us to revert this change. - The switch of the used MongoDB library from an unmaintained 3rd party library to the official one might make it incompatible with old MongoDB servers, or with data that was inserted with a previous version of gokv. This is just a warning - it's not confirmed. (PR #165
- New codec:
-
v0.6.1-0.20240121200932-09cafca21ca621 Jan 2024 pre-releaseNothing published for this version
-
v0.6.1-0.20240107170123-128881dec54707 Jan 2024 pre-releaseNothing published for this version
-
v0.6.1-0.20240102184933-0e6beda452a502 Jan 2024 pre-releaseNothing published for this version
-
v0.6.1-0.20231205181559-be99209ab4a205 Dec 2023 pre-releaseNothing published for this version
-
v0.6.1-0.20231203182903-9ff6a17eeac103 Dec 2023 pre-releaseNothing published for this version
-
v0.6.1-0.20231104215801-087cefb6a46404 Nov 2023 pre-releaseNothing published for this version
-
v0.6.1-0.20220828183645-93d491e1a0c928 Aug 2022 pre-releaseNothing published for this version
-
v0.6.1-0.20220529135155-93b870d5bd6a29 May 2022 pre-releaseNothing published for this version
-
v0.6.1-0.20200129172358-d65f8ee35eb029 Jan 2020 pre-releaseNothing published for this version
-
v0.6.1-0.20191013192605-5037d2512e8f13 Oct 2019 pre-releaseNothing published for this version
-
v0.6.013 Oct 2019Release notes
Open source →- Added support for Go modules (issue #81)
- All
gokv.Storeimplementations are now separate Go modules
- All
- Added
gokv.Storeimplementations: - Fixed: Compile error in
badgerdbafter a breaking change in BadgerDB 1.6.0
- Added support for Go modules (issue #81)
-
v0.5.1-0.20191013171515-a4a3fa1d6c7113 Oct 2019 pre-releaseNothing published for this version
-
v0.5.1-0.20191011213304-eb77f15b9c6111 Oct 2019 pre-releaseNothing published for this version
-
v0.5.1-0.20191002230130-541339c3540202 Oct 2019 pre-releaseNothing published for this version
-
v0.5.1-0.20191001201555-5ac9a20de63401 Oct 2019 pre-releaseNothing published for this version
-
v0.5.1-0.20190929161952-f31a8dbcad2a29 Sep 2019 pre-releaseNothing published for this version
-
v0.5.1-0.20190929161440-07d380f5709c29 Sep 2019 pre-releaseNothing published for this version
-
v0.5.1-0.20190929160129-0d7f7378371429 Sep 2019 pre-releaseNothing published for this version
-
v0.5.1-0.20190928144926-0fa470d8f0d428 Sep 2019 pre-releaseNothing published for this version
-
v0.5.012 Jan 2019Release notes
Open source →- Added: Package
encoding- An abstraction and wrapper for the core functionality of packages likeencoding/jsonandencoding/gob(issue #47) - Added: Package
sql- It contains shared code for SQL implementations.mysqlandpostgresalready use it and if you want to create your own SQL implementation you can use it as well. (Useful for issue #57.) - Added
gokv.Storeimplementations:- Package
s3- Agokv.Storeimplementation for Amazon S3 (issue #37)- Also works for other S3-compatible cloud services like DigitalOcean Spaces and Scaleway Object Storage, as well as for self-hosted solutions like OpenStack Swift, Ceph and Minio
- Package
tablestorage- Agokv.Storeimplementation for Azure Table Storage (issue #42) - Package
datastore- Agokv.Storeimplementation for Google Cloud Datastore (issue #51) - Package
tablestore- Agokv.Storeimplementation for Alibaba Cloud Table Store (issue #70) - Package
leveldb- Agokv.Storeimplementation for LevelDB (issue #48) - Package
file- Agokv.Storeimplementation for storing key-value pairs as files (issue #52) - Package
zookeeper- Agokv.Storeimplementation for Apache ZooKeeper (issue #66) - Package
postgresql- Agokv.Storeimplementation for PostgreSQL (issue #57) - Package
cockroachdb- Agokv.Storeimplementation for CockroachDB (issue #62) - Package
ignite- Agokv.Storeimplementation for Apache Ignite (issue #64) - Package
freecache- Agokv.Storeimplementation for FreeCache (issue #44) - Package
bigcache- Agokv.Storeimplementation for BigCache (issue #45)
- Package
Breaking changes
- The
MarshalFormatenums were removed from all packages that containedgokv.Storeimplementations. Instead the shared packageencodingwas introduced (required for issue #47)
- Added: Package
-
v0.4.002 Dec 2018Release notes
Open source →- Added: Method
Close() error(issue #36) - Added
gokv.Storeimplementations: - Added: The factory function
redis.NewClient()now checks if the connection to the Redis server works and otherwise returns an error. - Added: The
testpackage now has the functionfunc TestConcurrentInteractions(t *testing.T, goroutineCount int, store gokv.Store)that you can use to test yourgokv.Storeimplementation with concurrent interactions. - Improved: The
etcd.Clienttimeout implementation was improved. - Fixed: The
Get()method of thebboltstore ignored errors if they occurred during the retrieval of the value - Fixed: Spelling in error message when using the etcd implementation and the etcd server is unreachable
Breaking changes
- The added
Close() errormethod (see above) means that previous implementations ofgokv.Storeare not compatible with the interface anymore. - Renamed
boltpackage tobboltto reflect the fact that the maintained fork is used. Also changed all other occurrences of "bolt" (e.g. in GoDoc comments etc.). - Due to the above mentioned addition to the Redis client factory function, the function signature changed from
func NewClient(options Options) Clienttofunc NewClient(options Options) (Client, error).
- Added: Method
-
v0.3.017 Nov 2018Release notes
Open source →- Added: Method
Delete(string) error(issue #8) - Added: All
gokv.Storeimplementations in this package now also support gob as marshal format as alternative to JSON (issue #22)- Part of this addition are a new field in the existing
Optionsstructs, calledMarshalFormat, as well as the relatedMarshalFormatenum (custom type + relatedconstvalues) in each implementation package
- Part of this addition are a new field in the existing
- Added
gokv.Storeimplementations:
Breaking changes
- The added
Delete(string) errormethod (see above) means that previous implementations ofgokv.Storeare not compatible with the interface anymore. - Changed: The
NewStore()function ingomapandsyncmapnow has anOptionparameter. Required for issue #22. - Changed: Passing an empty string as key to
Set(),Get()orDelete()now results in an error - Changed: Passing
nilas value parameter toSet()or as pointer toGet()now results in an error. This change leads to a consistent behaviour across the different marshal formats (otherwise for exampleencoding/jsonmarshalsniltonullwhileencoding/gobreturns an error).
- Added: Method
-
v0.2.005 Nov 2018Release notes
Open source →- Added
gokv.Storeimplementation:- Package
gomap- Agokv.Storeimplementation for a plain Go map with async.RWMutexfor concurrent access (issue #11)
- Package
- Improved: Every
gokv.Storeimplementation resides in its own package now, so when downloading the package of an implementation, for example withgo get github.com/philippgille/gokv/redis, only the actually required dependencies are downloaded and compiled, making the process much faster. This is especially useful for example when creating Docker images, where in many cases (depending on theDockerfile) the download and compilation are repeated for each build. (Issue #2) - Improved: The performance of
bolt.Storeshould be higher, because unnecessary manual locking was removed. (Issue #1) - Fixed: The
gokv.Storeimplementation for bbolt / Bolt DB used data from within a Bolt transaction outside of it, without copying the value, which can lead to errors (see here) (issue #13)
Breaking changes
- All
gokv.Storeimplementations were moved into their own packages and the structs that implement the interface were renamed to avoid unidiomatic "stuttering".
- Added
-
v0.1.013 Oct 2018Release notes
Open source →Initial release with code from philippgille/ln-paywall:78fd1dfbf10f549a22f4f30ac7f68c2a2735e989 with only a few changes like a different default path and a bucket name as additional option for the Bolt DB implementation.
Features:
-
v0.0.0-20250629173028-c96b6b6bc37329 Jun 2025 pre-releaseNothing published for this version
-
v0.0.0-20250627195511-62058bc225ad27 Jun 2025 pre-releaseNothing published for this version
-
v0.0.0-20250627120753-64606da11bfb27 Jun 2025 pre-releaseNothing published for this version
-
v0.0.0-20250627113229-1d71df2f2a1d27 Jun 2025 pre-releaseNothing published for this version
-
v0.0.0-20250627110447-ba4bb98f860727 Jun 2025 pre-releaseNothing published for this version
-
v0.0.0-20250627094632-24142fe2ecd227 Jun 2025 pre-releaseNothing published for this version
-
v0.0.0-20240602190052-c954c5435f3502 Jun 2024 pre-releaseNothing published for this version
-
v0.0.0-20240128200346-0a05f2ed73e828 Jan 2024 pre-releaseNothing published for this version
-
v0.0.0-20240107170123-128881dec54707 Jan 2024 pre-releaseNothing published for this version
-
v0.0.0-20231205181559-be99209ab4a205 Dec 2023 pre-releaseNothing published for this version
-
v0.0.0-20191013192605-5037d2512e8f13 Oct 2019 pre-releaseNothing published for this version
-
v0.0.0-20191013173411-c8ef9ba4595613 Oct 2019 pre-releaseNothing published for this version
-
v0.0.0-20191013171515-a4a3fa1d6c7113 Oct 2019 pre-releaseNothing published for this version
-
v0.0.0-20191011213304-eb77f15b9c6111 Oct 2019 pre-releaseNothing published for this version
-
v0.0.0-20191002230130-541339c3540202 Oct 2019 pre-releaseNothing published for this version
-
v0.0.0-20191001201555-5ac9a20de63401 Oct 2019 pre-releaseNothing published for this version
-
v0.0.0-20190929161952-f31a8dbcad2a29 Sep 2019 pre-releaseNothing published for this version
-
v0.0.0-20190929161440-07d380f5709c29 Sep 2019 pre-releaseNothing published for this version
-
v0.0.0-20190928144926-0fa470d8f0d428 Sep 2019 pre-releaseNothing published for this version