diff --git a/README.md b/README.md index 798ffb5..8c3afd1 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ It is minimalistic, lightweight, and easy to use library written in Kotlin and c - **[Mutex](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/Mutex.kt)**: Distributed lock mechanism on a resource, that uses consensus of the majority of data storage nodes to determine if check obtained successfully. - **[Semaphore](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/Semaphore.kt)**: Distributed semaphore implementation allowing multiple number of lock on a resource. It also uses consensus of the majority of data storage nodes to determine if check obtained successfully. - **[SimplifiedMutex](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/SimplifiedMutex.kt)**: Simplified distributed lock mechanism on a resource. Unlike [Mutex](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/Mutex.kt) it uses single data storage node. -- **[ListeningCountDownLatch](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/ListeningCountDownLatch.kt)**: Implementation of distributed Count Down Latch, it uses that uses consensus of the majority of data storage instances ensuring count down consistency. -[ListeningCountDownLatch](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/ListeningCountDownLatch.kt) utilized [Redis Pub/Sub](https://redis.io/topics/pubsub) mechanism to notify waiting workloads about count reaching zero. +- **[ListeningCountDownLatch](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/ListeningCountDownLatch.kt)**: Implementation of distributed Count Down Latch, it uses that uses consensus of the majority of data storage instances ensuring count down consistency. + [ListeningCountDownLatch](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/ListeningCountDownLatch.kt) utilized [Redis Pub/Sub](https://redis.io/topics/pubsub) mechanism to notify waiting workloads about count reaching zero. ## Supporting data storages Currently, RedPulsar supports Redis as a data storage. It can be used with both Jedis or Lettuce clients. @@ -29,17 +29,17 @@ Currently, RedPulsar supports Redis as a data storage. It can be used with both Minimal required Java version is 11. RedPulsar project is written in Kotlin, but can be easily used in Java projects too. -## Getting started +## Getting started Gradle dependency: ```kotlin -implementation("com.himadieiev:redpulsar-jedis:0.10.1") +implementation("com.himadieiev:redpulsar-jedis:1.2.0") // OR -implementation("com.himadieiev:redpulsar-lettuce:0.10.1") +implementation("com.himadieiev:redpulsar-lettuce:1.2.0") ``` -- See [Getting started with redpulsar-jedis](./redpulsar-jedis/README.md#getting-started) for getting started with Jedis. -- See [Getting started with redpulsar-lettuce](./redpulsar-lettuce/README.md#getting-started) for getting started with Lettuce. +- See [Getting started with redpulsar-jedis](./redpulsar-jedis/README.md#getting-started) for getting started with Jedis client. +- See [Getting started with redpulsar-lettuce](./redpulsar-lettuce/README.md#getting-started) for getting started with Lettuce client. ### Development To build RedPulsar locally, you need to have JDK 11+ installed. @@ -68,12 +68,12 @@ docker-compose up -d -Psigning.keyId=... ``` -## Further development +## Further development -### Extending RedPulsar to use other data stores +### Extending RedPulsar to use other data stores Currently, all features are implemented with Redis. However, it is possible to extend RedPulsar to use other distributed data stores like AWS DynamoDB / Casandra / ScyllaDB etc. Even it could be implemented with RDBMS like MySQL or PostgreSQL. RedPulsar project have an abstraction level for data storage called [Backend](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/abstracts/Backend.kt). See package [com.himadieiev.redpulsar.core.locks.abstracts.backends](./redpulsar-core/src/main/kotlin/com/himadieiev/redpulsar/core/locks/abstracts/backends) for details what particular operation should be implemented. -New data storage should use a new module and implement same abstractions as current Redis implementations. +New data storage should use a new module and implement same abstractions as current Redis implementations. ### Contributing Contributions are welcome! Please make sure to create Issue first before working on improvements o new features, feel free to submit a Pull Request from a project fork. @@ -84,4 +84,3 @@ Contributions are welcome! Please make sure to create Issue first before working - [ ] Leader election mechanisms. - [ ] Service discovery service. - etc. -