olric

Distributed, in-memory key/value store and cache. It can be used as an embedded Go library and a language-independent service.

APACHE-2.0 License

Stars
3.1K
Committers
10

Bot releases are hidden (Show)

olric - v0.5.0-beta.2

Published by buraksezer over 2 years ago

Here is the second beta of the v0.5.x tree. It includes the following improvements:

  • Crash while benchmarking #153,
  • Improve integration tests.

Install with the following command:

go get github.com/buraksezer/[email protected]
olric - v0.4.4

Published by buraksezer over 2 years ago

This release includes the following fixes and improvements:

  • Fails on m1 mac #156
  • Marking connections unavailable eventually drains the pool buraksezer/connpool#2

Thank you @randall-fulton for your contributions!

olric - v0.5.0-beta.1

Published by buraksezer over 2 years ago

Here is the first beta of the v0.5.x tree. It includes the following improvements:

  • Fix inconsistencies in the Client API,
  • Better Docker setup.

Install with the following command:

go get github.com/buraksezer/[email protected]
olric - v0.5.0-alpha.4

Published by buraksezer over 2 years ago

Here is the fourth alpha of v0.5.x tree. It includes the following improvements:

  • Add IdleClose configuration parameter to close idle connections,
  • Extract KeepAlivePeriod logic from v0.4.x tree,
  • Integration tests for eviction methods.

Install with the following command:

go get github.com/buraksezer/[email protected]
olric - v0.5.0-alpha.3

Published by buraksezer over 2 years ago

Here is the third alpha of v0.5.x tree. It includes many improvements including:

  • Initial implementation of cluster events. Now users can observe the cluster state by subscribing to cluster.events channel. Olric sends events in JSON format. Sample from redis-cli:
1) "message"
2) "cluster.events"
3) "{\"timestamp\":1648410047096938000,\"source\":\"127.0.0.1:3320\",\"kind\":\"node-left-event\",\"node_left\":\"127.0.0.1:3321\"}"
1) "message"
2) "cluster.events"
3) "{\"timestamp\":1648410056207893000,\"source\":\"127.0.0.1:3320\",\"kind\":\"node-join-event\",\"node_join\":\"127.0.0.1:3321\"}"
1) "message"
2) "cluster.events"
3) "{\"timestamp\":1648410056107344000,\"source\":\"127.0.0.1:3321\",\"kind\":\"node-join-event\",\"node_join\":\"127.0.0.1:3320\"}"

Available events:

  • node-join-event
  • node-left-event
  • fragment-migration-event
  • fragment-received-event

It's not fully documented yet. See events/cluster_events.go file to get more information about the feature.

Install with the following command:

go get github.com/buraksezer/[email protected]
olric - v0.5.0-alpha.2

Published by buraksezer over 2 years ago

Here is the second alpha of v0.5.x tree. It includes many improvements including:

  • Integration tests for many packages, especially protocol.
  • Distribute client requests in a round-robin fashion.

Install with the following command:

go get github.com/buraksezer/[email protected]
olric - v0.5.0-alpha.1

Published by buraksezer over 2 years ago

Here is the first alpha of v0.5.x tree. It includes many improvements including:

  • A new version of Olric API is available. Now Olric has a Client interface and two implementations of it: ClusterClient and EmbeddedClient
  • In-house binary protocol was removed. Olric now uses RESP(Redis Protocol) for communication. Any Redis client can be used to access an Olric cluster.
  • Default storage engine is hugely improved. Its compaction behavior is changed. It's now more memory efficient and fast.
  • The old client implementation has been removed. You can use ClusterClient now as a non-member client.
  • olric-cli and olric-benchmark were removed. redis-cli and memtier_benchmark can be used instead of those tools.

The new API can be inconsistent for now. During the next months, those inconsistencies will be fixed gradually.

Install with the following command:

go get github.com/buraksezer/[email protected]
olric - v0.4.3

Published by buraksezer over 2 years ago

This release includes the following fixes and improvements:

  • Expand acceptable IP addresses to listen on #143
  • Set default value for TCP keepalive (Failed to check the key count on partition #130)
  • fix: kvstore config not load #140

Thank you @d1ngd0 and @ShawnHsiung for your contributions!

olric - v0.4.2

Published by buraksezer almost 3 years ago

This release includes the following fixes and improvements:

  • bug: dead loop while expand kvstore #137

Thank you @ShawnHsiung for providing a PR to fix that problem.

olric - v0.4.1

Published by buraksezer almost 3 years ago

This release includes the following fixes and improvements:

  • Improve error messages in TCP client implementation. #130
olric - v0.4.0

Published by buraksezer about 3 years ago

What is Olric?

Distributed cache and in-memory key/value data store. It can be used both as an embedded Go library and as a language-independent service.

With Olric, you can instantly create a fast, scalable, shared pool of RAM across a cluster of computers.

Install

Learn how to install Olric and see Sample Code to get started!

Support

Join our Discord server!

Changes

This release includes the following fixes and improvements:

  • Validate the configuration before running an Olric node #68
  • Design an interface for different storage engine implementations #46
  • Move data structure implementations to their own packages #70
  • Add configuration directives for dead member tracker #101
  • fatal error: concurrent map writes #105
  • Potential race condition in fragment creation #99
  • Read repair feature doesn't work properly #97
  • Consistency only works with two members... #92
  • Collect more metrics about the current state of a node #87
  • Data race in various tests #85
  • panic when set replica count and async replica #93
  • unknown field 'Addrs' in struct literal of type client.Config #110
  • Custom logger doesn't work due to usage of c.Logger.SetOutput #117
  • Single member stats for existing metrics collector #82
olric - v0.3.12

Published by buraksezer about 3 years ago

This release includes the following fixes and improvements:

  • Custom logger doesn't work due to usage of c.Logger.SetOutput #117
  • Expose DMap.name #116
olric - v0.4.0-rc.1

Published by buraksezer about 3 years ago

This release includes the following fixes and improvements:

  • Improvements in olric-cli and documentation.
olric - v0.3.11

Published by buraksezer about 3 years ago

This release includes the following fixes and improvements:

  • Update misleading parts of the Golang client configuration.
olric - v0.4.0-beta.10

Published by buraksezer over 3 years ago

This release includes the following fixes and improvements:

  • Add --keep-going to olric-benchmark
  • Create local DMap fragment to run a query on the cluster
olric - v0.4.0-beta.9

Published by buraksezer over 3 years ago

This release includes the following fixes and improvements:

  • Remove stale tables more effectively. See #106 for details.
  • Initialize DMap every time to run the operation on the cluster.
  • Add RoutingTablePushInterval config directive to control push interval programatically.
olric - v0.3.9

Published by buraksezer over 3 years ago

This release includes the following fixes and improvements:

  • Remove stale tables more effectively. See #106 for details.
olric - v0.4.0-beta.8

Published by buraksezer over 3 years ago

This release includes the following fixes and improvements:

  • Remove dead member tracker. Service discovery plugins will take over its responsibility.
olric - v0.4.0-beta.7

Published by buraksezer over 3 years ago

This release includes the following fixes and improvements:

  • Potential race condition in fragment creation #99
olric - v0.4.0-beta.6

Published by buraksezer over 3 years ago

This release includes the following fixes and improvements:

  • Read repair feature doesn't work properly #97