Loading

摘要: package main import "fmt" func main() { fmt.Println("f1 result: ", f1()) fmt.Println("f2 result: ", f2()) } func f1() int { var i int defer func() { i 阅读全文
posted @ 2020-08-12 15:13 Allfuture 阅读(246) 评论(0) 推荐(0) 编辑
摘要: Redis 的持久化策略有两种: RDB:快照形式是直接把内存中的数据保存到一个 dump 的文件中,定时保存,保存策略。 RDB是Redis的一个快照文件,比如说现在的时间是下午14:00,Redis做了一次快照的备份,把这个数据备份到了RDB,那么这个RDB文件的数据就只停留在下午两点,下午两点 阅读全文
posted @ 2020-08-12 10:39 Allfuture 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 缓存击穿不同的是缓存击穿是指一个 Key 非常热点,在不停地扛着大量的请求,大并发集中对这一个点进行访问, 当这个 Key 在失效的瞬间,持续的大并发直接落到了数据库上,就在这个 Key 的点上击穿了缓存.。 解决办法: 缓存击穿的话,设置热点数据永不过期,或者加上互斥锁 使用互斥锁(mutex k 阅读全文
posted @ 2020-08-12 10:26 Allfuture 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 缓存穿透是指查询一个一不存在的数据。 例如:从缓存redis没有命中,需要从mysql数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。 解决思路: 如果查询数据库也为空,直接设置一个默认值存放到缓存,这样第二次到缓冲中获取就有值了,而不会继续访问 阅读全文
posted @ 2020-08-12 10:22 Allfuture 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 一:Redis 雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。 比如一个雪崩的简单过程: 1、redis集群大面积故障 2、缓存失效,但依然大量请求访问缓存服务redis 3、redis大量失效后,大量请求转向到mys 阅读全文
posted @ 2020-08-12 10:18 Allfuture 阅读(204) 评论(0) 推荐(0) 编辑