zoukankan      html  css  js  c++  java
  • redis-分布式锁-刷新信号量

    为什么需要刷新信号量呢,因为信号量有过期时间;

    为什么信号量需要过期时间呢,因为需要利用超时特性,解决分布式锁存在的一些固有缺陷。

    而对于类似流式API来说,一般10秒的过期时间是远远不够的。因此我们需要对信号量进行刷新,以防止其过期。

    因为公平信号量区分开了“超时有序集合”和“信号量拥有者有序集合”,所以程序只需要对超时有序集合进行更新就可以立即刷新信号量的超时时间了。

    程序结构如下:

    def refresh_fair_semaphore(conn,semname,identifier);

      if conn.zadd(semname,identifier,time.time())://更新客户端持有的信号量

        release_fair_semaphore(conn,semname,identifier) //刷新失败,释放信号量

        return false;

      return true; //客户端仍持有信号量

  • 相关阅读:
    google
    学习Linux第六天
    对比教学大纲
    周 记
    《世界是数字的》读后感
    《我是一只IT小小鸟》读后感
    前端小知识
    JavaScript 执行机制
    执行栈和任务队列
    支付宝前端员工培训手册
  • 原文地址:https://www.cnblogs.com/jiangtao1218/p/9387819.html
Copyright © 2011-2022 走看看