Redis
文章平均质量分 90
dx1313113
这个作者很懒,什么都没留下…
展开
-
什么是缓存雪崩、击穿、穿透?
数据一般是存储于数据库中,数据库中的数据都是存在磁盘上的,磁盘读写的速度相较于内存或者CPU中的寄存器来说是非常慢的了。如果用户的请求都直接访问数据库的话,请求数量一上来,数据库很容易就崩溃了,所以为了避免用户直接访问数据库,会用 Redis 作为缓存层。因为Redis 是内存数据库,我们可以直接将数据库的数据缓存在 Redis 中,相当于数据缓存在内存,内存的读写速度比硬盘快很多,这样大大提升了系统的性能。引入了缓存层,就会有缓存异常的三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。通常为了保证缓存中的数据原创 2023-11-18 22:16:47 · 392 阅读 · 0 评论 -
Redis 持久化
当开启了混合持久化时,在 AOF 重写日志时,fork 出来的重写子进程会先将与主线程共享的内存数据以 RDB 方式写入到 AOF 文件,然后主线程处理的操作命令会被记录在重写缓冲区里,重写缓冲区里的增量命令会以 AOF 方式写入到 AOF 文件,写入完成后通知主进程将新的含有 RDB 格式和 AOF 格式的 AOF 文件替换旧的 AOF 文件。加载完 RDB 的内容后,才会加载后半部分的 AOF 内容,这里的内容是 Redis 后台子进程重写 AOF 期间,主线程处理的操作命令,可以使得。原创 2023-09-28 11:24:43 · 227 阅读 · 0 评论 -
Redis 线程模式
之所以 Redis 为 [关闭文件、AOF 刷盘、释放内存] 这些任务创建单独的线程来处理,是因为这些任务的操作都是很耗时的,如果把这些任务都放在主线程来处理,那么 Redis 主线程就很容易发生阻塞,这样就无法处理后续的请求了。图中的蓝色部分是一个事件循环,是由主线程负责的,可以看到网络 I/O 和命令处理都是单线程。后台线程相当于一个消费者,生产者把耗时任务丢到任务队列中,消费者(BIO)不停轮询这个队列,拿出任务就去执行对应的方法即可。的,这也是常说的 Redis 是单线程的原因。原创 2023-09-26 13:50:48 · 337 阅读 · 0 评论 -
Redis 数据结构
随着Redis 版本更新,后面又支持了四种数据类型:BitMap(2.2版本新增)、HyperLogLog(2.8 版本新增)、GEO(3.2版本新增)、Stream(5.0版本新增)。String类型的底层的数据结构实现主要是 SDS (简单动态字符串)。Redis 提供了丰富的 数据类型 , 常见的有五种数据类型:String(字符串),Hash(哈希),List(列表)、Set(集合)、Zset(有序集合)。Hash 类型的底层数据结构是由。String 类型的内部实现。Set 类型内部实现。原创 2023-09-22 18:25:39 · 293 阅读 · 2 评论 -
什么是 Redis?
Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成的,因此,常用于。Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息)、Stream(流)、并且对数据类型的操作都是的,因为执行命令由单线程负责的,不存在并发竞争的问题。原创 2023-09-22 12:05:31 · 476 阅读 · 0 评论