Loading

摘要: Redis是单线程的,但是为什么还那么快 完全基于内存的,C语言编写 采用单线程,避免不必要的上下文切换可竞争条件 使用多路IO复用模型,非阻塞IO 例如: bgsave 和 bgrewriteaof 都是在后台执行操作,不影响主线程的正常使用,不会产生阻塞 解释一下多路IO复用模型? 多路IO复用 阅读全文
posted @ 2024-04-28 17:18 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: Redis集群有哪些方案? 在Redis中提供的集群方案总共有三种:主从复制、哨兵模式、Redis分片集群 主从同步 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据,主节点写入数据之后,需要 阅读全文
posted @ 2024-04-28 16:51 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: Redis分布式锁如何实现 ? 在Redis中提供了一个命令setnx(SET ifnot exists) 由于Redis的单线程的,用了命令之后,只能有一个客户端对某一个key设置值,在没有过期或删除key的时候是其他客户端是不能设置这个key的。 如何控制Redis实现分布式锁有效时长呢? Re 阅读全文
posted @ 2024-04-26 11:53 worshipone 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Redis过期策略有几种? Redis中提供八种过期策略,默认是noeviction,即不删除任何数据,当内存不足时会直接报错。可以在Redis的配置文件中进行设置。 noeviction:不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。 volatile-ttl: 对设置了TTL 阅读全文
posted @ 2024-04-26 10:39 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 在Redis中提供了两种数据过期删除策略: 惰性删除:在设置该key过期时间后,我们不去管它。当需要该key时,我们会检查其是否过期,如果过期,就删除它;反之,返回该key。 定期删除:每隔一段时间,我们会对一些key进行检查,删除其中过期的key。定期清理有两种模式: SLOW模式:使用定时任务, 阅读全文
posted @ 2024-04-26 10:18 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 缓存穿透 缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况大概率是遭到了攻击。 解决方案的话,我们通常都会用布隆过滤器来解决它。 布隆过滤器主要是用于检索一个元素是否在一个集合中。我们当时使 阅读全文
posted @ 2024-04-25 17:45 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: redis做为缓存,数据的持久化是怎么做的? 在Redis中提供了两种数据持久化的方式: RDB AOF 这两种持久化方式有什么区别呢? RDB是一个快照文件,它是把redis内存存储的数据写到磁盘上,当redis实例宕机恢复数据的时候,方便从RDB的快照文件中恢复数据。 AOF的含义是追加文件,当 阅读全文
posted @ 2024-04-25 17:40 worshipone 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 介绍自己简历上的业务 我们当时是把文章的热点数据存入到了缓存中,虽然是热点数据,但是实时要求性并没有那么高,所以,我们当时采用的是异步的方案同步的数据。 我们当时是把抢券的库存存入到了缓存中,这个需要实时的进行数据同步,为了保证数据的强一致我们当时采用的是redisson提供的读写锁来保证数据的同步 阅读全文
posted @ 2024-04-25 16:57 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 原链接 阅读全文
posted @ 2024-04-24 23:29 worshipone 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 根据《Java Concurrency in Practice》的定义,一个线程安全的 class 应当满足以下三个条件: 多个线程同时访问时,其表现出正确的行为。 无论操作系统如何调度这些线程, 无论这些线程的执行顺序如何交织(interleaving)。 调用端代码无须额外的同步或其他协调动作。 阅读全文
posted @ 2024-04-24 16:46 worshipone 阅读(1) 评论(0) 推荐(0) 编辑