# olric-data/olric

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/olric-data-olric).**

3,420 stars · 140 forks · Go · apache-2.0

## Links

- GitHub: https://github.com/olric-data/olric
- awesome-repositories: https://awesome-repositories.com/repository/olric-data-olric.md

## Topics

`cache` `database` `distributed-cache` `distributed-database` `distributed-hash-table` `distributed-systems` `in-memory-database` `key-value` `key-value-store` `nosql` `redis`

## Description

Olric is a distributed data grid and in-memory key-value store that partitions and replicates data across a cluster of servers. It serves as a shared memory system for managing distributed maps, performing atomic operations, and acting as an in-memory data cache.

The system provides a distributed locking mechanism for concurrency control and a pub-sub messaging system that broadcasts and routes messages over named channels across the cluster.

The platform covers wide-ranging capabilities including cluster management and orchestration, data replication with configurable quorums, and automated memory eviction using time-to-live policies. It also includes tools for monitoring cluster health, auditing data distribution, and password-based client authentication.

Olric can be deployed as a standalone independent service, as a container, or integrated directly into an application as an embedded library.

## Tags

### Data & Databases

- [Distributed Key-Value Stores](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/specialized-storage-engines/distributed-key-value-stores.md) — Provides a high-performance distributed key-value store that partitions and replicates data across a cluster of servers. ([source](https://github.com/olric-data/olric/blob/master/get_response_test.go))
- [Distributed Key-Value Stores](https://awesome-repositories.com/f/data-databases/distributed-key-value-stores.md) — Stores and retrieves data across a cluster of servers using a distributed hash table.
- [Key-Value Stores](https://awesome-repositories.com/f/data-databases/key-value-stores.md) — Provides a high-performance in-memory key-value store for distributed data management. ([source](https://github.com/olric-data/olric/blob/master/go.mod))
- [Key-Value](https://awesome-repositories.com/f/data-databases/storage-engines/key-value.md) — Functions as a high-performance distributed store for saving and fetching various data types via unique keys. ([source](https://github.com/olric-data/olric/blob/master/get_response.go))
- [Distributed Data Replication](https://awesome-repositories.com/f/data-databases/client-server-data-synchronization/core-data-sync-servers/distributed-data-replication.md) — Ensures data availability and consistency across the cluster using quorum-based replication. ([source](https://github.com/olric-data/olric/tree/release/v0.7))
- [Data Replication](https://awesome-repositories.com/f/data-databases/data-replication.md) — Synchronizes data across distributed nodes and uses failure detection to maintain reliability. ([source](https://github.com/olric-data/olric/blob/master/olric.go))
- [Data Replication Strategies](https://awesome-repositories.com/f/data-databases/data-replication-strategies.md) — Copies data to backup owners using synchronous or asynchronous replication for fault tolerance. ([source](https://github.com/olric-data/olric#readme))
- [Quorum-Based Commit Protocols](https://awesome-repositories.com/f/data-databases/distributed-consensus-protocols/quorum-based-commit-protocols.md) — Guarantees data accuracy by requiring a minimum number of replica acknowledgments for read and write operations.
- [Distributed Data Grids](https://awesome-repositories.com/f/data-databases/distributed-data-grids.md) — Provides a shared memory system for managing distributed maps and performing atomic operations across nodes.
- [Distributed Routing Tables](https://awesome-repositories.com/f/data-databases/distributed-routing-tables.md) — Maintains a distributed routing table that maps data partitions to their primary and replica owners for efficient request routing. ([source](https://github.com/olric-data/olric/blob/master/cluster_test.go))
- [In-Memory Caches](https://awesome-repositories.com/f/data-databases/in-memory-caches.md) — Provides an in-memory data cache with automated time-to-live expiration and memory eviction policies.
- [Distributed Memory Caches](https://awesome-repositories.com/f/data-databases/in-memory-caches/distributed-memory-caches.md) — Caches transient data in memory across multiple nodes with automated eviction and TTL policies.
- [Model-to-Source Routing](https://awesome-repositories.com/f/data-databases/model-to-source-routing.md) — Provides routing information mapping data partitions to specific owner nodes for request dispatching. ([source](https://github.com/olric-data/olric/blob/master/cluster.go))
- [Quorum-Based Consistency](https://awesome-repositories.com/f/data-databases/quorum-based-consistency.md) — Requires a minimum number of successful replica operations before returning a result to the client. ([source](https://github.com/olric-data/olric/blob/master/README.md))
- [Distributed Atomic Operations](https://awesome-repositories.com/f/data-databases/atomic-field-operators/distributed-atomic-operations.md) — Supports atomic increments and replacements of values to ensure consistency across the distributed grid. ([source](https://github.com/olric-data/olric#readme))
- [Batch Data Operations](https://awesome-repositories.com/f/data-databases/batch-data-operations.md) — Groups multiple read and write commands into single requests to reduce network overhead. ([source](https://github.com/olric-data/olric/blob/master/pipeline_test.go))
- [Cache Eviction Policies](https://awesome-repositories.com/f/data-databases/cache-eviction-policies.md) — Manages memory usage by removing outdated entries using time-based or usage-based policies. ([source](https://github.com/olric-data/olric/tree/release/v0.7))
- [Cursor-Based Iteration](https://awesome-repositories.com/f/data-databases/cursor-based-iteration.md) — Provides cursor-based iteration to retrieve large distributed datasets across partitions without blocking server resources.
- [Conflict Resolution Strategies](https://awesome-repositories.com/f/data-databases/data-integration-synchronization/replication-control-policy/conflict-resolution-strategies.md) — Balances throughput and reliability using a combination of quorums and conflict resolution strategies. ([source](https://github.com/olric-data/olric#readme))
- [Database Key Scanning](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/database-operations/database-key-scanning.md) — Provides non-blocking iteration to scan keys in a distributed map using match patterns. ([source](https://github.com/olric-data/olric/blob/master/cluster_iterator_test.go))
- [Distributed Query Processing](https://awesome-repositories.com/f/data-databases/distributed-query-processing.md) — Executes distributed queries to scan and retrieve keys from maps across multiple cluster nodes. ([source](https://github.com/olric-data/olric/blob/master/cluster_iterator.go))
- [Write Conflict Resolution Policies](https://awesome-repositories.com/f/data-databases/duplicate-detection-tools/write-conflict-resolution-policies.md) — Resolves data conflicts between diverging versions using a last-write-wins policy based on client timestamps. ([source](https://github.com/olric-data/olric/blob/master/README.md))
- [Conflict Resolution](https://awesome-repositories.com/f/data-databases/read-replicas/conflict-resolution.md) — Compares replica timestamps during reads and propagates the latest version to outdated nodes. ([source](https://github.com/olric-data/olric/blob/master/README.md))
- [Distributed Map Scanning](https://awesome-repositories.com/f/data-databases/storage-engines/distributed-map-scanning.md) — Enables retrieving subsets of entries from distributed maps using filtering criteria and limits. ([source](https://github.com/olric-data/olric/blob/master/embedded_client.go))

### Software Engineering & Architecture

- [Distributed Data Management](https://awesome-repositories.com/f/software-engineering-architecture/distributed-systems/distributed-data-management.md) — Partitions data across multiple nodes and manages replicas to ensure high availability and system scalability. ([source](https://github.com/olric-data/olric/blob/master/olric-server-docker.yaml))
- [Consistent Hashing](https://awesome-repositories.com/f/software-engineering-architecture/consistent-hashing.md) — Implements consistent hashing to distribute data across nodes and minimize remapping during cluster scaling.
- [Split-Brain Prevention](https://awesome-repositories.com/f/software-engineering-architecture/split-brain-prevention.md) — Prevents data divergence by using majority quorums to stop node operations during network partitions. ([source](https://github.com/olric-data/olric/blob/master/README.md))
- [Last-Write-Wins Semantics](https://awesome-repositories.com/f/software-engineering-architecture/last-write-wins-semantics.md) — Reconciles diverging data versions using a last-write-wins policy based on client timestamps.
- [LRU Cache Eviction](https://awesome-repositories.com/f/software-engineering-architecture/memory-management/lru-cache-eviction.md) — Automatically removes the least recently used items from memory to prevent system resource exhaustion. ([source](https://github.com/olric-data/olric/blob/master/integration_test.go))

### DevOps & Infrastructure

- [Cluster Membership Coordination](https://awesome-repositories.com/f/devops-infrastructure/cluster-membership-coordination.md) — Tracks active node instances and manages peer discovery to maintain connectivity as nodes join or leave. ([source](https://github.com/olric-data/olric/blob/master/integration_test.go))
- [Cluster Membership Protocols](https://awesome-repositories.com/f/devops-infrastructure/cluster-membership-protocols.md) — Uses gossip-based protocols for nodes to discover each other and maintain a dynamic cluster topology.
- [Automated Node Discovery](https://awesome-repositories.com/f/devops-infrastructure/cluster-node-management/automated-node-discovery.md) — Automatically identifies and connects to peer nodes using cloud-native plugins and external discovery services. ([source](https://github.com/olric-data/olric/tree/master/docker))
- [Capacity Scaling](https://awesome-repositories.com/f/devops-infrastructure/cluster-node-management/capacity-scaling.md) — Dynamically adds new nodes to the cluster to increase storage capacity and distribute the workload. ([source](https://github.com/olric-data/olric/blob/master/olric_test.go))
- [Distributed Locks](https://awesome-repositories.com/f/devops-infrastructure/distributed-locks.md) — Provides a distributed locking mechanism to coordinate access to shared resources across the cluster. ([source](https://github.com/olric-data/olric#readme))
- [Cloud Native Orchestration](https://awesome-repositories.com/f/devops-infrastructure/cloud-native-orchestration.md) — Automatically discovers peer nodes and manages cluster membership within cloud or containerized environments.
- [Standalone or Cluster Deployments](https://awesome-repositories.com/f/devops-infrastructure/infrastructure/infrastructure-as-code/management/infrastructure-orchestration/production-cluster-deployers/storage-cluster-deployment/standalone-or-cluster-deployments.md) — Supports flexible deployment as either a standalone server or a distributed cluster. ([source](https://github.com/olric-data/olric/blob/master/README.md))
- [Standalone Service Deployments](https://awesome-repositories.com/f/devops-infrastructure/standalone-service-deployments.md) — Can be run as a standalone server accessed via a standard serialization protocol. ([source](https://github.com/olric-data/olric#readme))

### Networking & Communication

- [Cluster Discovery Services](https://awesome-repositories.com/f/networking-communication/cluster-discovery-services.md) — Locates and joins peer nodes by integrating with cloud providers and cluster discovery services. ([source](https://github.com/olric-data/olric/tree/release/v0.7))
- [Publish-Subscribe Messaging](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/publish-subscribe-messaging.md) — Enables producers and consumers to communicate asynchronously via named channels. ([source](https://github.com/olric-data/olric#readme))
- [Data Synchronization and Consistency](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/data-synchronization-consistency.md) — Sets read and write quorums to balance system performance against data consistency guarantees. ([source](https://github.com/olric-data/olric/blob/master/olric-server-docker.yaml))
- [Pub-Sub Messaging](https://awesome-repositories.com/f/networking-communication/pub-sub-messaging.md) — Implements a pub-sub messaging system to broadcast real-time updates across the cluster. ([source](https://github.com/olric-data/olric/blob/master/pubsub.go))
- [Sharded Pub/Sub](https://awesome-repositories.com/f/networking-communication/pub-sub-messaging/sharded-pub-sub.md) — Uses glob-style pattern matching to route pub-sub messages to subscribers across the cluster. ([source](https://github.com/olric-data/olric/tree/release/v0.7))
- [Publish-Subscribe Systems](https://awesome-repositories.com/f/networking-communication/publish-subscribe-systems.md) — Distributes messages using specific channel names or pattern-based subscriptions. ([source](https://github.com/olric-data/olric/blob/master/pubsub_test.go))
- [Service Discovery Integrations](https://awesome-repositories.com/f/networking-communication/service-discovery-integrations.md) — Integrates with external naming services and daemons to automatically locate peer nodes within a network. ([source](https://github.com/olric-data/olric#readme))
- [Split-Brain Prevention Mechanisms](https://awesome-repositories.com/f/networking-communication/distributed-consensus-algorithms/split-brain-prevention-mechanisms.md) — Prevents split-brain scenarios by requiring a majority quorum for node operations during network partitions.
- [Pattern-Based Routing](https://awesome-repositories.com/f/networking-communication/messaging-channel-management/pub-sub-subscriptions/pattern-based-routing.md) — Distributes pub-sub messages across the cluster using glob-style pattern matching for flexible channel subscriptions.

### Programming Languages & Runtimes

- [Embedded Library Deployments](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/runtime-environments/runtimes/deployment-specific-runtimes/embedded-runtime-deployment/embedded-library-deployments.md) — Allows the data grid to be integrated directly into applications for low-latency access. ([source](https://github.com/olric-data/olric#readme))

### System Administration & Monitoring

- [Cluster Health Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/cluster-health-monitoring.md) — Retrieves operational statistics and runtime metrics to analyze the overall state of the grid. ([source](https://github.com/olric-data/olric/blob/master/stats_test.go))
- [Cluster Monitoring Systems](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/metric-performance-monitors/cluster-monitoring-systems.md) — Tracks network throughput, memory allocation, and connection counts to monitor system health. ([source](https://github.com/olric-data/olric/blob/master/stats.go))
- [Cluster Topology Monitors](https://awesome-repositories.com/f/system-administration-monitoring/resource-monitoring/resource-change-monitors/state-change-monitoring/cluster-topology-monitors.md) — Provides tools to retrieve the cluster routing table and list all members and roles. ([source](https://github.com/olric-data/olric/blob/master/README.md))

### Web Development

- [Time-To-Live Expirations](https://awesome-repositories.com/f/web-development/data-fetching-caching/cache-invalidation-utilities/time-to-live-expirations.md) — Automatically evicts in-memory entries after a specified time-to-live duration to manage resource limits.
