pardnchiu/redis-cli

Lightweight PHP Redis client supporting cache operations, automatic connection management, and complete Redis functionality. Built on native Redis extension, providing stable and reliable cache operation experience.

v1.0.0 2025-08-24 09:03 UTC

This package is auto-updated.

Last update: 2025-08-24 09:06:38 UTC


README

Lightweight PHP Redis client supporting cache operations, automatic connection management, and complete Redis functionality.
Built on native Redis extension, providing stable and reliable cache operation experience.

packagist version license
readme readme

Three Core Features

Automatic Connection Management

Intelligent connection pool management, automatically establishes and maintains Redis connections, supports persistent connections for improved performance

Multi-Database Support

Flexible database selection mechanism, supports Redis multi-database operations to meet different business scenario requirements

Stable Connection

Built-in retry mechanism and error handling, ensuring reliability in unstable network environments

Features

  • Environment Variable Configuration: Flexible environment variable settings, supports multi-environment deployment
  • Persistent Connections: Uses persistent connections to improve performance and reduce connection overhead
  • Automatic Retry: Built-in retry mechanism handles network fluctuations and temporary connection failures
  • Complete Redis Operations: Supports Redis data types including strings, hashes, lists, sets, etc.
  • Multi-Database Support: Supports Redis multi-database operations, flexible management of different business data
  • Security Authentication: Supports password authentication to ensure connection security
  • Stateless Design: Automatic connection management and cleanup

Usage

Installation

composer require pardnchiu/redis-cli

Environment Configuration

REDIS_HOST=localhost      # Redis host address
REDIS_PORT=6379           # Redis port
REDIS_PASSWORD=your_pass  # Redis password (optional)

Basic Usage

<?php

use pardnchiu\RDB;

// Initialize client
$redis = new RDB();

// Basic string operations
$redis->set(0, "user:123", "John Doe", 3600);  // Set value with expiration
$user = $redis->get(0, "user:123");            // Get value

// Check connection status
if ($redis->isConnected()) {
    echo "Redis connection is normal";
}

// Counter operations
$redis->incr(0, "page_views");
$redis->decr(0, "stock_count");

API Reference

Basic Operations

  • get($db, $key) - Get string value

    $value = $redis->get(0, "user:123");
  • set($db, $key, $content, $expire = null) - Set string value

    $redis->set(0, "session:abc", $data, 1800);  // 30 minutes expiration
    $redis->set(1, "config:app", $config);        // Never expires
  • exists($db, $key) - Check if key exists

    if ($redis->exists(0, "user:123")) {
        echo "User exists";
    }
  • delete($db, $key) - Delete key

    $redis->delete(0, "temp:data");
  • ttl($db, $key) - Get expiration time

    $seconds = $redis->ttl(0, "session:abc");
  • keys($db, $pattern) - Search key names

    $userKeys = $redis->keys(0, "user:*");

Hash Operations

// Set hash field
$redis->hset(0, "user:123", "name", "John Doe", 3600);
$redis->hset(0, "user:123", "email", "john@example.com");

// Get hash field
$name = $redis->hget(0, "user:123", "name");

// Get all hash data
$userData = $redis->hgetall(0, "user:123");

List Operations

// Push to list (left/right side)
$redis->lpush(0, "tasks", "New Task", 3600);
$redis->rpush(0, "logs", "Log Message");

// Pop list elements
$task = $redis->lpop(0, "tasks");
$log = $redis->rpop(0, "logs");

// Get list length
$length = $redis->llen(0, "tasks");

Set Operations

// Add set members
$redis->sadd(0, "tags", "php", 3600);
$redis->sadd(0, "tags", "redis");

// Remove set member
$redis->srem(0, "tags", "old_tag");

// Get all members
$tags = $redis->smembers(0, "tags");

// Check member existence
if ($redis->sismember(0, "tags", "php")) {
    echo "Contains PHP tag";
}

// Set operations
$common = $redis->sinter(0, ["tags:user1", "tags:user2"]);  // Intersection
$all = $redis->sunion(0, ["tags:user1", "tags:user2"]);     // Union
$diff = $redis->sdiff(0, ["tags:user1", "tags:user2"]);     // Difference

Management Operations

// Batch operations
$values = $redis->mget(0, ["key1", "key2", "key3"]);
$redis->mset(0, ["key1" => "value1", "key2" => "value2"]);

// Numeric operations
$redis->incr(0, "counter");         // Increment by 1
$redis->decr(0, "stock");           // Decrement by 1
$redis->append(0, "log", "New content"); // Append string

// Clear database
$redis->flushdb(0);

// Get server info
$info = $redis->info();

Error Handling

try {
    $redis = new RDB();
    
    // Redis operations
    $result = $redis->set(0, "user:123", $userData, 3600);
    
    if ($result) {
        echo "Data saved successfully";
    } else {
        echo "Data save failed";
    }
    
} catch (\Exception $e) {
    // Connection error handling
    error_log("Redis error: " . $e->getMessage());
    
    if (strpos($e->getMessage(), "Connection refused") !== false) {
        echo "Redis server is not running";
    } elseif (strpos($e->getMessage(), "Authentication") !== false) {
        echo "Redis authentication failed, please check password";
    } else {
        echo "Redis operation exception, please try again later";
    }
}

Connection Status Check

$redis = new RDB();

// Check connection status
if (!$redis->isConnected()) {
    // Handle connection failure
    error_log("Redis connection failed, using fallback solution");
    
    // Can use other cache solutions or directly query database
    return $this->fallbackCache($key);
}

// Normal Redis usage
$data = $redis->get(0, $key);

Performance Monitoring

// Monitor connection status
$info = $redis->info();
if ($info) {
    $connectedClients = $info['connected_clients'] ?? 0;
    $usedMemory = $info['used_memory_human'] ?? '0B';
    
    error_log("Redis status - Connections: {$connectedClients}, Memory usage: {$usedMemory}");
}

License

This project is licensed under the MIT License.

Author

邱敬幃 Pardn Chiu

©️ 2024 邱敬幃 Pardn Chiu