PHP code example of nermif / php-redis-stock

1. Go to this page and download the library: Download nermif/php-redis-stock library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

nermif / php-redis-stock example snippets


$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$manager = new RedisStockSalesManager($redis, '{shop}:');

// 初始化库存
$manager->initStocks(['PHONE' => 100, 'CASE' => 200], 3600);

// 购买下单(原子扣减库存 + 记录销售)
$result = $manager->purchase('PHONE', 'user_123', 1, 99900, 'ORDER_001');
if ($result['success']) {
    echo "购买成功,剩余库存:" . $manager->getStock('PHONE')['data']['stock'];
} else {
    echo "失败:" . $result['message'];
}

// 取消订单(原子回滚库存 + 销售)
$manager->cancel('PHONE', 1, 99900, 'ORDER_001');

[
    'success' => bool,      // code 是否为 CODE_SUCCESS
    'code'    => int,       // 状态码
    'message' => string,    // 可读描述
    'data'    => mixed,     // 方法特有数据
]

// 批量扣减(原子:全成功或全失败)
$stockManager = new RedisStock($redis, '{shop}:');
    $res = $stockManager->decrMultiStocks(['SKU_A' => 2, 'SKU_B' => 1]);
    if ($res['success']) {
        foreach ($res['remain'] as $sku => $remain) {
            echo "$sku 剩余 $remain\n";
        }
    }
}

// 销售记录与排行榜
$salesManager = new RedisSales($redis, '{shop}:');
$salesManager->getSalesLeaderboard(0, 9);
$salesManager->getUserPurchases('user_123');

// 在 AppServiceProvider 中注册
$this->app->singleton(RedisStockSalesManager::class, function ($app) {
    $redis = $app['redis']->connection()->client();
    return new RedisStockSalesManager($redis, '{shop}:', $app['log']);
});

// 控制器中依赖注入即可
public function buy(RedisStockSalesManager $manager, Request $request) {
    return $manager->purchase(...);
}

$redis = \think\facade\Cache::store('redis')->handler();
$manager = new \Nermif\RedisStockSalesManager($redis, '{mall}:');
bash
composer 
bash
php examples/facade_usage.php