Redis(缓存)
一共55篇文章
专题:第13期
-
缓存热点key是什么,如何解决
参考答案 缓存中的一个Key(比如一个促销商品),在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。 解决方案:对缓存查询加锁,如果KEY不存在,就加锁,然后查DB入缓存,然后解锁;其他进程如果发现有锁就等待,然后等解锁后返回数据或者进入DB查询。 以上,…...- 宝妹儿
- 22
- 0
-
Redis回收进程如何工作的
参考答案 一个客户端运行了新的命令,添加了新的数据。 Redis检查内存使用情况,如果大于maxmemory的限制, 则根据设定好的策略进行回收。 一个新的命令被执行。 不断地穿越内存限制的边界,通过不断达到边界,然后不断地回收回到边界以下。 如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保存到一个新的键),不用多久内存限制就会被这个内存使用量超越。 以上,是Redis面…...- 宝妹儿
- 13
- 0
-
Redis如何实现延时队列
参考答案 使用sortedset,使用时间戳做score,消息内容作为key。 调用zadd来生产消息,消费者使用zrangbyscore获取n秒之前的数据做轮询处理。 以上,是Redis面试题【Redis如何实现延时队列】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ ---end---...- 宝妹儿
- 90
- 0
-
使用Redis做过异步队列吗,是如何实现的
参考答案 Redis做异步队列: 使用list类型保存数据信息,rpush生产消息,lpop消费消息。 当lpop没有消息时,可以sleep一段时间,然后再检查有没有信息;如果不想sleep的话,可以使用blpop,在没有信息的时候,会一直阻塞,直到信息的到来。 Redis可以通过pub/sub主题订阅模式实现一个生产者,多个消费者。同时它也存在一定的缺点,当消费者下线时,生产的消息会丢失。 &n…...- 宝妹儿
- 15
- 0
-
Redis常见性能问题和解决方案
参考答案 Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化。 如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。 为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内。 尽量避免在压力较大的主库上增加从库。 Master调用BGREWRITEAOF重写AOF文件,AOF在重写的时候会占大量的CPU和内…...- 宝妹儿
- 10
- 0
-
如何保证缓存与数据库双写时的数据一致性
参考答案 只要用缓存,就可能会涉及到缓存与数据库双存储双写。只要是双写,就一定会有数据一致性的问题。 如何解决数据一致性的问题呢?有两个方案供参考: 解决方案一:读请求和写请求串行化,串到一个内存队列里去。 这种方式可以保证一定不会出现不一致的情况。 串行化之后,会导致系统的吞吐量会大幅度的降低,用比正常情况下多几倍的机器去支撑线上的一个请求。 一般来说,如果系统不是严格要求缓存+数据库必须一致性…...- 宝妹儿
- 61
- 0
-
Redis与Memcached的区别
参考答案 Redis和Memcached都是非关系型内存键值数据库,一般情况下,大多数企业都采用 Redis 来实现缓存。 Redis与Memcached的相似点: Redis和Memcached都是内存数据存储系统,都用作内存中的键值数据存储。 Redis和Memcached都属于NoSQL系列数据管理解决方案,两者都基于键值数据模型。 Redis和Memcached都将所有数据保存在RAM中。…...- 宝妹儿
- 60
- 0
-
Jedis与Redisson对比有什么优缺点
参考答案 Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持。 Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比较,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。 Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。 以上,是Redi…...- 宝妹儿
- 33
- 0
-
Redis和Redisson有什么关系
参考答案 Redisson是一个高级的分布式协调Redis客服端,能帮助用户在分布式环境中轻松实现一些Java的对象。 例如: Bloom filter, BitSet, Set, SetMultimap, ScoredSortedSet, SortedSet, Map, ConcurrentMap, List, ListMultimap, Queue, BlockingQueue, Deque,…...- 宝妹儿
- 55
- 0
-
Redis支持的Java客户端都有哪些,官方推荐用哪个
参考答案 Redis支持的Java客户端,常见的有:Redisson、Jedis、lettuce等等。 官方推荐使用Redisson。 以上,是Redis面试题【Redis支持的Java客户端都有哪些,官方推荐用哪个】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ ---end---...- 宝妹儿
- 77
- 0
-
什么是缓存降级,如何解决缓存降级
参考答案 缓存降级的概念 当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。 缓存降级的最终目的:保证核心服务可用,即使是有损的。而且有些服务是无法降级的,例如,加入购物车、结算。 缓存降级的解决方案 在进行降级之前,要先对系统进行梳理,确认哪些必须要保…...- 宝妹儿
- 141
- 0
-
什么是缓存预热,如何解决缓存预热
参考答案 缓存预热的概念 缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。 缓存预热可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接查询事先被预热的缓存数据。 缓存预热的解决方案 直接写个缓存刷新页面,上线时手工操作下。 数据量不大,可以在项目启动的时候自动进行加载。 定时刷新缓存。 以上,是Redis面试题【什么是缓存预热,如何解决缓存预热】的参…...- 宝妹儿
- 71
- 0