<?php
/*----------------- 常量定义*/
define('USER', 'user:');
define('INVENTORY', 'inventory:');
define('MARKET', 'market');
/*----------------- 公共方法*/
function log_($message)
{
printf($message.PHP_EOL);
sleep(1);
}
function can_buy($handler, $buyer, $item)
{
$isItem = $handler->zScore(MARKET, $item);
if(false === $isItem) {
return false;
}
$money = $isItem;
$bar = $handler->hget(USER.$buyer, 'funds');
if($bar < $money) {
return false;
}
return $money;
}
function can_sell($handler, $user, $item)
{
return $handler->sIsMember(INVENTORY.$user, $item);
}
/*----------------- 使用watch来实现加锁的功能*/
$redis = new Redis();
try{
$redis->connect('127.0.0.1', 6379, 1, NULL, 100);
} catch (Exception $e) {
die('redis connect fail! '.$e->getMessage().PHP_EOL);
}
/**
* &
redis--分布式锁; watch实现[php]
最新推荐文章于 2023-05-31 20:55:34 发布
本文介绍了如何在Redis中实现分布式锁,并提供了PHP的实现示例。通过两个不同的shell命令,分别展示买家和卖家如何使用分布式锁进行操作。代码包含详细注释,解释了逻辑流程,函数使用可参考phpredis库。
摘要由CSDN通过智能技术生成