Redis
文章平均质量分 65
lx_追风
机会不是留给有准备的人,而是留给已经准备好的人
展开
-
借助Redis的过期机制和分布式锁实现定时任务
一、固定执行定时任务的机器方法:在多台机器中选择一台执行定时任务,每次执行的时候回判断当前机器和指定的机器是否一致或者启动时就指定好执行机器优缺点:这种方法是可以有效避免多次执行的情况,,但是最明显的缺点就是单点故障问题,如果你指定的机器出现了宕机,,任务就不会执行了,业务逻辑就会奔溃。二、在数据库建立多张表,从定时任务表中获取定时方法方法:由于MySQL存在表锁和行锁(MyISAM引擎只支持表锁,而InnoDB支持行锁和表锁两种),每次执行定时任务的时候从数据库表中读取记录,只有读取到的记录标识当前任务状原创 2022-07-13 20:22:39 · 1333 阅读 · 1 评论 -
缓存初始化
@PostConstruct基本:@PostConstruct注解好多人以为是Spring提供的。其实是Java自己的注解。Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化原创 2021-04-02 17:51:12 · 236 阅读 · 0 评论 -
缓存并发竞争
问题Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了。而且 Redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。问题分析某个时刻,多个系统实例都去更新某个 key。可以基于 zookeeper 实现分布式锁。每个系统通过 zookeep原创 2021-02-24 17:27:48 · 365 阅读 · 0 评论 -
缓存雪崩、缓存穿透、缓存击穿
问题了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?问题剖析1、缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着急,重启数据库,但是数据库立马又被新的流量给打死了。这就原创 2021-02-24 17:21:27 · 262 阅读 · 0 评论 -
如何保证缓存与数据库的双写一致性?
面试题如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的原创 2021-02-24 16:14:15 · 273 阅读 · 0 评论 -
为什么要用缓存?缓存使用不当会造成什么后果?
一、为什么要用缓存?用缓存,主要有两个用途:高性能、高并发。1.高性能假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办?缓存啊,折腾 600ms 查出来的结果,扔缓存里,一个 key 对应一个 value,下次再有人查,别走 mysql 折腾 600ms 了,直接从缓存里,通过一个 key 查出来一个 value,2ms 搞定。原创 2021-02-24 15:58:07 · 898 阅读 · 0 评论 -
Redis常见的5中类型
一、前言Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。二、类型介绍1、String字符串类型2、List列表类型3、Set集合类型4、Hash散列类型5、有序集合ZSet数据原创 2021-02-24 14:33:10 · 167 阅读 · 0 评论