sectasy0/zcached
Lightweight and efficient in-memory caching system akin to databases like Redis.
Welcome to zcached
, a nimble and efficient in-memory caching system resembling databases like Redis. This README acts as a comprehensive guide, aiding in comprehension, setup, and optimal utilization.
zcached
aims to offer rapid, in-memory caching akin to widely-used databases such as Redis. Its focus lies in user-friendliness, efficiency, and agility, making it suitable for various applications requiring swift data retrieval and storage.
Crafted using Zig, a versatile, modern, compiled programming language, zcached
prides itself on a zero-dependency architecture. This unique feature enables seamless compilation and execution across systems equipped with a Zig compiler, ensuring exceptional portability and deployment ease.
zcached
boasts a small memory footprint and minimal CPU usage, optimizing performance while conserving resources.zcached
ensures prompt operations to cater to diverse application needs.While zcached
lacks a CLI, you can utilize nc (netcat) from the terminal to send commands to the server.
Set a key to hold the string value. If key already holds a value, it is overwritten, regardless of its type.
echo "*3\r\n\$3\r\nSET\r\n\$9\r\nmycounter\r\n:42\r\nx03" | netcat -N localhost 7556
echo "*3\r\n\$3\r\nSET\r\n\$9\r\nmycounter\r\n%2\r\n+first\r\n:1\r\n+second\r\n:2\r\nx03" | netcat -N localhost 7556
*3\r\n
- number of elements in the array (commands are always arrays)\$3\r\nSET\r\n
- $3
denotes the following string as 3 bytes long, SET is the command\$9\r\nmycounter\r\n
- $9
means that the next string is 9 bytes long, mycounter
is the key:42\r\n
- :
indicates the next string is a number, 42
is the valueRetrieve the value of a key. If the key doesn’t exist, -not found
is returned. GET only accepts strings as keys.
echo "*2\r\n\$3\r\nGET\r\n\$9\r\nmycounter\r\n\x03" | netcat -N localhost 7556
Returns PONG
. This command is often used to test if a connection is still alive, or to measure latency.
echo "*1\r\n\$4\r\nPING\r\n\x03" | netcat -N localhost 7556
Run the tests using zig
in the root directory of the project:
zig build test
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.