Redis 线程控制 问题
前言
相关系列
- 《Redis & 目录》
- 《Redis & 线程控制 & 源码》
- 《Redis & 线程控制 & 总结》
- 《Redis & 线程控制 & 问题》
参考文献
- 《Redis分布式锁》
Redis如何实现分布式锁?
Redis是单进程单线程的,指令执行时不会出现并发问题,因此便可通过{SETNX}指令来设置安全的分布式锁标记。{SETNX}指令的作用是在指定键不存在的情况下保存键/值,并返回0/1来表示失败/成功。而在指定键/值成功保存的情况下,由于其它{SETNX}指令不可能再保存相同键,因此成功执行{SETNX}指令的客户端就相当于持有了锁,并可以此实现对目标资源的安全访问。而在结束对目标资源的访问后,成功执行{SETNX}指令的客户端还需要调用{DEL}指令将指定键/值删除,这意味着其已经完成了解锁。
为了避免死锁问题…客户端在调用{SETNX}指令“加锁”最好可以设置合理的过期时间,从而保证锁不会因为主观/客观的原因而无法解开。
什么是红锁?
我们通常所说的红锁是指由Redisson在早期版本中提供的一种在Redis集群环境中使用的锁,相比普通的锁而言其具备更高的容错性。我们知道锁信息是存在丢失可能的,因为无论是持久化机制/主从同步都无法保证数据完全不丢失,故而程序就可能因为锁的异常解锁而出现异常/并发问题,因此Redisson便设计&提供了红锁来避免这一点。
红锁的思想是同时使用多锁来保护单一资源,这样一来即使少数锁信息因为各种原因而丢失,其余依然存在的锁信息也依然能保证锁功能的正常使用。可以很快发现的是红锁在单机/主从部署的Redis中是没有多少使用意义的,因为在这种情况下无论使用了多少锁去组成红锁,其锁信息也都会被统一保存在单个实例/主机中,因为信息一旦丢失也往往是全局性的。但在集群中就完全不一样的,有这些锁信息会被分配到不同的主节点中保存,因此锁信息丢失也仅限于宕机主节点所包含的部分。
随着版本的迭代,作为单一锁类型存在的红锁其实已经被淘汰了,如今的红锁已经转变任意类型锁为通用锁特性。如此改变的原因正如上文所说是为了增强红锁的使用范围,毕竟绝大部分公司的业务体量都无需使用Redis集群来支撑。红锁特性的具体表现是:当线程试图加/解锁任意类型的锁时,如果其操作的目标Redis实例存在任意形式(主从/集群)的从机,那么其只有在主机将锁信息同步至从机后才会返回成功。如此一来其不但维持了足够的安全性;还减少了锁信息的内存开销;当然最重要的还是将红锁的使用范围从集群层面拓展到了主从层面。
相关文章:
Redis 线程控制 问题
前言 相关系列 《Redis & 目录》《Redis & 线程控制 & 源码》《Redis & 线程控制 & 总结》《Redis & 线程控制 & 问题》 参考文献 《Redis分布式锁》 Redis如何实现分布式锁? Redis是单进程单线程的,指令执行时不会…...
005 IP地址的分类
拓扑结构如下 两台主机处于同一个网关下,通过ping命令检测,可以连通 &nbps; 拓扑结构如下 使用ping 检查两台电脑是否相通, 因为网络号不一样,表示两台电脑不在同一个网络,因此无法连通 拓扑结构如下 不在同一网络的PC要相…...
Java 并发工具(12/30)
目录 Java 并发工具 1. Executor 框架 1.1 线程池 1.2 ExecutorService 和 Future 2. 同步辅助类 2.1 CountDownLatch 2.2 Semaphore 3. 并发集合 3.1 ConcurrentHashMap 总结与后续 Java 并发工具 在多线程编程中,高效管理线程和任务至关重要。Java 提供…...
filebeat+elasticsearch+kibana日志分析
1 默认配置 1.1 filebeat filebeat-7.17.yml,从网关中下载k8s的配置,指定es和kibana的配置 通过kibana查询可以查询到日志了,但此时还不知道具体怎么用。 1.2 kibana 在Discover中创建索引格式:filebeat-*,得到如下图…...
Google Recaptcha V2 简单使用
最新的版本是v3,但是一直习惯用v2,就记录一下v2 的简单用法,以免将来忘记了 首先在这里注册你域名,如果是本机可以直接直接填 localhost 或127.0.0.1 https://www.google.com/recaptcha/about/ 这是列子 网站密钥:是…...
Rust编程中的浮点数比较
缘由:在看Rust编写的代码,发现了一行浮点数等于比较的代码,于是编辑如下内容。 在Rust中,进行浮点数比较时需要特别小心,因为浮点数由于精度限制无法精确表示小数,可能会导致直接比较(如 &…...
java访问华为网管软件iMaster NCE的北向接口
最近做的一个项目,需要读取华为一个叫iMaster NCE的网管软件的北向接口。这个iMaster NCE(以下简称NCE)用于管理项目的整个网络,尤其是光网络。业主要求我们访问该软件提供的对外接口,读取一些网络信息,比如…...
UV紫外相机
在产业设备领域,运用相机进行检测的需求很大,应用也很多样,对于图像传感器性能的期望逐年提升。在这样的背景下,可拍摄紫外线(UV:Ultra Violet)图像的相机拥有越来越广泛的应用场景。将UV照明和…...
第十八届联合国世界旅游组织/亚太旅游协会旅游趋势与展望大会在广西桂林开幕
10月19日,第十八届联合国世界旅游组织/亚太旅游协会旅游趋势与展望大会(以下简称“大会”)在广西桂林开幕,来自美国、英国、德国、俄罗斯、柬埔寨等25个国家约120名政府官员、专家学者和旅游业界精英齐聚一堂,围绕“亚洲及太平洋地区旅游业&a…...
Effective Java(第三版) _ 创建和销毁对象
一、前言 《Effective Java》 这本书,在刚从事 Java 开发的时候就被老师推荐阅读过,当时囫囵吞枣的看了一部分,不是特别的理解,也就搁置了,现在已经更新到第三版了,简单翻阅了一下,发现有些条例…...
你的EA无法运行的几种常见原因
大多数情况下,EA正常运行是指其能够自动开仓交易,毕竟EA的主要目的是根据某种策略自动进行交易。如果从网上下载或其他途径获得的EA在开始时能够正常交易,但在修改参数后却不再交易,可能的问题是什么呢?下面列举了一些…...
通过自定义指令实现图片懒加载
前提:使用到了VueUse插件。 先创建自定义插件文件夹 // 定义懒加载插件 import { useIntersectionObserver } from vueuse/core // 这个是VueUse里的一个方法export const lazyPlugin {install(app) {// 懒加载指令逻辑 定义全局指令app.directive(img-lazy, {mo…...
QT项目-仿QQ聊天(带宠物系统)
目录 一,项目介绍 二,开发环境 三,涉及技术 四,项目效果示例图 1,登录界面 2,主界面 3,聊天界面 4,功能界面 5,宠物界面 一,项目介绍 这是一个基于u…...
前端算法题:3216. 交换后字典序最小的字符串(力扣每日一题)
今日题目为:3216. 交换后字典序最小的字符串 题目详情: 给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的字典序最小的字符串。 如果两个数字都是奇数或都是偶数,则…...
29.1 时序监控和日志监控的对比,分析日志监控的核心诉求
本节重点介绍 : 监控系统分类时序监控和日志监控的对比轻量日志监控系统的诉求 监控系统分类 监控系统按照原理和作用大致可以分为三类 日志类(Log)调用链类(Tracing)度量类(Metrics) 日志类(…...
git仓库分支
操作 切换分支 git checkout 1.2.5 git checkout 1.3.0 使用命令切换分支之后,代码内容加载过后也是切换好的...
多模态机器学习在精准健康中的应用--九五小庞
这篇综述文章探讨了将多模态数据融合应用于医疗诊断和预后预测的最新研究进展。 本文作者们确定了三个主要的研究问题:多模态数据融合在健康领域的文献特征是什么?用于分析多模态健康数据的不同分析技术、方法和策略是什么?不同类型的异构数…...
提升网站速度与性能优化的有效策略与实践
内容概要 在数字化快速发展的今天,网站速度与性能优化显得尤为重要,它直接影响用户的浏览体验。用户在访问网站时,往往希望能够迅速获取信息,若加载时间过长,轻易可能导致他们转向其他更为流畅的网站。因此࿰…...
MySQL索引从基础到原理,看这一篇就够了
https://developer.aliyun.com/article/841106 https://zhuanlan.zhihu.com/p/29118331 索引创建使用总结 因为索引对于改善查询性能的作用是巨大的,所以我们的目标是尽量使用索引。 1. 索引的创建 • 1、在用于 where 判断 order 排序和 join 的(on)字段上创…...
普通高考预报名上传蓝底证件照手机自拍方法详解
普通高考预报名过程中,上传一张合规的蓝底证件照是必不可少的一步。本文将详细介绍如何使用手机自拍并使用工具来制作符合要求的蓝底证件照。注意,目前仅有广东等个别省份允许特定类型考生使用自拍照上传(例如普高预报名阶段、学考报名&#…...
Webserver(2.3)exec函数族
目录 exec函数族介绍execl函数execlp函数 exec函数族介绍 c语言中没有重载,因为不允许同名函数 一系列功能相似的函数称为函数族 exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容。 程序在运行的时候,fork一…...
LeetCode Hot100 - 子串篇
前言 挑战一个月刷完力扣的hot100,记录一下每题的思路~ 这次是子串相关的题目 (1)560. 和为 K 的子数组 ①暴力枚举,使用一个变量sum记录以l开头r结尾的情况 class Solution {public int subarraySum(int[] nums, int k) {int r…...
【Android】Convenient ADB Commands
Install adb install -r <path>Uninstall adb uninstall <pkg>Start adb shell am start -n <pkg>/.SplashActivityStop adb shell am force-stop <pkg>Reset adb shell pm clear <pkg>Reboot adb rebootShutdown adb reboot -p...
elementUI 时间控件控制时间选择
选择时间大于当前月或小于2024年一月禁止选择 <el-form-item label"成交月份:" label-width"105px" ><div class"block"><el-date-pickerv-model"formData.deal_month"type"month":picker-options"pick…...
什么是x86架构,什么是arm架构
什么是 x86 架构? x86 架构是一种经典的指令集架构(ISA),最早由英特尔在 1978 年推出,主要用于 PC、服务器等领域。 它是一种复杂指令集计算(CISC)架构,支持大量的复杂指令和操作&…...
c语言水仙花,超简单讲解
效果 3或者大于3位数 每一位的位数次方相加等于 自身 例如 153 13 53 33 结果为112527 153 1634: 计算过程: 14643444112968125616341^4 6^4 3^4 4^4 1 1296 81 256 16341464344411296812561634 过程 求得单独将所有位数的正数拎出来…...
Flutter 13 网络层框架架构设计,支持dio等框架。
在移动APP开发过程中,进行数据交互时,大多数情况下必须通过网络请求来实现。客户端与服务端常用的数据交互是通过HTTP请求完成。面对繁琐业务网络层,我们该如何通过网络层架构设计来有效解决这些问题,这便是网络层框架架构设计的初…...
Python小白学习教程从入门到入坑------第二十课 闭包修饰器(语法基础)
一、递归函数 1.1 基本信息 递归函数是指一个函数在其定义中直接或间接地调用了自身 递归在解决许多问题(如树的遍历、图的搜索、数学中的分治算法等)时非常有用 在Python中,递归函数可以通过简单的语法来实现 然而,使用递归…...
Vue+element-ui实现网页右侧快捷导航栏 Vue实现全局右侧快捷菜单功能组件
Vue+element-ui实现网页右侧快捷导航栏 Vue实现全局右侧快捷菜单功能组件 可视区域没超过当前屏幕高度时候只显示三个菜单效果 可视区域超过当前屏幕高度时,显示可回到顶部菜单的,当然这个菜单显示条件可以自定义,根据需求设置 然后将这个整体功能创建为一个全局组件 代…...
如何配置,npm install 是从本地安装依赖
在 Node.js 中,要使npm install从本地安装依赖,可以按照以下步骤进行配置: 一、准备本地依赖包 确保你有本地的依赖包。这个依赖包可以是一个包含package.json文件的文件夹,或者是一个已经打包好的.tgz文件。 二、使用相对路径…...
做网站建设一般多少钱/sem培训学校
RGB (red green blue): 红绿蓝三基色 CMYK (Cyan-Magenta-Yellow-black inK): 青色-品红-黄色-黑色 HSI (Hue-Saturation-Intensity): 色调-饱和度-强度 DDB (device-dependent bitmap): 设备相关位图 DIB (device-independent bitmap): 设备无关位图 CVBS (Composite Vid…...
网站设计公司如何做好网站建设/百度收录要多久
文章目录一. 背景二. 解释三. 答案四. 验证一. 背景 《深入理解java虚拟机》第二版 57页对String.intern()返回引用的测试代码如下: 第三版是63页 public class RuntimeConstantPoolOOM_2 {public static void main(String[] args) {String str1 new StringBuilde…...
河南做外贸网站的公司/每日一则新闻摘抄
中新网1月20日电 据俄罗斯卫星网20日报道,俄火箭航天领域消息人士20日向卫星通讯社表示,俄罗斯首枚监控北极地区气候和环境的“北极-M”卫星将于6月升空进入环地轨道。 消息人士指出,“俄罗斯‘联盟-2.1б’运载火箭计划于2019年6月配装‘巡航…...
网站空间多大/抖音十大搜索关键词
行到艰难处,方是修心时 打磨再打磨,抱朴守拙做减法, 真正有用的人脉不是在于你认识多少人,而是在于多少人认识你。 所以,减少无效社交,打磨好你的产品和能力才是创业的关键。...
政府公文写作网站/厦门seo优
首先要说的是,不管学习什么,只有你努力了,坚持了,才会有所得。其实对于如何学习java,每个人都有不同得学习方法,如果你是新手,那你要做好后期准备工作给自己一个好的心情,因为以后得…...
青白江网站建设/谷歌浏览器 免费下载
Linux操作系统中IO模型是很常见的。下面由学习啦小编为大家整理了Linux操作系统的IO模型详解,希望对大家有帮助!Linux操作系统的IO模型详解Linux下的五种IO模型阻塞IO(blocking IO)非阻塞IO (nonblocking IO)IO复用(select 和poll) (IO multiplexing)信号驱动IO (si…...