网站建设公司投诉电话,邢台视频推广,商标设计模板,网站触屏版Redis是什么Redis数据类型Redis应用场景缓存计数器分布式会话排行榜最新列表分布式锁消息队列 Redis出现的问题穿透击穿雪崩 Redis为什么速度快 Redis是什么
redis是一种高速缓存数据库
Redis数据类型
string hash list set zset
Redis应用场景
缓存 Redis作为缓存层… Redis是什么Redis数据类型Redis应用场景缓存计数器分布式会话排行榜最新列表分布式锁消息队列 Redis出现的问题穿透击穿雪崩 Redis为什么速度快 Redis是什么
redis是一种高速缓存数据库
Redis数据类型
string hash list set zset
Redis应用场景
缓存 Redis作为缓存层MySQL作为存储层绝大部分请求的数据都是从Redis中获取由于Redis具有支撑高并发的特性所以缓存通常能起到加速读写和降低后端压力的作用 计数器 使用Redis作为计数的基础工具它可以实现快速计数、查询缓存的功能同时数据可以异步落地到其他数据源 分布式会话 一个分布式Web服务将用户的Session信息例如用户登录信息保存在各自服务器中这样会造成一个问题出于负载均衡的考虑分布式服务会将用户的访问均衡到不同服务器上用户刷新一次访问可能会发现需要重新登录这个问题是用户无法容忍的 为了解决这个问题可以使用Redis将用户的Session进行集中管理在这种模式下只要保证Redis是最高可用和扩展性的每次用户更新或者查询登录信息都直接从Redis中集中获取 排行榜 使用有序set可以做一个排行榜。例如视频网站需要对用户上传的视频做排行榜榜单的维度可能是多个方面的按照时间、按照播放数量、按照获得的赞数 最新列表 依赖list的数据具有顺序的特征对信息进行管理 使用队列模型解决多路信息汇总合并的问题 使用栈模型解决最新消息的问题 分布式锁 想要实现分布式锁必须要求Redis有【互斥】的能力我们可以使用SETNX命令这个命令表示SET if Not Exists即如果key不存在才会设置它的值否则什么也不做 两个客户端进程可以执行这个命令达到互斥就可以实现一个分布式锁 消息队列 Redis 中list的数据结构实现是双向链表所以可以非常便捷的应用于消息队列生产者 / 消费者模型。消息的生产者只需要通过lpush将消息放入 list消费者便可以通过rpop取出该消息并且可以保证消息的有序性 Redis出现的问题
穿透
缓存穿透指在redis缓存中不存在数据这个时候只能去访问持久层数据库当用户很多时缓存都没有命中就会照成很大压力 解决方案 1布隆过滤器对可能查询的数据先用hash存储 2缓存空对象在没有的数据中存一个空而这些空的对象会设置一个有效期
击穿
缓存击穿指在同一个时间内访问一个请求的请求数过多而在这个时候缓存某个key失效了这个时候就会冲向数据库照成缓存击穿 解决方案 1设置缓存永远不过期 2加互斥锁使用分布式锁保证每个key只有一个线程去查询后端服务而其他线程为等待状态。这种模式将压力转到了分布式锁上
雪崩
缓存雪崩在某个时间段缓存集体过期、redis宕机 解决方案给key的失效时间设置为随机时间避免集体过期双缓存加互斥锁
Redis为什么速度快
1.redis是基于内存的内存的读写速度非常快
2.redis是单线程的省去了很多上下文切换线程的时间
3.redis使用多路复用技术可以处理并发的连接