https://github.com/yvanmazy/memorized
High-performance standalone Java cache server. Highly flexible and configurable. Distributed collections and objects.
https://github.com/yvanmazy/memorized
cache distributed-systems java memory performance server
Last synced: about 1 year ago
JSON representation
High-performance standalone Java cache server. Highly flexible and configurable. Distributed collections and objects.
- Host: GitHub
- URL: https://github.com/yvanmazy/memorized
- Owner: YvanMazy
- License: mit
- Created: 2023-09-21T17:34:11.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-05-16T11:24:17.000Z (about 2 years ago)
- Last Synced: 2025-02-09T07:45:12.800Z (over 1 year ago)
- Topics: cache, distributed-systems, java, memory, performance, server
- Language: Java
- Homepage:
- Size: 177 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: .github/README.md
- License: LICENSE
Awesome Lists containing this project
README
# Memorized
---
### 🏗️ This project is still in development.
This project is still in development, it is not yet possible to use it. The project is subject to significant change in
the future.
## 📝 Summary
* [Goal of Memorized server](https://github.com/YvanMazy/Memorized#-goal-of-memorized-server)
* [When to use?](https://github.com/YvanMazy/Memorized#-when-to-use)
* [Features](https://github.com/YvanMazy/Memorized#-features)
* [How to use?](https://github.com/YvanMazy/Memorized#%EF%B8%8F-how-to-use)
* [Examples](https://github.com/YvanMazy/Memorized#%EF%B8%8F-examples)
* [Requirements](https://github.com/YvanMazy/Memorized#%EF%B8%8F-requirements)
## ❓ Goal of Memorized server
**Memorized** is a standalone cache server written in **Java**. Its goal is to create a really lightweight and efficient
cache server with high **flexibility**.
This project does not use a library to manage connections between server and client, but instead uses a NIO server.
## 🔍 When to use?
This is **not** a cache server that can be used in all cases. The aim is to provide a cache server that is **flexible**
enough to automate certain actions and best meet sometimes complex system requirements.
Typically, actions are **triggered** when an element is modified.
Some important aspects of this project are:
* Great flexibility, making it easy to add your own elements to suit your needs.
* Maintain maximum consistency between clients.
* Be able to perform atomic operations on any object.
* Have the smallest possible memory and CPU footprint.
* Keep access to the project open so that anyone can use it.
* Easy and lightweight implementation on native applications and all types of environments (mainly Java).
## ✨ Features
Here is a list of current features:
* Custom authentication
* Customizable codec system
* Multithreaded client connection management
* Distributed collections
* Custom distributed objects
* And many more!
## 🛠️ How to use?
This section is not available yet. It will be divided into several sections in the Wiki tab.
## ✍️ Examples
See full
examples [here](https://github.com/YvanMazy/Memorized/tree/master/examples/src/main/java/be/darkkraft/memorized/example).
#### Start a Memorized client
```java
public class MyClient {
public static void main(final String[] args) {
final MemorizedClient client =
new MemorizedClientBuilder().serverAddress(new InetSocketAddress("127.0.0.1", 12345))
.authenticationInput(new UnsecureAuthenticationInput())
.codecRegistry(new DefaultCodecRegistry().registerDefaults())
.keyRegistry(new ClassKeyRegistry())
.build();
client.start();
}
}
```
#### Start a Memorized server
```java
public class MyServer {
public static void main(final String[] args) {
final MemorizedServer server = new MemorizedServerBuilder().address(new InetSocketAddress("127.0.0.1", 12345))
.workerThreads(1)
.authenticator(new UnsecureAuthenticator())
.codecRegistry(new DefaultCodecRegistry().registerDefaults())
.dataRepositoryCoordinator(new DataRepositoryCoordinator())
.build();
server.start();
}
}
```
## ⚙️ Requirements
* Java 17 or higher