随笔分类 -  缓存

摘要:Redis对已过期的key如何处理? 设置了expire的key缓存过期了,但是服务器的内存还是会被占用,这是因为redis所基于的两种删除策略。 redis有两种策略: (主动)定时删除 定时随机的检查过期的key,如果过期则清理删除。(每秒检查次数在redis.conf中的hz配置) (被动)惰 阅读全文
posted @ 2020-10-14 10:38 gaopengpy
摘要:Redis号称支持并发11万读操作、并发8万写操作。 1、使用Redis有什么缺点? 缓存和数据库双写一致性问题 缓存雪崩问题 缓存击穿问题 缓存的并发竞争问题 2、Redis是单线程还是多线程? 回答: 主线程是单线程, 但6.0版本前后线程机制有做调整 3、MySQL 里有 2000w 数据,r 阅读全文
posted @ 2020-08-26 09:36 gaopengpy
摘要:如果大量的数据失效时间都十分集中,如果失效时间一样,又刚好在失效的时间点大量请求涌入, 就有可能造成缓存雪崩,我们可以从事前、事中、事后三个方面来预防缓存雪崩: 事前:Redis 高可用,主从+哨兵,Redis cluster,避免全盘崩溃。 事中:本地 ehcache 缓存 + Hystrix 限 阅读全文
posted @ 2020-07-10 09:20 gaopengpy
摘要:AOF: Append Only File RDB会丢失最后一次备份的rdb文件,但是其实也无所谓,其实也可以忽略不计,毕竟是缓存,丢了就丢了,但是如果追求数据的完整性,那就的考虑使用AOF了。 AOF特点 以日志的形式来记录用户请求的写操作。读操作不会记录,因为写操作才会存存储。 文件以追加的形式 阅读全文
posted @ 2020-01-13 23:25 gaopengpy
摘要:RDB: Redis DataBase 1. 什么是RDB RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。 2. 备份与恢复 内存备份 --> 磁盘临时文件临时文件 -- 阅读全文
posted @ 2020-01-13 23:14 gaopengpy
摘要:redis设置配置文件的maxmemory参数,可以控制其最大可用内存大小(字节)。 那么当所需内存,超过maxmemory怎么办? 这个时候就该配置文件中的maxmemory-policy出场了。 所以,当内存占用满了以后,redis提供了一套缓存淘汰机制:MEMORY MANAGEMENT(内存 阅读全文
posted @ 2020-01-13 22:24 gaopengpy
摘要:一、什么是缓存穿透,如何预防? 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,请求直接打在了数据库上。 对于缓存穿透的话一般来说只需要针对空值缓存就行,过期时间设置5-10分钟,这样就流量就不会打在数据库上导致死机宕机。 二、什么是缓存击穿,如何预防? 缓存击穿,是指一个key非常热点 阅读全文
posted @ 2020-01-12 11:59 gaopengpy
摘要:Redis支持六种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)和基数(HyperLogLog)。 一:String(字符串) string 是 redis 最基本的类型,一个 key 对应一个 value。 stri 阅读全文
posted @ 2020-01-11 12:53 gaopengpy
摘要:Redis是单线程的,但为什么这么快? 1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)。 2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的。 3、采用单线程,避免了不 阅读全文
posted @ 2020-01-07 12:38 gaopengpy