|
28 | 28 | <meta property="og:description" content="分布式锁 Redission 使用原生Redis设置锁的问题: 服务器拿到锁后宕机,锁不能释放,导致阻塞。 设置锁失效时间可以解决上面的问题,但是会导致新的问题: 设置锁失效时间,在服务器负载过高的时候,会发生锁失效业务还没完成的情况,导致业务代码不互斥。 0信任:不要期待网络服务器按照理想情况运行。 使用Redission自动为锁续命,可以解决上述问题。 String lockKey"> |
29 | 29 | <meta property="og:locale" content="zh_CN"> |
30 | 30 | <meta property="article:published_time" content="2024-10-26T16:00:00.000Z"> |
31 | | -<meta property="article:modified_time" content="2025-04-28T03:09:45.918Z"> |
| 31 | +<meta property="article:modified_time" content="2025-08-14T00:53:50.267Z"> |
32 | 32 | <meta property="article:author" content="SIMULEITE"> |
33 | 33 | <meta property="article:tag" content="基本操作"> |
34 | 34 | <meta name="twitter:card" content="summary"> |
|
141 | 141 | <div class="sidebar-panel-container"> |
142 | 142 | <!--noindex--> |
143 | 143 | <div class="post-toc-wrap sidebar-panel"> |
144 | | - <div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81"><span class="nav-text"> 分布式锁</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#redission"><span class="nav-text"> Redission</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%AB%98%E6%80%A7%E8%83%BD%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E5%88%86%E6%AE%B5%E9%94%81"><span class="nav-text"> 高性能分布式锁:分段锁</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C"><span class="nav-text"> 基本操作</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#general"><span class="nav-text"> General</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#string"><span class="nav-text"> String</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#hash"><span class="nav-text"> Hash</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#list"><span class="nav-text"> List</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%85%B8%E5%9E%8B%E5%9C%BA%E6%99%AF"><span class="nav-text"> 典型场景</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E6%A0%88"><span class="nav-text"> 栈</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E8%AE%A2%E9%98%85%E6%B6%88%E6%81%AF"><span class="nav-text"> 订阅消息</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#set"><span class="nav-text"> Set</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%85%B8%E5%9E%8B%E5%9C%BA%E6%99%AF-2"><span class="nav-text"> 典型场景</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E6%8A%BD%E5%A5%96"><span class="nav-text"> 抽奖</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E7%82%B9%E8%B5%9E-%E6%94%B6%E8%97%8F-%E6%A0%87%E7%AD%BE"><span class="nav-text"> 点赞、收藏、标签</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%85%B3%E6%B3%A8-%E5%95%86%E5%93%81%E7%AD%9B%E9%80%89"><span class="nav-text"> 关注、商品筛选</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#sorted-set-zset"><span class="nav-text"> Sorted Set / ZSet</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%85%B8%E5%9E%8B%E5%9C%BA%E6%99%AF-3"><span class="nav-text"> 典型场景</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E6%97%A5%E6%9C%88%E5%B9%B4%E7%83%AD%E7%82%B9%E6%8E%92%E8%A1%8C%E6%A6%9C"><span class="nav-text"> 日/月/年热点排行榜</span></a></li></ol></li></ol></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#redis-for-java"><span class="nav-text"> Redis for Java</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#redis-data-redis"><span class="nav-text"> Redis Data Redis</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%8C%81%E4%B9%85%E5%8C%96"><span class="nav-text"> 持久化</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#rdb"><span class="nav-text"> RDB</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#aof"><span class="nav-text"> AOF</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%BA%8B%E5%8A%A1"><span class="nav-text"> 事务</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%B9%90%E8%A7%82%E9%94%81"><span class="nav-text"> 乐观锁</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%85%B8%E5%9E%8B%E5%9C%BA%E6%99%AF-4"><span class="nav-text"> 典型场景</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%AF%B9%E8%B1%A1%E7%BC%93%E5%AD%98"><span class="nav-text"> 对象缓存</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81-2"><span class="nav-text"> 分布式锁</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%AE%A1%E6%95%B0%E5%99%A8"><span class="nav-text"> 计数器</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#web%E9%9B%86%E7%BE%A4%E5%85%B1%E4%BA%ABsession"><span class="nav-text"> Web集群共享session</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%85%A8%E5%B1%80%E5%BA%8F%E5%88%97%E5%8F%B7"><span class="nav-text"> 分布式系统全局序列号</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#scan-%E6%B5%81%E5%BC%8F%E9%81%8D%E5%8E%86"><span class="nav-text"> Scan 流式遍历</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#redis-lua"><span class="nav-text"> Redis Lua</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E7%BC%93%E5%AD%98"><span class="nav-text"> 缓存</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%93%E5%AD%98%E7%A9%BF%E9%80%8F"><span class="nav-text"> 缓存穿透</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88"><span class="nav-text"> 解决方案</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#redission%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8"><span class="nav-text"> Redission布隆过滤器</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%93%E5%AD%98%E5%A4%B1%E6%95%88"><span class="nav-text"> 缓存失效</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88-2"><span class="nav-text"> 解决方案</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%93%E5%AD%98%E9%9B%AA%E5%B4%A9"><span class="nav-text"> 缓存雪崩</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88-3"><span class="nav-text"> 解决方案</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%93%E5%AD%98%E5%8F%8C%E5%86%99%E4%B8%80%E8%87%B4%E6%80%A7"><span class="nav-text"> 缓存双写一致性</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88-4"><span class="nav-text"> 解决方案</span></a></li></ol></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E8%A7%84%E8%8C%83"><span class="nav-text"> 规范</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%94%AE%E5%80%BC%E8%AE%BE%E8%AE%A1"><span class="nav-text"> 键值设计</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BC%98%E5%8C%96bigkey"><span class="nav-text"> 优化BigKey</span></a></li></ol></li></ol></div> |
| 144 | + <div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81"><span class="nav-text"> 分布式锁</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#redission"><span class="nav-text"> Redission</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%AB%98%E6%80%A7%E8%83%BD%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E5%88%86%E6%AE%B5%E9%94%81"><span class="nav-text"> 高性能分布式锁:分段锁</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C"><span class="nav-text"> 基本操作</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#general"><span class="nav-text"> General</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#string"><span class="nav-text"> String</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#hash"><span class="nav-text"> Hash</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#list"><span class="nav-text"> List</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%85%B8%E5%9E%8B%E5%9C%BA%E6%99%AF"><span class="nav-text"> 典型场景</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E6%A0%88"><span class="nav-text"> 栈</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E8%AE%A2%E9%98%85%E6%B6%88%E6%81%AF"><span class="nav-text"> 订阅消息</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#set"><span class="nav-text"> Set</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%85%B8%E5%9E%8B%E5%9C%BA%E6%99%AF-2"><span class="nav-text"> 典型场景</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E6%8A%BD%E5%A5%96"><span class="nav-text"> 抽奖</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E7%82%B9%E8%B5%9E-%E6%94%B6%E8%97%8F-%E6%A0%87%E7%AD%BE"><span class="nav-text"> 点赞、收藏、标签</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%85%B3%E6%B3%A8-%E5%95%86%E5%93%81%E7%AD%9B%E9%80%89"><span class="nav-text"> 关注、商品筛选</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#sorted-set-zset"><span class="nav-text"> Sorted Set / ZSet</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%85%B8%E5%9E%8B%E5%9C%BA%E6%99%AF-3"><span class="nav-text"> 典型场景</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E6%97%A5%E6%9C%88%E5%B9%B4%E7%83%AD%E7%82%B9%E6%8E%92%E8%A1%8C%E6%A6%9C"><span class="nav-text"> 日/月/年热点排行榜</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%AE%9E%E6%97%B6%E7%83%AD%E5%8D%96%E6%8E%92%E8%A1%8C%E6%A6%9C"><span class="nav-text"> 实时热卖排行榜</span></a></li></ol></li></ol></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#redis-for-java"><span class="nav-text"> Redis for Java</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#redis-data-redis"><span class="nav-text"> Redis Data Redis</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%8C%81%E4%B9%85%E5%8C%96"><span class="nav-text"> 持久化</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#rdb"><span class="nav-text"> RDB</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#aof"><span class="nav-text"> AOF</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%BA%8B%E5%8A%A1"><span class="nav-text"> 事务</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%B9%90%E8%A7%82%E9%94%81"><span class="nav-text"> 乐观锁</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%85%B8%E5%9E%8B%E5%9C%BA%E6%99%AF-4"><span class="nav-text"> 典型场景</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%AF%B9%E8%B1%A1%E7%BC%93%E5%AD%98"><span class="nav-text"> 对象缓存</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81-2"><span class="nav-text"> 分布式锁</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%AE%A1%E6%95%B0%E5%99%A8"><span class="nav-text"> 计数器</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#web%E9%9B%86%E7%BE%A4%E5%85%B1%E4%BA%ABsession"><span class="nav-text"> Web集群共享session</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%85%A8%E5%B1%80%E5%BA%8F%E5%88%97%E5%8F%B7"><span class="nav-text"> 分布式系统全局序列号</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#scan-%E6%B5%81%E5%BC%8F%E9%81%8D%E5%8E%86"><span class="nav-text"> Scan 流式遍历</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#redis-lua"><span class="nav-text"> Redis Lua</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E7%BC%93%E5%AD%98"><span class="nav-text"> 缓存</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%93%E5%AD%98%E7%A9%BF%E9%80%8F"><span class="nav-text"> 缓存穿透</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88"><span class="nav-text"> 解决方案</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#redission%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8"><span class="nav-text"> Redission布隆过滤器</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%93%E5%AD%98%E5%A4%B1%E6%95%88"><span class="nav-text"> 缓存失效</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88-2"><span class="nav-text"> 解决方案</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%93%E5%AD%98%E9%9B%AA%E5%B4%A9"><span class="nav-text"> 缓存雪崩</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88-3"><span class="nav-text"> 解决方案</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BC%93%E5%AD%98%E5%8F%8C%E5%86%99%E4%B8%80%E8%87%B4%E6%80%A7"><span class="nav-text"> 缓存双写一致性</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88-4"><span class="nav-text"> 解决方案</span></a></li></ol></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E8%A7%84%E8%8C%83"><span class="nav-text"> 规范</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E9%94%AE%E5%80%BC%E8%AE%BE%E8%AE%A1"><span class="nav-text"> 键值设计</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BC%98%E5%8C%96bigkey"><span class="nav-text"> 优化BigKey</span></a></li></ol></li></ol></div> |
145 | 145 | </div> |
146 | 146 | <!--/noindex--> |
147 | 147 |
|
@@ -223,7 +223,7 @@ <h1 class="post-title" itemprop="name headline"> |
223 | 223 | <i class="far fa-calendar-check"></i> |
224 | 224 | </span> |
225 | 225 | <span class="post-meta-item-text">更新于</span> |
226 | | - <time title="修改时间:2025-04-28 11:09:45" itemprop="dateModified" datetime="2025-04-28T11:09:45+08:00">2025-04-28</time> |
| 226 | + <time title="修改时间:2025-08-14 08:53:50" itemprop="dateModified" datetime="2025-08-14T08:53:50+08:00">2025-08-14</time> |
227 | 227 | </span> |
228 | 228 |
|
229 | 229 |
|
@@ -297,6 +297,12 @@ <h2 id="sorted-set-zset"><a class="markdownIt-Anchor" href="#sorted-set-zset"></ |
297 | 297 | <h3 id="典型场景-3"><a class="markdownIt-Anchor" href="#典型场景-3"></a> 典型场景</h3> |
298 | 298 | <h4 id="日月年热点排行榜"><a class="markdownIt-Anchor" href="#日月年热点排行榜"></a> 日/月/年热点排行榜</h4> |
299 | 299 | <figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># 记录浏览量</span><br><span class="line">ZINCRBY hotNews:{date} 1 {news_id}</span><br><span class="line"># Top 10</span><br><span class="line">ZREVRANGE hotNews:{date} 0 9 WITHSCORES</span><br><span class="line"># Recent 7 days</span><br><span class="line">ZUNIONSTORE hotNews:{start_date}-{end_date} 0 9 WITHSCORES</span><br></pre></td></tr></table></figure> |
| 300 | +<h4 id="实时热卖排行榜"><a class="markdownIt-Anchor" href="#实时热卖排行榜"></a> 实时热卖排行榜</h4> |
| 301 | +<p>• <strong>架构</strong>:</p> |
| 302 | +<ul> |
| 303 | +<li>埋点→Kafka→Flink→Redis ZSet(incrby)。</li> |
| 304 | +<li>滑动窗口TopN,增量更新。</li> |
| 305 | +</ul> |
300 | 306 | <h1 id="redis-for-java"><a class="markdownIt-Anchor" href="#redis-for-java"></a> Redis for Java</h1> |
301 | 307 | <ul> |
302 | 308 | <li>Jedis (Official Recommand)</li> |
|
0 commit comments