← 全部专题

Redis 实战笔记

缓存设计、分布式锁、持久化与集群,按踩坑顺序串成一条线。

共 12 篇
  1. 【已解决】在RedisTemplate调用Lua脚本是时候,错误提示:attempt to compare nil with number

    在RedisTemplate调用Lua脚本是时候,错误提示:attempttocomparenilwithnumber。如下图:脚本的第14行,使用了tonumber函数,在执行的时候,报错了。说nil不能和number进行比较。分析错误原因:在tonumber函数中其实,是从Redis中获取缓存key为stockKey的值,然后将其转换成数字之后和0进行比较。因为Redis中,目前还没有stoc

  2. Redis实战12-优惠券实现一人一单功能

    本文收获在上一篇,我们已经把超卖问题解决了。接下来,我们来开发,优惠券一人一单功能。通过本文学习,您将有如下收获:1:悲观锁、乐观锁的使用场景;2:synchronized关键字,在不同位置,锁的颗粒度是不同的,怎么优化呢;3:toString方法之后,不能保证唯一,如果要保证唯一,需要在调用String的intern方法;4:对spring事务有更深入了解-解决spring事务失效一种情况;5:

  3. Redisson 工作原理-源码分析

    1:Redisson是什么个人理解:一种可重入、持续阻塞、独占式的分布式锁协调框架,可从ReentrantLock去看它。①:可重入拿到锁的线程后续拿锁可跳过获取锁的步骤,只进行value+1的步骤。②:持续阻塞获取不到锁的线程,会在一定时间内等待锁。日常开发中,应该都用过redis的setnx进行分布式的操作吧,那setnx返回了false我们第一时间是不是就结束了?因此redisson优化了这

  4. Redis实战11-实现优惠券秒杀下单

    本篇,咱们来实现优惠券秒杀下单功能。通过本篇学习,我们将会有如下收获:1:优惠券领券业务逻辑;2:分析在高并发情况下,出现超卖问题产生的原因;3:解决超卖问题两种方案:版本号法及CAS法4:乐观锁弊端改进方案;本文涉及内容比较多,篇幅会比较长,同时有大量截图。希望大家能耐心看完。好了,话不对说,咱们开始gogogo~一:基本的秒杀实现下单时候需要判断:1:秒杀是否开始或结束,如果尚未开始或者已经结

  5. Redis面试题总结

    参考https://blog.csdn.net/zdp072/article/details/50991116https://blog.csdn.net/qq_34337272/article/details/80012284#commentBox坑人无数的Redis面试题(未整理,写的很棒,超出了理论范围,结合实际中的问题,给出不错的解决方案) https://blog.csdn.ne

  6. Redis面试篇 -- Redis主从复制原理

    Redis一般是用来支撑读高并发的,为了分担读压力,Redis支持主从复制。架构是主从架构,一主多从,主负责写,并且将数据复制到其它的slave节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松实现水平扩容,支撑读高并发。 redis主从复制的特点:redis采用异步方式复制数据到slave节点,从redis2.8开始,slave节点会周期性地确认自己每次复制的数据量;一个m

  7. LRU的理解与Java实现

    简介LRU(LeastRecentlyUsed)直译为“最近最少使用”。其实很多老外发明的词直译过来对于我们来说并不是特别好理解,甚至有些词并不在国人的思维模式之内,比如快速排序中的Pivot,模拟信号中的Analog等等。笔者认为最好的理解方式就是看他诞生的原因,看这个概念的出现如何一步一步演变为现在的样子。假如说你自己对某个问题想到了一个解决办法,于是你按照语义给他起了个名字,假如你直接将这个

  8. Redis常见数据结构使用场景

    String常用命令: set,get,decr,incr,mget 等。1String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。常规key-value缓存应用;计数功能的缓存:微博数,粉丝数等。6.2Hash常用命令: hget,hset,hgetall 等。1Hash是一个string类型的field和v

  9. 【已解决】Redis分片集群在缩容的时候,执行删除节点命令提示:is not empty! Reshard data away and try again

    Redis分片集群,扩容之后,需要进行缩容,在执行删除节点命令命令的时候,提示如下错误:isnotempty!Resharddataawayandtryagain提示[ERR]Node127.0.0.1:7004isnotempty!Resharddataawayandtryagain.说明,当前该节点还有哈希槽信息,我们需要重哈希移走所有的数据才行,接下来执行操作删除节点操作。这里顺便说下,删除

  10. redis击穿,穿透,雪崩以及解决方案

    1击穿:指的是单个key在缓存中查不到,去数据库查询,这样如果数据量不大或者并发不大的话是没有什么问题的。  如果数据库数据量大并且是高并发的情况下那么就可能会造成数据库压力过大而崩溃注意:这里指的是单个key发生高并发!!!解决方案: 1)通过synchronized+双重检查机制:某个key只让一个线程查询,阻塞其它线程   在同步块