56 lines
1.5 KiB
Markdown
56 lines
1.5 KiB
Markdown
# Redis Server Package
|
|
|
|
A lightweight, in-memory Redis-compatible server implementation in Go. This package provides a Redis-like server that can be embedded in your Go applications.
|
|
|
|
## Features
|
|
|
|
- Supports both TCP and Unix socket connections
|
|
- In-memory data storage with key expiration
|
|
- Implements common Redis commands
|
|
- Thread-safe operations
|
|
- Automatic cleanup of expired keys
|
|
|
|
## Supported Commands
|
|
|
|
The server implements the following Redis commands:
|
|
|
|
- Basic: `PING`, `SET`, `GET`, `DEL`, `KEYS`, `EXISTS`, `TYPE`, `TTL`, `INFO`, `INCR`
|
|
- Hash operations: `HSET`, `HGET`, `HDEL`, `HKEYS`, `HLEN`
|
|
- List operations: `LPUSH`, `RPUSH`, `LPOP`, `RPOP`, `LLEN`, `LRANGE`
|
|
- Cursor-based iteration: `SCAN`, `HSCAN`
|
|
|
|
## Usage
|
|
|
|
### Basic Usage
|
|
|
|
```go
|
|
import "github.com/freeflowuniverse/heroagent/pkg/redisserver"
|
|
|
|
// Create a new server with default configuration
|
|
server := redisserver.NewServer(redisserver.ServerConfig{
|
|
TCPPort: "6379", // TCP port to listen on
|
|
UnixSocketPath: "/tmp/redis.sock" // Unix socket path (optional)
|
|
})
|
|
|
|
// The server starts automatically and runs in background goroutines
|
|
```
|
|
|
|
### Connecting to the Server
|
|
|
|
You can connect to the server using any Redis client. For example, using the `go-redis` package:
|
|
|
|
```go
|
|
import "github.com/redis/go-redis/v9"
|
|
|
|
// Connect via TCP
|
|
client := redis.NewClient(&redis.Options{
|
|
Addr: "localhost:6379",
|
|
})
|
|
|
|
// Or connect via Unix socket
|
|
unixClient := redis.NewClient(&redis.Options{
|
|
Network: "unix",
|
|
Addr: "/tmp/redis.sock",
|
|
})
|
|
```
|