
Redis
文章平均质量分 94
Redis
默辨
希望成为一个有思想的软件工程师
展开
-
浅谈HyperLogLog底层算法逻辑
本文是对hyperloglog原理的梳理,整理自知乎答主张戎的回答:大数据领域的近似分析方法(一)。内容涉及高中数学的期望,大学的高等数学以及概率论。就像文章所言,HyperLogLog是大数据基数统计中的常见方法,无论是 Redis,Spark 还是 Flink 都提供了这个功能,其目的就是在一定的误差范围内,用最小的空间复杂度来估算一个数据流的基数。文章目录一、基数估计法介绍二、HyperLogLog部分1、理论基础介绍2、引入调和平均数3、误差修正4、Reids中的HyperLogLog三、原创 2022-03-12 23:55:50 · 3472 阅读 · 0 评论 -
浅谈Redisson底层源码
Redisson源码分析一、加锁时使用lua表达式,执行添加key并设置过期时间二、加锁成功之后给锁添加对应的事件三、加锁完成,看门狗自动续命未处理完的线程四、线程加锁不成功,加锁自旋+阻塞五、释放锁之后触发事件,释放信号量六、补充RedissonMultiLock(RedissonRedLock)Redisson底层实现锁的逻辑图 Redisson分布式锁原理:可重入:利用hash结构记录线程id和重入次数可重试:利用信号量和PubSub功能实现等待、唤醒,获取锁失败的重试机制超时续原创 2022-03-10 23:10:20 · 1358 阅读 · 0 评论 -
浅谈三种使用Redis实现MQ的方式
文章目录一、消息队列二、基于List的消息队列三、基于PubSub的消息队列四、基于Stream的消息队列1、基本命令2、简单使用五、总结一、消息队列消息队列(Message Queue),字面意思就是存放消息的队列。最简单的消息队列模型包括3个角色:消息队列:存储消息生产者:发送消息到消息队列消费者:从消息队列获取消息并处理消息 Redis提供了三种不同的方式来实现消息队列:list结构:基于List结构模拟消息队列PubSub:基本的点对点消息模型Stream:比较完善原创 2022-03-10 21:14:56 · 11604 阅读 · 1 评论 -
一个User表的增删改查,我写了近200行代码
Redis多级缓存架构的升级之路一、基础版(包含基础操作)二、升级版1.1(处理缓存数据一致性问题)三、升级版1.2(处理缓存数据一致性问题)四、优化版(优化多级缓存架构)一、基础版(包含基础操作)这是我们工作中最常见的书写方式RedisUtil:封装的Redis相关API的操作RedisKeyPreConst:Redis缓存中涉及的key前缀UserMapper:操作数据库代码实现细节如下:public class UserServiceImpl implements User原创 2022-03-05 21:58:36 · 945 阅读 · 0 评论 -
浅谈如何使用Redis实现分布式锁
文章目录一、基础版(含自动释放锁)二、改良版(含过期时间)三、进阶版(含唯一性验证)四、最终版(含Redisson)写在前面:既然已经上升到了分布式场景,那么传统单机下保证线程安全的锁自然就不起作用了,如synchronized、AQS、ThrealLocal等,因为他们锁的都是JVM级别的,分布式项目已经跨越了JVM级别,所以他们都会失效。一、基础版(含自动释放锁)使用setnx完成一个最基础的分布式锁该锁能够对指定的key完成加锁,在执行完业务逻辑后,也能释放对应的锁。publ原创 2022-03-03 22:08:54 · 1775 阅读 · 0 评论 -
Redis核心知识点总结(一万五千字,请耐心读完)
文章目录一、Redis是单线程还是多线程二、Redis 单线程为什么还能这么快三、Redis 单线程如何处理那么多的并发客户端连接四、RDB和AOF的区别是什么五、Redis主从复制工作原理六、Redis哨兵高可用架构七、Redis集群架构相关问题分析1、集群架构概述2、集群架构原理分析3、集群架构节点间通信机制4、Redis集群选举原理分析5、集群脑裂问题八、缓存穿透九、缓存失效(击穿)十、缓存雪崩十一、热点缓存key重建优化十二、缓存与数据库双写不一致十三、开发规范与性能优化十四、bigkey的相关问题原创 2022-03-01 14:30:46 · 1046 阅读 · 1 评论 -
浅谈Redis基本数据类型底层编码(含C源码)
文章目录一、String1、int2、embstr3、raw4、bitmap5、hyperloglog二、List1、ziplist2、quicklist三、Hash1、ziplist2、hashtable3、string和hash的使用取舍四、Set1、intset2、hashtable五、ZSet1、ziplist2、skiplist3、zadd源码流程4、geospatial写在前面,在阅读本文前需要简单了解Redis底层的数据结构(C语言中相关变量的定义),否则不建议阅读本文。想简答了解Re原创 2022-02-25 00:20:25 · 2716 阅读 · 0 评论 -
浅谈Redis底层数据结构(sdshdr-redisObject)
最近看了点Redis底层的源码分析,特作此记录前提共识:Redis是一个默认为16个数据库的key-value内存数据库Redis底层是由C语言实现文章目录C语言源码流程1、server.c2、dict.h3、sds.h4、redisObject5、大体流程下列代码为官网下载的Redis6.2.6版本C语言源码流程1、server.c以该文件中的redisDb结构体为起点通过注释,我们不难发现*dict指向的,就是我们的单个数据库2、dict.h由dict结原创 2022-02-21 23:00:48 · 1464 阅读 · 0 评论 -
Redis(三)
文章目录9、Redis.conf详解10、Redis持久化10.1、RDB(Redis DataBase)10.2、AOF(Append Only File)10.3、总结11、Redis发布订阅12、Redis主从复制12.1、概念12.2、环境配置12.3、哨兵模式13、Redis缓存穿透和缓存雪崩13.1、缓存穿透(查不到)13.2、缓存击穿(查太多)13.3、缓存雪崩9、Redis.conf详解Redis启动时,是根据该文件配置进行启动。以下配置文件信息来源win版本的Redis,与Li原创 2021-05-31 19:23:19 · 196 阅读 · 2 评论 -
Redis(二)
文章目录5、三种特殊的数据类型5.1、geospatial地理位置5.2、Hyperloglog基数统计5.3、Bitmap位存储6、事务6.1、事务基本操作6.2、Redis实现乐观锁7、Jedis7.1、简介7.2、入门案例7.3、key的基本操作7.4、String的基本操作7.5、List的基本操作7.6、Set的基本操作7.7、Hash的基本操作8、整合SpringBoot8.1、整合测试8.2、自定义Redis配置类8.3、RedisUtil5、三种特殊的数据类型5.1、geospati原创 2021-05-31 16:03:03 · 438 阅读 · 0 评论 -
Redis(一)
文章目录1、Redis 入门1.1、问题引入1.2、NoSQL简介1.3、现实电商的解决方案1.4、Redis简介1.5、Redis的应用1.6、Redis的下载与安装1.7、Redis的基本基本操作2、Redis数据类型2.1、string1、string类型的数据的基本操作2、string类型的数据的扩展操作3、string数据类型操作的注意事项2.2、hash1、hash 类型数据基本操作2...原创 2020-03-29 13:03:20 · 437 阅读 · 0 评论