打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
redis概述

缓存是如何实现高性能的
当第一次查询的时候,缓存里面没有数据,回去数据库查,然后存入缓存,当再去查询的时候,或者是查询相同数据的时候,就不用去数据库里面查了,直接去缓存里面找,大大提高了效率,如果这个信息改了的话,我们只需要将缓存里的数据跟数据库里的数据同步一下就行了。


缓存是如何实现高并发的
高峰期的时候有5000个请求,如果缓存里面有数据,就走缓存,比如4000个走缓存,1000个请求走数据库,这就避免了数据库宕机的可能新,缓存是走内存的,不是走磁盘,是可以支持高并发的

redis单线程模型
核心:文件事件处理器
客户端与redis是基于socket进行通信的,当客户端发送set k v请求的时候,会产生AE_READABLE事件,IO多路复用程序会监听这个事件压到队列里面,然后文件事件分派器会找命令请求处理器从socket中读出来key和value,在自己的内存中完成设置

为啥redis单线程模型效率这么高
1.纯内存操作
2.核心是基于非阻塞的io多路复用模型
3.单线程反而避免了多线程频繁的上下文切换问题
io多路复用模型不负责处理,只负责监听socket,有的话就直接压到队列
redis的数据类型以及运用场景
String:做简单的kv缓存
hash:类似map,一般结构化数据,可以把对象缓存再redis
list:可以存储一些列表型的数据结构,还可以通过Irange从某个元素读取多少个元素,实现下拉不分页
set:去重
zset:去重排序,根据分数排序
redis的过期策略
1.设置过期时间(定期删除 惰性删除)
redis内存淘汰机制
如果redis内存占用过多的时候,此时会进行内存淘汰
noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,实在是太恶心了
allkeys-lru:移除最近最少使用的key,一般就是用这个
allkeys-random:随机移除key
volatile-lru:在设置里过期时间的键空间,移除最近最少使用的key
volatile-random:在设置里过期时间的键空间,随机移除key
volatile-tt:在设置里过期时间的键空间,删除最先过期的key
手写LRU算法
public class LRUCache<K, V> extends LinkedHashMap<K, V> {

private final int CACHE_SIZE;

// 这里就是传递进来最多能缓存多少数据
public LRUCache(int cacheSize) {
    super((int) Math.ceil(cacheSize / 0.75)   1, 0.75f, true); // 这块就是设置一个hashmap的初始大小,同时最后一个true指的是让linkedhashmap按照访问顺序来进行排序,最近访问的放在头,最老访问的就在尾
    CACHE_SIZE = cacheSize;
}

@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
    return size() > CACHE_SIZE; // 这个意思就是说当map中的数据量大于指定的缓存个数的时候,就自动删除最老的数据
}

redis不能支撑高并发的瓶颈
单机在几万
reids持久化
redis持久化的意义,在于故障恢复
redis突然挂了,里面有很重要的数据会丢失,重启之后,要去恢复redis很费劲
想办法从内存持久化到磁盘,然后定期同步和备份到一些云存储服务上去,保证数据不丢失全部


如果不做持久化还有可能出现redis缓存雪崩的问题,当重启redis,然后没有做数据备份,所有的请求都会直接去mysql里面去查,这时候就会出现缓存雪崩的显现,mysql直接就挂了,mysql挂了,就无法找到数据恢复到redis。
redis持久化:RDB
每个几分钟,几小时,几天,生成redis内存中数据的一份完整的快照
redis持久化:AOF

redis缓存雪崩
redis宕机,大量数据访问mysql,数据库扛不住这么大的并发,直接挂掉,那么整个系统也就挂了

如何解决缓存雪崩
事前要保证redis的高可用
先去系统内部缓存ehcache查,没有就去redis查。redis没有就去数据库查,但是去数据库查询之前要用hystrix做限流

缓存穿透

来源:https://www.icode9.com/content-2-879251.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
听说Redis都会遇到并发、雪崩等难题?我用10分钟就解决了
架构师必备,了解分层架构中缓存那点事儿
高并发请求的缓存设计策略
Redis的n种妙用不仅仅是缓存
redis常见使用场景总结
分布式之 Redis 复习精讲
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服