首页 > 数据库 >Java面试-Redis篇(二)

Java面试-Redis篇(二)

时间:2024-09-25 16:18:54浏览次数:3  
标签:Java lock Redis 面试 集群 话术 分布式

分布式锁

抢劵场景

分布式锁使用

集群分布式锁使用

代码展示

setnx实现分布式锁

Redis实现分布式锁主要利用Redis的setnx命令。setnx是SET if not exists(如果不存在,则 SET)的简写。

redisson给锁续期

代码实现
public void redisLock() throws InterruptedException {
    //获取锁(重入锁),执行锁的名称
    RLock lock=redissonClient.getLock("testlock");
    //尝试获取锁,参数分别是:获取锁的最大等待时间(期间会重试),锁自动释放时间,时间单位
    //boolean isLock=lock.tryLock(10,30,TimeUnit.SECONDS);10为锁等待时间,30为锁失效时间
    boolean isLock = lock.tryLock(10, TimeUnit.SECONDS);
    //判断是否获取成功
    if(isLock){
        try {
            System.out.println("执行业务");
        } finally {
            //释放锁
            lock.unlock();
        }
    }
}

加锁、设置过期时间等操作都是基于lua脚本完成(回答此问题时提一嘴)

利用hash结构记录线程id和重入次数

redisson实现的分布式锁-主从一致性

RedLock(红锁):不能只在一个redis实例上创建锁,应该是在多个redis实例上创建锁(n/2+ 1),避免在一个redis实例上加锁。

面试话术

主从复制、主从同步

主从复制(主从集群)

全量同步

增量同步

面试话术

哨兵模式

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。

Redis集群脑裂

通过修改以下配置可以避免数据的丢失:

面试话术

分片集群

分片集群结构

面试话术

Redis其他面试问题

标签:Java,lock,Redis,面试,集群,话术,分布式
From: https://blog.csdn.net/neckcase/article/details/142494174

相关文章

  • java+vue计算机毕设X钢材商贸公司网络购销管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网经济的蓬勃兴起,传统钢材商贸行业正面临前所未有的变革与挑战。X钢材商贸公司作为业内的佼佼者,长期以来依赖传统的购销......
  • java+vue计算机毕设爱心宠物中心管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着现代生活节奏的加快和城市化进程的推进,宠物已成为许多家庭不可或缺的重要成员,它们不仅为人们的生活带来了欢乐与陪伴,也促进了人与动物之间的情感......
  • java+vue计算机毕设IE绿色城市垃圾分类监管系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,城市生活垃圾产生量急剧增加,垃圾分类已成为缓解“垃圾围城”困境、促进资源循环利用、实现绿色可持续发展的重要举措。然而,传统......
  • java实现角色及菜单权限
    在Java中实现角色及菜单权限通常涉及几个关键组件:用户(User)、角色(Role)、权限(Permission)以及它们之间的关系。下面我将概述一个基本的实现方案,包括数据库设计和代码层面的处理。1.数据库设计表设计用户表(users)user_id(主键)usernamepassword...角色表(roles)role_id(主键)role_name.......
  • 编译安装redis运行注册服务脚本sh install_server.sh时报错。
    在编译安装redis的时候,运行注册服务脚本shinstall_server.sh时,报错。WelcometotheredisserviceinstallerThisscriptwillhelpyoueasilysetuparunningredisserverThissystemsseemstousesystemd.Pleasetakealookattheprovidedexampleserviceunitfi......
  • 基于java实验室仪器设备管理系统的计算机毕设源码+论文
    摘要实验室仪器设备管理系统是一个基于Internet,采用B/S(Browser/Server,浏览器/服务器模式)模式,并根据现有的实验室仪器设备管理系统的现状而设计开发的服务于实验室仪器设备管理行业网络管理平台。本文以JSP为开发技术,实现了一个实验室仪器设备管理系统。该信息管理系统分为管理员......
  • 微服务2:微服务远程操作Redis
    目录1、本文目标2、Redis简介3、Redis安装及配置4、搭建Redis的客户端微服务5、注册至Eureka服务注册中心6、Redis客户端微服务测试1、本文目标2、Redis简介Redis是一个开源的(BSD许可)、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis支......
  • MySQL SQL基础常见面试题整理
    NOSQL和SQL的区别是什么?SQL数据库是指关系型数据库,主要有:SQLServer,Oracle,MySQL(开源),PostgreSQL(开源)。关系型数据库用于存储结构化数据,这些数据在逻辑上以行和列的二维表形式存在,每一列代表一个数据属性,每一行则代表一个数据实体。NoSQL是指非关系型数据库,主要有MongoDB和......
  • 03.Java方法详解
    1.何谓方法?Java方法是语句的集合,在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:一个方法只完成1个功能,有利于后期扩展定义:类似c++里的函数,是一段用来完成特定功能的代码片段,一般定义......
  • Java 初学 day05
    Javaday051、面对对象1、面对对象和面对过程的区别面对过程思想:代表语言C语言功能开发中的每一步都是自己参与的面对对象思想:代表语言Java语言指的是不断创建对象,指挥对象完成事情的思想2、举例生活中的例子​ 接水:​ 面对过程思想:自己拿水杯,自己走到饮水机前,自......