redis
文章平均质量分 93
yangyanping20108
这个作者很懒,什么都没留下…
展开
-
缓存最佳实践
旁路缓存策略是最常用的一种缓存读写策略,它适用于读请求比较多,数据更新频率不高的场景。它的基本思想是:应用程序直接访问缓存和数据库,而不通过中间层。当需要读取数据时,先从缓存中查找,如果命中则直接返回;如果未命中,则从数据库中查询,并将结果放入缓存中,然后返回。当需要更新数据时,先更新数据库,然后删除缓存。原创 2023-08-21 21:36:23 · 957 阅读 · 0 评论 -
缓存淘汰算法-LRU
我们常用缓存来提升数据查询速度,由于缓存容量有限,当缓存容量到达上限,就需要删除部分数据挪出空间,这样新数据才可以添加进来。缓存数据不能随机删除,一般情况下我们需要根据某种算法删除缓存数据。常用淘汰算法有 LRU,LFU,FIFO,这篇文章我们聊聊 LRU 算法。例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。原创 2023-09-07 20:29:04 · 208 阅读 · 0 评论 -
缓存问题之缓存雪崩
在生产环境中,会因为很多的原因造成访问请求绕过了缓存,都需要访问数据库持久层,虽然对Redsi缓存服务器不会造成影响,但是数据库的负载就会增大,使缓存的作用降低。原创 2023-07-17 18:25:09 · 104 阅读 · 0 评论 -
Redis队列在项目中实践
因为Redis List 底层的实现就是一个「链表」,在头部和尾部操作元素,时间复杂度都是 O(1),这意味着它非常符合消息队列的模型。原创 2023-02-21 21:08:37 · 1001 阅读 · 0 评论 -
Redis原理之BigKey和热点Key
BigKeybigKey 是指key 对应的value 所占的内存空间比较大,例如一个字符串类型的value 可以最大存储到512MB,一个列表类型的value 最多可以存储 2原创 2021-06-03 21:22:33 · 1180 阅读 · 0 评论 -
Redis原理之HyperLogLog
Redis 在 2.8.9 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog 只会根据输入元素来计算...原创 2021-06-03 18:41:47 · 176 阅读 · 0 评论 -
Redis原理之GEO
Redis GEORedis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。Redis GEO 操作方法有:geoadd:添加地理位置的坐标。 geopos:获取地理位置的坐标。 geodist:计算两个位置之间的距离。 georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。 georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。 geohash:返回一个或多个位置对象原创 2021-06-03 18:01:23 · 2017 阅读 · 0 评论 -
Redis原理之BitMap实践
数据结构模型现代计算机使用二进制(位)作为信息的基础单位原创 2021-06-02 17:29:30 · 519 阅读 · 0 评论 -
Redis原理之持久化和主从同步
Redis原理之主从同步和持久化原创 2021-02-18 11:41:26 · 234 阅读 · 0 评论 -
Redis原理之集群搭建
redis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master;后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自动将slave转为master,但它也有一个问题,就是不能动态扩充;所以在3.x提出cluster集群模式原创 2021-02-17 19:21:15 · 215 阅读 · 0 评论 -
Redis原理之数据库
Redis原理之数据库数据库的结构数据库键空间数据库的结构Redis 中的每个数据库,都由一个 redis.h/redisDb 结构表示:typedef struct redisDb { // 保存着数据库以整数表示的号码 int id; // 保存着数据库中的所有键值对数据 // 这个属性也被称为键空间(key space) dict *dict; // 保存着键的过期信息 dict *expires; // 实现列表阻塞原语,如 BLPOP dict *blocking_key原创 2021-02-16 07:30:23 · 169 阅读 · 0 评论 -
Redis原理之lua脚本
Redis原理之LUA脚本简介简介Lua 脚本功能是 Reids 2.6 版本的最大亮点,通过内嵌对 Lua 环境的支持,Redis 解决了长久 以来不能高效地处理 CAS (check-and-set)命令的缺点,并且可以通过组合使用多个命令,轻 松实现以前很难实现或者不能高效实现的模式。...原创 2021-02-15 19:52:19 · 458 阅读 · 0 评论 -
Redis原理之订阅与发布
Redis原理之订阅与发布简介频道的订阅与信息发送订阅频道简介Redis 通过 PUBLISH 、SUBSCRIBE 等命令实现了订阅与发布模式,这个功能提供两种信息 机制,分别是订阅/发布到频道和订阅/发布到模式,下文先讨论订阅/发布到频道的实现,再讨 论订阅/发布到模式的实现。频道的订阅与信息发送Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道,每当有新信息发送到被订阅的频道时,信息就会被发送给所有订阅指定频道的客户端。下图clientA clientB cli原创 2021-02-15 19:05:40 · 208 阅读 · 0 评论 -
Redis原理之事务
Redisa原理之事务简介事务简介事务提供了一种“将多个命令打包,然后一次性、按顺序地执行”的机制,并且事务在执行的期 间不会主动中断——服务器在执行完事务中的所有命令之后,才会继续处理其他客户端的其他 命令。一个事务从开始到执行会经历以下三个阶段: 1. 开始事务。2. 命令入队。3. 执行事务。事务以 multi 开始一个事务,然后将多个命令入队到事务中,最后 由 EXEC 命令触发事务,一并执行事务中的所有命令127.0.0.1:6379> multiOK127.0.0.1:6原创 2021-02-14 23:43:31 · 129 阅读 · 0 评论 -
Redis原理二之数据类型String
redis 数据类型string的存储方式string的存储方式我们都知道,Redis是由C语言编写的。在C语言中,字符串标准形式是以空字符\0作为结束符的,但是Redis里面的字符串却没有直接沿用C语言的字符串。主要是因为C语言中获取字符串长度可以调用strlen这个标准函数,这个函数的时间复杂度是O(N),由于Redis是单线程的,承受不了这个时间复杂度。使用object encoding key可以查看key对应的encoding类型,如下所示:对于不同的对象,Redis会使用不同的类型原创 2021-02-11 22:07:10 · 1122 阅读 · 4 评论 -
缓存问题之缓存击穿
缓存击穿是指热点key在某个时间点过期的时候,而恰好在这个时间点对这个Key有大量的并发请求过来,从而大量的请求打到db原创 2020-09-17 17:56:45 · 221 阅读 · 0 评论 -
缓存问题之缓存穿透
缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如用户伪造特别大的Id 值(数据库中不存在此Id),并且自增循环频繁请求接口,导致数据库压力过大,从而导致服务器反应缓慢,影响用户体验。原创 2020-09-11 11:06:55 · 645 阅读 · 0 评论 -
Redis原理一之内部数据结构
Redis 和其他很多 key-value 数据库的不同之处在于,Redis 不仅支持简单的字符串键值对,它 还提供了一系列数据结构类型值,比如列表、哈希、集合和有序集原创 2021-02-02 09:28:34 · 312 阅读 · 0 评论