CMR Cache é um servidor de cache open-source projetado para oferecer uma solução rápida e leve para armazenamento temporário de dados em memória. Ele foi criado para ser uma alternativa ao Redis, com foco em simplicidade e flexibilidade, ideal para pequenos projetos ou comunidades que precisam de um cache eficiente, mas sem a complexidade do Redis.
- 🔥 Alto desempenho: Respostas rápidas para operações de leitura e escrita.
- 📦 Armazenamento em memória: Dados mantidos em memória volátil para acesso ultrarrápido.
- 🧩 Comandos simples: Suporte aos principais comandos de cache, como
SET
,GET
,DEL
. - 🔒 Autenticação básica: Controle de acesso via autenticação com usuário e senha.
- 📜 Persistência opcional: Opção de persistir dados no disco para cenários de cache que exigem durabilidade.
- 🌐 Compatibilidade: Suporte para integração com diversas linguagens.
git clone https://github.com/camargo2019/cmr-cache.git
cd cmr-cache
No Ubuntu, você pode instalar as dependências necessárias com:
sudo apt-get install libboost-all-dev
Para compilar o projeto no Ubuntu, use o seguinte comando:
clang++ -o cmr_cache main.cpp -I./vendor/yaml -I/usr/local/include/boost -L/usr/local/lib -lboost_system -lpthread -Wmissing-declarations
Para iniciar o servidor CMR Cache, basta rodar o seguinte comando:
./cmr_cache
Por padrão, o servidor escutará na porta 6347
na sua máquina local. Se desejar, você pode alterar a porta e outras configurações em config/host.yaml
.
Aqui está um exemplo simples de como interagir com o servidor CMR Cache utilizando Python:
import socket
# Conectando ao servidor CMR Cache
HOST = 'localhost'
PORT = 6347
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect((HOST, PORT))
# Autenticando
sock.sendall(b'AUTH admin admin\r\n')
response = sock.recv(1024)
print('Response:', response.decode())
# Definindo um valor no cache
sock.sendall(b'SET mykey myvalue 3600\r\n')
response = sock.recv(1024)
print('Response:', response.decode())
# Obtendo um valor do cache
sock.sendall(b'GET mykey\r\n')
response = sock.recv(1024)
print('Response:', response.decode())
Comando | Descrição |
---|---|
SET key value |
Define um valor para a chave |
SET key value expire |
Define um valor com tempo de expiração |
GET key |
Retorna o valor associado à chave |
DEL key |
Remove uma chave |
AUTH user password |
Autentica o usuário com a senha |
USE database |
Especifica qual banco de dados será utilizado |
KEYS |
Lista todas as chaves registradas |
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests. Agradecemos qualquer tipo de contribuição para tornar o CMR Cache melhor para todos.
- Faça um fork do repositório.
- Crie uma branch para sua feature (
git checkout -b feat/minha-feature
). - Commit suas mudanças (
git commit -m 'feat: Adiciona nova feature'
). - Envie seu código para o repositório (
git push origin feat/minha-feature
). - Abra um Pull Request.
Este projeto está licenciado sob a MIT License.