Giter VIP home page Giter VIP logo

redis-all's Introduction

Redis-all

本项目Redis-all为Redis各类实战的案例合集,持续迭代中,目前包含特性如下:

  • 基于Redis+Token,整合验证码,实现登录注册、权限校验、Token续期、session共享
  • 缓存穿透解决方案(回种空值)
  • 缓存击穿解决方案(逻辑过期)
  • 缓存雪崩解决方案(过期时间离散化)
  • 缓存预热与缓存构建
  • 基于 INCR 实现分布式id(32位时间戳 + 32位序列号)
  • 分布式锁(SET lockName lockOwner EX 10 NX)
    • 解决线程故障,无法释放锁(TTL)
    • 解决其他线程误释放锁
      • 线程误删(UUID+threadId)
      • 查询与删除非原子性操作(Lua 脚本)
    • 缺陷
      • 不可重入
      • 不可重试(阻塞)
      • 超时释放(业务执行过长,锁却已经释放)
      • 主从一致性
  • Redisson
    • 分布式锁(可重、可重试、超时释放、主从一致性)
    • watch dog(看门狗机制自动续期)
    • RedLock
  • 秒杀(超卖、一人一单)
  • 同步版本
    • 乐观锁
      • version版本号(stock > 0):成功率低
      • CAS
    • 悲观锁
      • synchronized
      • select... for update
  • 异步版本
    • Redisson分布式锁
    • BlockQueue阻塞队列
    • ThreadPoolExecutor线程池
    • Lua脚本
      • Set解决一人一单
      • Incr库存扣减
      • 防止超卖
  • 消息队列
    • List
    • Pub/Sub
      • 消息无法持久化
    • Stream
      • 消息可回溯
      • 一个消息可以被多个消费者消费
      • 可以阻塞读取
      • 有消息漏读的风险
  • Set
    • 点赞、取消点赞
  • ZSet
    • 排行榜
    • 唯一值判断
  • Set
    • 关注和取关

技术选型

  • 基础框架
    • SpringBoot
    • SpringMVC
    • Spring
  • Web服务器
    • Nginx
    • Tomcat
  • 缓存组件
    • Redis
    • SpringDataRedis
  • 数据库
    • Mysql
    • Mybatis + Mybatis-Plus
  • 工具
    • Docker
    • Maven
    • PostMan

Startup

  • 导入数据库,SQL文件在如下目录
    • src/main/resources/db/redis-all.sql
    • 尽量使用MySQL8.0以上版本(推荐Docker安装)
  • 启动Redis实例
    • 物理机安装
    • Docker
docker pull redis:6.2.7

docker run -itd -p 6379:6379 \
           -v /home/lions7/projects/sadc/redis/data:/data \
           --restart always \
           --name redis \
           redis
  • Maven导入依赖,具体依赖详见pom.xml
  • 配置 src/main/resources/application.yaml 文件中Redis实例地址与Mysql实例地址
  • banner可通过更换src/main/resources/banner.txt替换,主要为了好看

redis-all's People

Contributors

lsun0717 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.