一、Redis实现分布式锁基本原理 主要就是redis的setnx(id,value)指令 在Redis中,有一个不常使用的命令如下所示。 SETNX key value 这条命令的含义就是“SET if Not Exists”,即不存在的时候才会设置值。 只有在key不存在的情况下,将键key的值 ...
分类:
其他好文 时间:
2020-05-04 00:29:11
阅读次数:
57
Flask单机测试,实现redis+MQ秒杀业务,防止超限 简单描述 抢购,秒杀是商场业务很常见的应用场景,主要需求解决: 1.高并发 2.如何解决库存的正确减少("超卖"的问题) redis 命令说明exists >setnx> incrby # (1) 设置一些参数 # 限制商品库存总数 amo ...
分类:
其他好文 时间:
2020-04-20 09:15:19
阅读次数:
192
1、Redis锁(分布式锁有多种,redis只是其中一种实现,核心:加锁,解锁,锁超时,可用于分布式场景和单机场景 。适用于在分布式系统中,实现不同线程对资源和代码的同步访问——分布式锁) 1、1两个命令 SETNX:SET if Not eXist——假如不存在,设置,返回1;否则返回0,说明已经 ...
分类:
其他好文 时间:
2020-04-06 17:30:44
阅读次数:
59
参考 SpringBoot实现Redis分布式锁 https://www.jianshu.com/p/750ac97eb29e 实现原理 加锁解锁 执行逻辑之前,加锁 执行逻辑之后,删除锁 加锁和删除锁必须是同一个对象的行为。 获取锁删除锁 使用setnx,保证只有一个对象可以设置锁成功,只有一个对 ...
分类:
编程语言 时间:
2020-04-05 17:05:13
阅读次数:
72
Redis应该算面试中必问的一个知识点,但是发现很多童鞋并不熟悉这块,这篇就常见的一些问题做一些整理,有不对的地方欢迎留言指正! 1.Redis支持的数据类型? String(字符串) 格式: set key value string类型是二进制安全的。意思是redis的string可以包含任何数据 ...
分类:
其他好文 时间:
2020-04-05 11:34:28
阅读次数:
59
一、Redis介绍 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合 ...
分类:
其他好文 时间:
2020-04-05 00:36:00
阅读次数:
85
1.redis介绍: 1、redis 是一个基于key_value 的内存数据库。 2、支持的数据类型包括不限于: string,hash,set,sort-set,list。 3、redis分布式锁:redis 分布式锁主要基于setnx命令,setnx:不存在则创建, 存在则不做任何操作。 如果 ...
分类:
其他好文 时间:
2020-03-30 11:12:19
阅读次数:
65
先聊下redis普通的分布式锁,用 1.单节点、主从/哨兵模式的分布式锁,安全吗? 或许你了解过,通过如下方式加锁: 设置锁时,使用set命令,因为其包含了setnx,expire的功能,起到了原子操作的效果,给key设置随机值,并且只有在key不存在时才设置成功返回True,并且设置key的过期时 ...
分类:
其他好文 时间:
2020-03-29 17:46:22
阅读次数:
79
前言 以前在学校做小项目的时候,用到Redis,基本也只是用来当作缓存。现在博主在某金融平台实习,发现Redis在生产中并不只是当作缓存这么简单。在我接触到的项目中,Redis起到了一个分布式锁的作用,具体情况是这样的: 该项目在金融平台中负责某块业务,是一个分布式系统,线上大概跑着10个左右的实例 ...
分类:
其他好文 时间:
2020-03-26 21:17:33
阅读次数:
69
概述 在之前, 我也使用redis做过分布式锁, 当时的做法是这样的: 1. setnx: 向 redis中创建一个过期时间为1s的key, 若创建失败, 则锁获取失败 2. expire: 获取锁成功后, 给锁增加过期时间 3. del: 处理后释放锁 当时觉得貌似没什么问题. 是我太天真了, 今 ...
分类:
其他好文 时间:
2020-03-15 18:54:59
阅读次数:
60