1.如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样? 2.使用过Redis分布式锁吗?它是如何实现的? 3.使用过Redis做异步队列吗?是怎么用的,有什么缺点? 4.能不能生产一次消费多次? 5.什么是缓存穿透?如何避免?什么是缓存雪崩?如何避免? 缓存穿透 ...
分类:
其他好文 时间:
2019-07-24 11:49:15
阅读次数:
112
高并发核心技术之-幂等性1.什么是幂等性幂等性就是指:一个幂等操作任其执行多次所产生的影响均与一次执行的影响相同。用数学的概念表达是这样的:f(f(x))=f(x).就像nx1=n一样,x1就是一个幂等操作。无论是乘以多少次结果都一样。2.常见的幂等性问题幂等性问题经常会是由网络问题引起的,还有重复操作引起的。场景一:比如点赞功能,一个用户只能对同一片文章点赞一次,重复点赞提示已经点过赞了。示例代
分类:
其他好文 时间:
2019-07-23 13:41:05
阅读次数:
125
分布式架构中,高并发场景下,简单的线程锁无法保证线程安全,我们需要使用分布式锁来保证线程安全。在诸多的分布式锁实现中,redis分布式锁的应用应该是最为常见的,下面就让我们来看一下分布式锁实现中需要考虑到的诸多方面: 首先使用redis实现分布式锁需要用到redis的setnx key命令,(如果k ...
分类:
其他好文 时间:
2019-07-21 12:01:10
阅读次数:
90
分布式锁 在分布式环境中,为了保证业务数据的正常访问,防止出现重复请求的问题,会使用分布式锁来阻拦后续请求。我们先写一段有问题的业务代码: 上面的代码很简单,查询db中有没有对应的user数据,如果有的话,执行更新操作,如果没有则插入。 我们知道,上面的代码是线程不安全的,在多线程的环境中,就会出现 ...
分类:
其他好文 时间:
2019-07-21 10:31:56
阅读次数:
87
1.什么是分布式锁 为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程调度,而这种分布式协调技术的核心就是分布式锁。 2.分布式锁应该具备的条件 一个方法在同一时间只能被一个机器的一个线程执行。 高可用的获取锁与释放锁。 高性能的获取锁与释放锁。 具备可重入特性。 具 ...
分类:
其他好文 时间:
2019-07-16 22:49:58
阅读次数:
229
因为在项目实际过程中所采用的是微服务架构,考虑到承载量基本每个相同业务的服务都是多节点部署,所以针对某些资源的访问就不得不用到用到分布式锁了。 这里列举一个最简单的场景,假如有一个智能售货机,由于机器本身的原因不能同一台机器不能同时出两个商品,这就要求在在出货流程前针对同一台机器在同一时刻出现并发 ...
分类:
编程语言 时间:
2019-07-13 20:16:47
阅读次数:
197
Redis知识点小结一 概念: 内存数据库,用于做缓存。可做分布式锁,提供多种数据类型支持不同业务场景。支持事务、持久化、LUA脚本、LRU驱动事件。 内存数据库,用于做缓存。可做分布式锁,提供多种数据类型支持不同业务场景。支持事务、持久化、LUA脚本、LRU驱动事件。 高性能和高并发 高性能:第一 ...
分类:
其他好文 时间:
2019-07-11 20:20:37
阅读次数:
92
SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个WEB工程重复提交(分布式)单机版中我们用的是GuavaCache,但是这玩意存在集群的时候就凉了,所以我们还是要借助类似Redis、ZooKeeper之类的中间件实现分布式锁。本章目
分类:
编程语言 时间:
2019-07-11 14:08:49
阅读次数:
192
Zookeeper实现分布式锁 zookeeper实现分布式锁,主要得益于ZooKeeper保证了数据的强一致性这一特性。锁服务可以分为两类,一个是保持独占,另一个是控制时序。 1. 保持独占,就是所有试图来获取这个锁的客户端,最终只有一个可以成功获得这把锁。通常的做法是把zk上的一个znode看作 ...
分类:
其他好文 时间:
2019-07-11 12:39:25
阅读次数:
107
引用: StackExchange.Redis.dll Redlock.CSharp.dll RedLock.dll 代码: ...
分类:
其他好文 时间:
2019-07-10 10:38:01
阅读次数:
148