Redis
文章平均质量分 78
J.King
这个作者很懒,什么都没留下…
展开
-
Redis 保证数据一致性方案解析
谈谈一致性一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大弱一致性:这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值,也不承诺多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(比如秒级别)后,数据能够达到一致状态最终一致性:最终一致性是弱一致性的一个特例,系统会保证在一定时间内,能够达到一个数据一致的状态。这里之所以将原创 2022-03-22 23:04:03 · 16431 阅读 · 4 评论 -
Redis 分布式锁实现
一、什么是分布式锁分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往需要互斥来防止彼此干扰来保证一致性。二、分布式锁需要具备哪些条件在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行高可用、高性能的获取锁与释放锁具备可重入特性具备锁失效机制、防止死锁具备非阻塞锁特性,即没有获取到锁直接返回获取锁失败三、分布式锁的实现有哪些数据库Redis(setnx命令)Zookeeper(临时节点)原创 2022-03-21 21:28:14 · 686 阅读 · 0 评论 -
Redis 两种持久化机制 RDB 和 AOF
Redis 是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase) 和 AOF(Append Only File)。一、持久化流程既然 Redis 的数据可以保存在磁盘上,那么这个流程是什么样的呢?要有下面五个过程:(1)客户端向服务端发送写操作(数据在客户端的内存中)。(2)数据库服务端接收到写请求的数据(数据在服务端的内存中)。(3)服务端调用write这个系统调用,将数原创 2022-03-19 23:37:48 · 242 阅读 · 0 评论 -
Redis 缓存穿透和缓存雪崩解决方案
一、缓存穿透什么是穿透?前提:模拟一个不存在的订单号xxx1、Resi 中无此值2、MySQL 中也我也此值,但是一直被查询缓存层和持久层都不会命中,在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去了缓存保护后端持久的意义。解决方案:1. 缓存空对象缓存空对象:是指在持久层没有命中的情况下,对key进行set (key,null)缓存空对象会有两个问题:第一,value为null 不代表不占用内存空间,空值做了缓原创 2022-03-19 20:16:26 · 918 阅读 · 0 评论 -
Redis 过期策略和内存淘汰机制
过期删除假如Redis 只能存 5G 数据,可是你写了 10G,那会删 5G 的数据。怎么删的,这个问题思考过么?还有,你的数据已经设置了过期时间,但是时间到了,内存占用率还是比较高,有思考过原因么?答案是:定期删除+惰性删除为什么不用定时删除策略?定时删除,用一个定时器来负责监视 key ,过期则自动删除。虽然内存及时释放,但是十分消耗 CPU 资源。在大并发请求下,CPU 要将时间应用在处理请求,而不是删除 key ,因此没有采用这一策略。定期删除+惰性删除是如何工作的呢?定期删除 是指 R原创 2022-03-18 23:53:00 · 684 阅读 · 0 评论 -
Redis 介绍及 SpringBoot中 的简单使用
一、Redis 是什么Redis 是一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server (远程数据服务),使用C语言编写,Redis是一个key-value存储系统(键值存储系统),支持丰富的数据类型,如:String、list、set、zset、hash。Redis 是一种支持 key-value 等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。使用C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久原创 2022-03-18 00:32:42 · 1458 阅读 · 0 评论