redis
文章平均质量分 95
xushiyu1996818
这个作者很懒,什么都没留下…
展开
-
Redis 微博微信场景使用案例
目录String阅读量统计缓存分布式锁解决分布式问题Hash操作购物车List微博和公众号的消息流Set抽奖微信微博关注模型Zset排行榜注意:本文参考在微博微信场景下学习Redis数据结构 - 知乎String字符串常用操作SET key value //存入字符串键值对MSET key value [key value ...] //批量存储字符串键值对SETNX key val..原创 2021-11-15 23:25:15 · 735 阅读 · 0 评论 -
Redis 大key与热key
Redis中BigKey解决方案什么是BigKey?BigKey指的是redis中一些key value值很大,这些key在序列化与反序列化过程中花费的时间很大! 操作bigkey的通常比较耗时,也就意味着阻塞Redis可能性越大!占用的流量同时也会变得很大!大白话就是bigkey实际指一个key对应的value很大,占用的空间很大!string长度大于10K,list长度大于10240认为是big bigkeys大key场景Redis使用者应该都遇到过大key相关的场景,比如:..原创 2021-11-15 21:48:17 · 5656 阅读 · 0 评论 -
Redis内存模型
1原创 2021-11-14 11:42:36 · 360 阅读 · 0 评论 -
Redis数据结构 Bitmap
Bitmap:位图是支持按 bit 位来存储信息,可以用来实现布隆过滤器(BloomFilter);原创 2021-11-13 13:36:50 · 587 阅读 · 0 评论 -
Redis数据结构 list与quickList
目录压缩列表转化成双向链表条件双向链表linkedlist压缩列表ziplistziplist节点entry结构ziplist连锁更新问题quickListquickList数据结构list是如何实现阻塞队列的?ziplist和linkedlist 编码下的list,列表操作命令底层实现不同注意:本文参考Redis列表list 底层原理 - 知乎在版本3.2之前,Redis 列表list使用两种数据结构作为底层实现:压缩列表ziplist双向链表lin..原创 2021-11-12 23:26:23 · 236 阅读 · 0 评论 -
Redis数据结构 GeoHash
Geospatial:可以用来保存地理位置,并作位置距离计算或者根据半径计算位置等。有没有想过用Redis来实现附近的人?或者计算最优地图路径?这三个其实也可以算作一种数据结构,不知道还有多少朋友记得,我在梦开始的地方,Redis基础中提到过,你如果只知道五种基础类型那只能拿60分,如果你能讲出高级用法,那就觉得你有点东西。...原创 2021-11-12 23:28:52 · 1183 阅读 · 0 评论 -
Redis数据结构 布隆过滤器
目录布隆过滤器简介布隆过滤器是什么布隆过滤器的使用场景布隆过滤器原理解析布隆过滤器的使用布隆过滤器的基本用法布隆过滤器代码实现自己简单模拟实现手动实现参考使用 Google 开源的 Guava 中自带的布隆过滤器注意:本文参考 Redis(5)——亿级数据过滤和布隆过滤器布隆过滤器简介HyperLogLog 对大数据进行一个估算,它非常有价值,可以解决很多精确度不高的统计需求。但是如果我们想知道某一个值是不是已经在 HyperLogLog 结构里面了,..原创 2021-11-12 23:29:42 · 193 阅读 · 0 评论 -
Redis 排查性能
目录Redis真的变慢了吗?使用复杂度过高的命令操作bigkey集中过期实例内存达到上限fork耗时严重开启内存大页开启AOF绑定CPU使用Swap碎片整理网络带宽过载其他原因总结注意:本文参考 Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文Redis真的变慢了吗?首先,在开始之前,你需要弄清楚 Redis 是否真的变慢了?如果你发现你的业务服务 API 响应延迟变长,首先你需要先排查服务内部,究竟是哪个环..原创 2021-11-13 23:21:58 · 386 阅读 · 0 评论 -
Redis数据结构 HyperLoglog
目录HyperLogLog 简介关于基数统计基数统计的常用方法概率算法HyperLogLog 原理代码实验更近一步:分桶平均真实的 HyperLogLogRedis 中的 HyperLogLog 实现密集型存储结构稀疏存储结构对象头HyperLogLog 的使用注意:本文参考Reids—神奇的HyperLoglog解决统计问题HyperLogLog 简介HyperLogLog是最早由 Flajolet 及其同事在 2007 年提出的一种...原创 2021-11-12 23:31:16 · 264 阅读 · 0 评论 -
Redis服务器
目录命令请求的执行过程发送命令请求读取命令请求命令执行器(1) : 查找命令实现命令执行器(2): 执行预备操作命令执行器(3) : 调用命令的实现函数命令执行器(4): 执行后续工作将命令回复发送给客户端客户端接收并打印命令回复serverCron函数更新服务器时间缓存更新LRU时钟更新服务器每秒执行命令次数更新服务器内存峰值记录处理SIGTERM信号管理客户端资源管理数据库资源执行被延迟的BGREWRITEAOF检查持久化操作的原创 2020-07-30 16:23:18 · 571 阅读 · 0 评论 -
Redis客户端
目录简介客户端属性套接字描述符名字标志输入缓冲区命令与命令参数命令的实现函数输出缓冲区身份验证时间客户端的创建与关闭创建普通客户端关闭普通客户端Lua脚本的伪客户端AOF文件的伪客户端简介Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接, 每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并 向客户端返回命令回复。通过使用由I/O多路复用技术实现的文件事件处理器,Redis原创 2020-07-28 16:49:12 · 657 阅读 · 0 评论 -
Redis事件
Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:文件事件(file event) : Redis服务器通过套接字与客户端(或者其他Redis服务器) 进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其 他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来 完成一系列网络通信操作。时间事件(time event) : Redis服务器中的一些操作(比如serverCron函数)需 要在给定的时间点执行,而时间事件就是服务器对这类定时操作的抽象。原创 2020-07-24 16:20:26 · 178 阅读 · 0 评论 -
一致性哈希总结-java版
为什么要有一致性哈希在分布式系统中,节点的宕机、某个节点加入或者移出集群是常事。对于分布式存储而言,假设存储集群中有10台机器(node),如果采用传统Hash方式对数据分片(item)(即数据根据哈希函数映射到某台机器上存储),哈希函数应该是这样的:hash(item) % 10。根据上面的介绍,当node数发生变化(增加、移除)后,数据会被重新“打散”,导致大部分数据不能落到原来的节点上,...原创 2019-05-08 16:22:06 · 350 阅读 · 0 评论 -
Redis基础总结
为什么redis效率高?Redis采用的是基于内存的采用的是单进程单线程模型的KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。这个数据不比采用单进程多线程的同样基于内存的 KV 数据库 Memcached 差!1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时...原创 2020-02-23 21:06:12 · 24572 阅读 · 0 评论 -
Redis事务
目录事务简介事务的实现事务开始命令入队事务队列执行事务WATCH命令的实现使用WATCH 命令监视数据库键监视机制的触发判断事务是否安全一个完整的WATCH事务执行过程事务的ACID性质原子性一致性入队错误执行错误服务器停机隔离性耐久性事务简介Redis通过MULTI、EXEC、WATCH等命令来实现事务(tran...原创 2020-02-13 11:38:14 · 178 阅读 · 0 评论 -
Redis发布订阅与Stream
目录发布与订阅简介频道的订阅与退订订阅频道退订频道模式的订阅与退订订阅模式退订模式发送消息将消息发送给频道订阅者将消息发送给模式订阅者查看订阅信息PUBSUB CHANNELSPUBSUB NUMSUBPUBSUB NUMPAT发布与订阅简介Redis的发布与订阅功能由PUBUSH、SUBSCRIBE、PSUBSCRIBE等命令组成。...原创 2020-02-12 17:28:45 · 969 阅读 · 0 评论 -
Redis集群
目录节点启动节点集群数据结构CLUSTER MEET命令的实现槽指派记录节点的槽指派信息传播节点的槽指派信息记录集群所有槽的指派信息CLUSTER ADDSLOTS命令的实现在集群中执行命令计算键属于哪个槽判断槽是否由当前节点负责处理MOVED 错误被隐藏的MOVED错误节点数据库的实现重新分片重新分片的实现原理ASK错误......原创 2020-02-11 17:07:21 · 552 阅读 · 0 评论 -
Redis分布式锁
目录分布式锁什么是分布式锁?分布式锁需要具备哪些条件分布式锁的实现有哪些?单机Redis的分布式锁准备工作定义常量类定义锁的抽象类最基础的版本1jedis 的set方法版本2-设置锁的过期时间版本3-设置锁的valuei++问题版本4-具有原子性的释放锁版本5-确保过期时间大于业务执行时间测试集群Redis的分布式锁加锁解...原创 2020-02-06 21:03:32 · 3108 阅读 · 0 评论 -
Redis缓存问题总结
目录缓存穿透缓存空值布隆过滤器拦截缓存击穿对特定key设置永不过期使用互斥锁(mutex key)缓存雪崩缓存时间增加随机值Redis节点宕机引起的雪崩缓存与数据库双写一致问题操作缓存更新策略1-先更新数据库,后更新缓存更新策略2-先删除缓存,在更新数据库更新策略3-先更新数据库,再删除缓存并发竞争key缓存穿透缓存穿透,...原创 2020-02-06 11:33:27 · 1872 阅读 · 1 评论 -
redis常见应用场景
目录string应用场景微博数、粉丝数等热点数据的缓存Session 存储限时业务的运用计数器相关问题分布式全局唯一id(string)分布式锁hash应用场景存储对象信息热点数据的缓存list应用场景关注列表,粉丝列表消息队列set应用场景点赞、好友、粉丝等相互关系的存储抽奖活动(set)zset应用场景排行榜分页、...原创 2020-02-02 22:37:56 · 376 阅读 · 0 评论 -
Redis的哨兵模式Sentinel
目录Sentinel简介启动井初始化Sentinel初始化服务器使用Sentinel专用代码初始化Sentinel状态初始化Sentinel状态的masters属性创建连向主服务器的网络连接获取主服务器信息获取从服务器信息向主服务器和从服务器发送信息接收来自主服务器和从服务器的频道信息更新sentinels字典创建连向其他Sentinel的命令连......原创 2020-01-21 15:12:44 · 1963 阅读 · 0 评论 -
Redis主从复制
目录主从复制简介旧版复制功能的实现同步命令传播旧版复制功能的缺陷新版复制功能的实现部分重同步的实现复制偏移量复制积压缓冲区根据需要调整复制积压缓冲区的大小服务器运行IDPSYNC命令的实现复制的实现步骤1 : 设置主服务器的地址和端口步骤2 : 建立套接字连接步骤3: 发送PING命令步骤4: 身份验证步骤5: 发送端口...原创 2020-01-20 15:10:53 · 298 阅读 · 0 评论 -
Redis的AOF持久化
目录AOF简介AOF持久化的实现命令追加AOF文件的写入与同步AOF持久化的效率和安全性AOF文件的载入与数据还原AOF重写AOF文件重写的实现AOF后台重写重点回顾AOF简介除了RDB持久化功能之外,Redis还提供了AOF (Append Only File)持久化功能。与 RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是......原创 2020-01-17 17:26:27 · 565 阅读 · 0 评论 -
Redis的RDB持久化
目录RDB简介RDB文件的创建与载入SAVE命令执行时的服务器状态BGSAVE命令执行时的服务器状态RDB文件载入时的服务器状态自动间隔性保存设置保存条件dirty计数器和lastsave属性检查保存条件是否满足RDB文件结构databases部分key_value_pairs部分value的编码字符串对象列表对象集合对象哈希表...原创 2020-01-17 15:51:07 · 317 阅读 · 0 评论 -
Redis数据库实现
目录服务器中的数据库切换数据库数据库键空间添加新键删除键更新键对键取值其他键空间操作读写键空间时的维护操作设置键的生存时间或过期时间设置过期时间保存过期时间移除过期时间计算并返回剩余生存时间过期键的判定过期键删除策略定时删除惰性删除定期删除Redis的过期键删除策略惰性删除策略的实现定期删除策略的实现AO...原创 2020-01-15 16:08:32 · 537 阅读 · 0 评论 -
Redis数据结构 对象
目录简介对象的类型与编码类型编码和底层实现字符串对象字符串编码的转换字符串命令的实现列表对象列表编码转换列表命令的实现哈希对象哈希编码转换哈希命令的实现集合对象集合编码的转换集合命令的实现有序集合对象有序集合编码的转换有序集合命令的实现类型检查与命令多态类型检查的实现多态命令的实现内存回收对象共享对...原创 2020-01-14 15:35:00 · 173 阅读 · 0 评论 -
Redis数据结构 压缩列表
目录简介压缩列表的构成压缩列表节点的构成previous_entry_lengthencodingcontent连锁更新压缩列表API重点回顾简介压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量 列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就 会使用压缩列表来做列表键的底层实现。 ...原创 2020-01-13 15:00:07 · 397 阅读 · 0 评论 -
Redis数据结构 整数集合
目录简介整数集合的实现升级升级之后新元素的摆放位置升级的好处提升灵活性节约内存降级整数集合API重点回顾简介整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这 个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。 举个例子,如果我们创建一个只包含五个元素的集合键,井且集合中的所有元素都是整 数值...原创 2020-01-10 17:18:13 · 168 阅读 · 0 评论 -
Redis数据结构 跳跃表
目录简介跳跃表的实现跳跃表节点层前进指针跨度后退指针分值和成员跳跃表跳跃表API重点回顾简介跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的 指针,从而达到快速访问节点的目的。 跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批 量处理节点。 在大部分情况下,跳跃表的...原创 2020-01-10 16:36:46 · 277 阅读 · 0 评论 -
Redis数据结构 字典
目录简介字典的实现哈希表哈希表节点字典哈希算法解决键冲突rehash哈希表的扩展与收缩渐进式rehash渐进式rehash执行期间的哈希表操作字典API重点回顾简介字典,又称为符号表(symbol table)、关联数组(associative array)或映射(map), 是 一种用于保存键值对(key-value pair)的抽象数...原创 2020-01-09 16:35:11 · 206 阅读 · 0 评论 -
Redis数据结构 链表
目录简介链表和链表节点的实现链表和链表节点的API重点回顾简介链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点 来灵活地调整链表的长度。 作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用的C语 言并没有内置这种数据结构,所以Redis构建了自己的链表实现。 链表在Redis中的应用非常广泛,比如列表键的底层实现之...原创 2020-01-09 14:41:13 · 135 阅读 · 0 评论 -
Redis数据结构 简单动态字符串
目录简介SDS的定义SDS与C字符串的区别常数复杂度获取字符串长度杜绝缓冲区溢出减少修改字符串时带来的内存重分配次数空间预分配惰性空间释放二进制安全兼容部分C字符串函数区别总结SDSAPI重点回顾简介Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C 字符串),而是自己构建了一种名为简单动态字符串(simpl...原创 2020-01-08 17:37:29 · 149 阅读 · 0 评论 -
Redis总结
目录Redis使用Redis数据结构与对象Redis单机数据库Redis多机数据库Redis高级功能Redis使用Redis基本操作总结 https://blog.csdn.net/xushiyu1996818/article/details/89205889Redis数据结构与对象Redis数据结构 简单动态字符串 https://blog.c...原创 2020-01-08 14:24:02 · 328 阅读 · 0 评论 -
springboot缓存与redis总结
目录springBoot缓存与Redis整合spring缓存注解@Cacheablevalue属性指定Cache名称使用key属性自定义keycondition属性指定发生的条件@CachePut@CacheEvictallEntries属性beforeInvocation属性@Caching使用自定义注解@CacheConfigRedis缓...原创 2019-04-16 10:19:40 · 346 阅读 · 0 评论 -
springboot缓存与redis整合
目录一、jar包二、启动类三、Redis缓存配置类四、配置redis的配置文件五、对需要的方法加上缓存注解一、jar包在spring boot创建时,本次整合,spring boot版本为1.5.20,要有redis,web,cache,二、启动类启动类加入enablecaching注解@EnableCaching@SpringBootApplic...原创 2019-04-16 09:52:42 · 239 阅读 · 0 评论 -
mybatis与redis二级缓存总结
目录一、在spring boot 环境整合二、Mybatis映射文件使用二级缓存mapper级标签语句级三、Redis缓存工具类mybatis二级缓存接口redis-string缓存工具类putObjectgetObjectClearredis-HashMap缓存工具类putObjectgetObjectclear四、使用Mybatis二...原创 2019-04-12 09:37:27 · 6026 阅读 · 0 评论 -
spring boot与mybatis与二级缓存redis整合
目录零、spring boot与mybatis整合一、版本二、目录树与jar包三、配置文件四、实体类五、缓存类六、xml文件使用二级缓存七、使用二级缓存结果零、spring boot与mybatis整合https://blog.csdn.net/xushiyu1996818/article/details/89036186一、版本使用java1...原创 2019-04-04 23:03:39 · 1413 阅读 · 0 评论 -
redis基本操作总结
目录开启客户端普通开启在远程服务上执行命令redis基础结构管理键(key)Redis keys 命令字符串(String)Redis 字符串命令哈希(Hash)Redis hash 命令列表(list)Redis 列表命令集合(Set)Redis 集合命令有序集合(sorted set)Redis 有序集合命令注意:本篇博...原创 2019-04-11 11:49:47 · 205 阅读 · 0 评论