一、介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁。会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁。 本篇文章会将分布式锁的实现分为两部分,一个是单机环境,另一个是集群环境下的Redis锁实现。在介绍分布式锁的实现之前,先来了解下分布式锁的一些信息 ...
分布式锁 数据库 数据库是使用唯一索引不允许重复的特性 或自定义实现如乐观锁 . 但持有锁的进程如果释放锁时异常则容易导致死锁. zookeeper 使用临时节点, watcher可以获得节点被删除的通知, 当客户端连接失效后, 临时节点清除, 所以这种情况下不会有死锁发生. redis setNX实现 lua语言 redis可以使用lua脚本. lua是动态类型语言. 减少网络开销 原子操作 代 ...
2019-04-15 13:15 0 523 推荐指数:
一、介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁。会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁。 本篇文章会将分布式锁的实现分为两部分,一个是单机环境,另一个是集群环境下的Redis锁实现。在介绍分布式锁的实现之前,先来了解下分布式锁的一些信息 ...
本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的Set类型,以及如何使用Redis解决数据去重、共同好友、可能认识、统计访问网站的IP数、统计点赞数和随机获取某项值等问题。 Set类型:用哈希表来保持字符串的唯一性,没有先后顺序,存储一些集合性的数据。(去重、无序集合 ...
本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的ZSet类型,以及如何使用Redis解决实时排行榜问题。 Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列。 ZSet类型最大的特点就是有序、去重 ...
本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的Hash类型。 散列Hash:类似dictionary,通过索引快速定位到指定元素的,耗时均等,跟string的区别在于不用反序列化,直接修改某个字段。 存储形式: hashId-{key:value;key:value ...
本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的List类型,以及如何使用Redis解决博客数据分页、生产者消费者模型和发布订阅等问题。 Redis List的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现 ...
首先是项目地址: https://github.com/maqiankun/distributed-id-redis-generator 关于Redis集群生成分布式ID,这里要先了解redis使用lua脚本的时候的EVAL,EVALSHA命令: https://www.runoob.com ...
一、前言 在我们日常工作中,除了Spring和Mybatis外,用到最多无外乎分布式缓存框架——Redis。但是很多工作很多年的朋友对Redis还处于一个最基础的使用和认识。所以我就像把自己对分布式缓存的一些理解和应用整理一个系列,希望可以帮助到大家加深对Redis的理解。本系列的文章思路 ...
一、前言 在上一篇文章中,已经介绍了基于Redis实现分布式锁的正确姿势,但是上篇文章存在一定的缺陷——它加锁只作用在一个Redis节点上,如果通过sentinel保证高可用,如果master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况: 客户端1在Redis ...