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.6 Latest Release

Published by buraksezer 5 months ago

This release includes the following fixes and improvements:

  • Data race in cluster setup using Olric v0.5.5 #247,
  • Minor fixes in the test suite.
olric - v0.5.5

Published by buraksezer 9 months ago

Olric is a distributed, in-memory object store. It's designed from the ground up to be distributed, and 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.

Olric is implemented in Go and uses the Redis serialization protocol. So Olric has client implementations in all major programming languages.

Olric is highly scalable and available. Distributed applications can use it for distributed caching, clustering and publish-subscribe messaging.

It is designed to scale out to hundreds of members and thousands of clients. When you add new members, they automatically discover the cluster and linearly increase the memory capacity. Olric offers simple scalability, partitioning (sharding), and re-balancing out-of-the-box. It does not require any extra coordination processes. With Olric, when you start another process to add more capacity, data and backups are automatically and evenly balanced.

This release includes the following fixes and improvements:

  • Fix a minor data race issue in cluster events.
olric - v0.5.4

Published by buraksezer over 1 year ago

This release includes the following fixes and improvements:

  • Panic on start when BindAddr cannot be resolved #217
olric - v0.5.3

Published by buraksezer over 1 year ago

This release includes the following fixes and improvements:

  • Fix a data race between parallel GET calls,
  • Upgrade redcon to v1.6.2.
olric - v0.5.2

Published by buraksezer almost 2 years ago

This release includes the following fixes and improvements:

  • Unbounded memory growth / leak in pipelines #209
  • panic: runtime error: integer divide by zero in setLRUEvictionStats #210
  • Version bump: Redcon v1.6.1
olric - v0.5.1

Published by buraksezer almost 2 years ago

This release includes the following fixes and improvements:

  • Possible pipeline.Discard bug #205
  • reduce pipeline.Discard allocations #203
  • pipeline concurrency hardcoded to 1 #201
  • panic: semaphore: released more than held #199

Thank you, @derekperkins for your contributions.

olric - v0.5.0

Published by buraksezer almost 2 years ago

Olric v0.5.0 is here.

  • Olric Binary Protocol has been replaced with Redis Serialization Protocol 2 (RESP2),
  • Redefined DMap API,
  • Improved storage engine,
  • Cluster events,
  • A drop-in replacement of Redis' Publish-Subscribe messaging. DTopic data structure has been removed,
  • olric-cli, olric-benchmark, and olric-stats has been removed.

Important: Please note that this version of Olric is incompatible with the previous versions.

See the README.md file and the documents on pkg.go.dev.

olric - v0.4.10

Published by buraksezer almost 2 years ago

This release includes the following fixes and improvements:

  • Error handling while DTopic publish in embedded mode #189
olric - v0.4.9

Published by buraksezer almost 2 years ago

This release includes the following fixes and improvements:

buraksezer/consistent upgraded to v0.10.0. It includes the following fixes:

olric - v0.5.0-rc.1

Published by buraksezer about 2 years ago

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

  • Increase the verbosity level of some log messages.
  • Upgrade hashicorp/memberlist to v0.5.0
olric - v0.4.8

Published by buraksezer about 2 years ago

This release includes the following fixes and improvements:

  • Prevent data race while reading storage engine statistics.
olric - v0.4.7

Published by buraksezer about 2 years ago

This release includes the following fixes and improvements:

  • Factory failure drains available connection max from pool #4
  • Backported a fix from fluxninja/olric. See #172

Thank you for your contributions:

  • @randall-fulton
  • @hasit
  • @harjotgill
olric - v0.4.6

Published by buraksezer about 2 years ago

This release includes the following fixes and improvements:

  • Shutdown() panic under certain conditions #177
olric - v0.5.0-beta.8

Published by buraksezer about 2 years ago

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

  • Honor current TTL in DMap.Incr and DMap.Decr methods #172
  • refactor: copy encoded value into a new byte slice #180

Thank you @hasit for your contributions!

olric - v0.5.0-beta.7

Published by buraksezer about 2 years ago

What is Olric?

Olric is a distributed, in-memory data structure store. It's designed from the ground up to be distributed, and 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.

Olric is implemented in Go and uses the Redis protocol. That means Olric has client implementations in all major programming languages.

Olric is highly scalable and available. Distributed applications can use for distributed caching, clustering, and Publish-Subscribe messaging.

It is designed to scale out to hundreds of members and thousands of clients. When you add new members, they automatically discover the cluster and linearly increase the memory capacity. Olric offers simple scalability, partitioning (sharding), and re-balancing out-of-the-box. It does not require any extra coordination processes. With Olric, when you start another process to add more capacity, data and backups are automatically and evenly balanced.

See Samples section, and API docs on pkg.go.dev to get started!

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

  • Bring back pipelining feature to Golang client #174,
  • Add RefreshMetadata method to the Client interface,
  • Add ErrConnRefused error type,
  • Delete returns the number of deleted keys,
  • Smart routing: ClusterClient can calculate the partition owner for the given key,
  • Improve documentation.

Sample pipelining

func ExamplePipeline() {
	c, err := NewClusterClient([]string{"127.0.0.1:3320"})
	if err != nil {
		// Handle this error
	}
	dm, err := c.NewDMap("mydmap")
	if err != nil {
		// Handle this error
	}

	ctx := context.Background()

	pipe, err := dm.Pipeline()
	if err != nil {
		// Handle this error
	}

	futurePut, err := pipe.Put(ctx, "key-1", "value-1")
	if err != nil {
		// Handle this error
	}

	futureGet := pipe.Get(ctx, "key-1")

	err = pipe.Exec(context.Background())
	if err != nil {
		// Handle this error
	}

	err = futurePut.Result()
	if err != nil {
		// Handle this error
	}

	gr, err := futureGet.Result()
	if err != nil {
		// Handle this error
	}
	value, err := gr.String()
	if err != nil {
		// Handle this error
	}
	fmt.Println(value)
}
olric - v0.5.0-beta.6

Published by buraksezer over 2 years ago

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

  • Add DM.INCRBYFLOAT command,
  • Fix corrupt cursor problems in DM.SCAN implementation in the clients.
olric - v0.5.0-beta.5

Published by buraksezer over 2 years ago

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

  • DM.DEL takes multiple keys
olric - v0.5.0-beta.4

Published by buraksezer over 2 years ago

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

  • Fix wrong cursor alignment in iterator implementations
olric - v0.4.5

Published by buraksezer over 2 years ago

This release includes the following fixes and improvements:

  • Memory leak, related to 137 (bug: dead loop while expand kvstore)

Thank you @justinfx and @ShawnHsiung for their contributions!

olric - v0.5.0-beta.3

Published by buraksezer over 2 years ago

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

  • DMap compaction deletes non-empty fragments after some time #160
  • olricd panics if the CLI parameters are invalid. #161
  • olricd crashes if another node works on host:port #159

Install with the following command:

go get github.com/buraksezer/[email protected]