什么是分布式锁?在回答这个问题之前,我们先回答一下什么是锁。普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个的顺序执行,否则会出现并发问题。如何控制呢?就是设置一个各个线程都能看的见的标志。然后,每个线程想访问临界区域时,都要先查看标志,如果标志没有被占用,则说明目前没有线程在访问临界区域。如果标志被占用了,则说
转载
2024-04-03 21:36:28
51阅读
前言Hello 大家好,今天给大家分享redisson实现的多类型锁、支持几乎所有加锁场景的redis分布式锁的实现,还支持小型MQ和redis的各种数据操作,完整源码可以关注我私聊。理论部分在之前的文章中,介绍了通过redis实现分布锁的两种方式,分别是:通过redis自带的命令:setNX通过redis的客户端:redisson作者更加推荐使用redisson客户端的方式,因为redisson
转载
2024-03-19 14:11:36
102阅读
高并发场景下容易出现的超卖问题(一张票卖给两个客户,或是库存卖成负数),一个常用的解决方法就是加锁。对于单机系统,内存级别的锁就足够应付(如c#中的lock);对于分布式系统Redis往往是一个常见的选项。当然,有一点要清楚的是:加锁有可能会影响代码执行效率,不是所有场景都适合加锁。 这里为了简化问 ...
转载
2021-09-08 18:30:00
1242阅读
进程和线程“进程” 是计算机系统进行资源分配和调度的基本单位,我们可以理解为计算机每开启一个任务就会创建至少一个进程来处理,有时会创建多个,如 Chrome 浏览器的选项卡,其目的是为了防止一个进程挂掉而应用停止工作,而 “线程” 是程序执行流的最小单元,NodeJS 默认是单进程、单线程的,我们将这个进程称为主进程,也可以通过 child_process 模块创建子进程实现多
在一些分布式环境下、多线程并发编程中,如果对同一资源进行读写操作,避免不了的一个就是资源竞争问题,通过引入分布式锁这一概念,可以解决数据一致性问题。作者简介:五月君,Nodejs Developer,慕课网认证作者,热爱技术、喜欢分享的 90 后青年,欢迎关注 Nodejs技术栈 和 Github 开源项目 https://www.nodejs.red认识线程、进程、分布式锁线程锁:
序言一次面试中,我提到自己用过pm2,面试接着问:「那你知道pm2父子进程通信方式吗」。我大概听说pm2有cluster模式,但不清楚父子进程如何通信。面试结束后把NodeJS的多进程重新整理了一下。对于前端开发同学,一定很清楚js是单线程非阻塞的,这决定了NodeJS能够支持高性能的服务的开发。 JavaScript的单线程非阻塞特性让NodeJS适合IO密集型应用,因为JavaScript在访
转载
2024-02-18 12:24:49
373阅读
前言昨天有小伙伴问 express 项目该如何部署。于是整理了这篇文章,主要介绍如何部署一个基于 node.js 开发的应用,比如使用 express.js 或者 koa.js 框架开发的服务端项目, 供有需要的朋友们参考。本文包含几个部分:线程和进程node.js 实现多进程的方案云服务器安装 Node.js 环境使用 PM2 管理 Node.js 项目使用 Nginx 实现接口服务的代理转发进
转载
2024-07-30 16:54:46
319阅读
# Redis 分布锁联合锁
在分布式系统中,为了保证数据的一致性和并发控制,常常需要使用锁来保护关键资源。而在使用 Redis 时,可以通过 Redis 分布锁来实现并发控制。本文将介绍如何使用 Redis 分布锁来实现联合锁,保护共享资源的访问。
## 什么是 Redis 分布锁
Redis 分布锁是一种使用 Redis 数据库实现的锁机制,用于控制多个客户端并发访问共享资源的情况。通过
原创
2024-06-21 03:39:00
36阅读
nest js 英文官网 NestJS - A progressive Node.js frameworknestjs 中文网 NestJS 简介 | NestJS 中文文档 | NestJS 中文网nestjs 中文网2 Nest.js 中文文档以上是三个自学文档 连接mongodb/* app.module.ts */
转载
2024-05-07 09:07:42
189阅读
NestJS 是一个专门用 TypeScript 构建的 Web 框架。大多数有经验的开发人员都会认出 NestJS 中熟悉的东西;它是一个强大的、面向对象的编程模型,它的语法与另一个框架 Angular 非常相似。NestJS 代码通常会迫使您创建最佳设计模式。从 Java 或 ASP.NET 背景过渡到 Node.js 和 TypeScript 的开发人员将很快了解 NestJS 的结构。Ne
转载
2024-05-09 19:25:21
91阅读
使用Nest CLI设置新项目非常简单 。只需确保 安装了npm,然后在OS终端中使用以下命令:$ npm i -g @nestjs/cli
$ nest new project-name
$ cd project
$ npm install
$ npm run start生成的文件如下:prettier是一个格式化工具, 强制规范代码格式 , 比如 JSON最后一行是否允许带逗号, 用单引号还是
转载
2024-03-15 05:07:51
142阅读
nestjs超详细从零到零点五详细入门项目搭建过程项目完整地址github,修复了一些swagger文档接口,传参显示问题 从零到有搭建一个完整的后台管理系统项目涉及到的知识controller控制器provider提供者module模块middleware中间件filter过滤器pipe管道guard守卫interceptor拦截器@装饰器生命周期事件onModuleInitTypeORM热重载
转载
2024-05-25 15:46:46
117阅读
目前主流的分布式锁都是依靠第三方存储介质的一致性保障实现的,比如常见的基于关系型数据库(如MySql)的排它锁实现的分布式锁基于分布式协调系统(Zookeeper临时节点+通知事件)实现的分布式锁基于Redis, setNx特性实现的分布式锁基于Redis的分布式锁其中应用最广泛的应该是Redis的分布式锁,它对比前两者都有着很大的优势巨大的写性能优势,特别是对比MySql对比于Zookeeper
转载
2023-08-25 11:46:17
69阅读
## RedisTemplate 分布锁实现流程
本文将介绍如何使用 RedisTemplate 实现分布式锁。首先,我们将了解分布式锁的概念和原理。然后,通过表格展示整个实现流程,并逐步解释每个步骤所需的代码和注释。最后,我们将绘制一个关系图和流程图来更清晰地展示整个过程。
### 1. 分布式锁概念和原理
分布式锁是一种用于在分布式系统中协调多个进程或线程访问共享资源的机制。它的目的是确
原创
2023-09-30 05:54:11
95阅读
一、什么是分布式锁简单而言,在分布式系统中,当多个进程之间争抢同一个资源时,需要对多个进程加锁,只能让一个进程抢到锁,这就是分布式锁的概念。多个进程抢夺的这一个资源,可以是数据库中的同一条数据等。要对多个进程加锁,就要借助外部系统,且这个外部系统有互斥的功能,即多个请求过来,只能给一个请求返回成功,其他请求返回失败。以此来实现加锁。这个外部系统,可以是mysql,也可以是redis或zookeep
转载
2023-06-13 14:22:02
105阅读
探索 NestJS 配置管理神器 —— Nestjs Config在开发基于NestJS的复杂应用时,管理和组织配置文件是一项挑战。幸运的是,Nestjs Config 提供了一个优雅的解决方案,它允许你轻松加载配置文件,并动态调整运行时的设置。1. 项目介绍Nestjs Config 是一个专为 NestJS 设计的配置组件,旨在简化配置管理并提供环境适应性。通过支持多种环境配置和动态加载,它可
转载
2024-08-16 22:42:17
65阅读
关于SwaggerSwaager是生成开发API文档的一大利器,当我们在给别人做KT的时候,一个Swagger文档丢给人家,真的是你好我也好。在日常开发中,前端看Swagger文档也可以避免很多沟通上的非必要问题。Swagger的版本NestJS有两种开箱即用的HTTP模式,最为常用的是Express的,所以我们在NestJS的基础上开发Swaager的时候,可以适当参考Express的文档,但由
转载
2024-08-09 18:02:14
36阅读
Controller 控制器控制器负责处理传入的请求并向客户返回响应。一个控制器的目的是接收应用程序的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有一个以上的路由,不同的路由可以执行不同的动作。为了创建一个基本的控制器,我们使用类和装饰器。装饰器将类与所需的元数据联系起来,并使 Nest 能够创建一个路由图(将请求绑定到相应的控制器)。为了快速创建一个内置验证的 CRUD 控制器
转载
2024-04-24 12:06:26
32阅读
官网介绍 nest是基于express的,其设计很多源自与anglur,跟java的spring框架很像。基本架构 每个模块都有 控制器controoler, app模块module, 和一个service服务,提供数据 先看module 使用装饰器装饰,将app的控制器和服务都注入到该类,若有其他app的子模块,还可以注入到imports,这样就会注册该子模块。入口文件 入口文件则是根据根模块a
转载
2024-03-07 09:14:39
92阅读
Nest Admin - 基于Nest.js的高效能后台管理系统框架 技术分析核心特性Nest.js:Nest.js是基于TypeScript和Node.js的服务器端框架,融合了面向对象编程(OOP)、函数式编程(FP)与现代JavaScript的最佳实践。Nest.js遵循SOLID原则,使得代码结构清晰,易于维护。Angular 风格架构:Nest Admin采用了类似于Angul
转载
2024-06-25 10:46:42
70阅读