首页 > 解决方案 > 如何在 Laravel 中使用原子锁?

问题描述

我有一些实体和用户。该实体只能由一个用户处理。因此,如果用户对该实体进行了 GET 请求,它将在一段时间内“连接”到他。

我发现我可以为这个东西使用缓存,但是关于原子锁的解释对我来说不清楚,有人可以帮忙举一个简单的例子来演示使用吗?

标签: laravelcachingredis

解决方案


这是我最近实施的:

    try {
        // Trying to acquiring lock.
        // If lock is already acquired, waiting 5 seconds to try again.
        Cache::lock($key)->block(5);
    } catch (LockTimeoutException $e) {
        // Unable to acquire lock, can't cache the token
        return;
    }

    // Lock acquired, caching the token
    Cache::put($key, $token, 1);

为了测试这一点,我们使用了 2 台设备以同一用户身份登录并同时发出相同的请求。希望这可以帮助。


推荐阅读