既然有Map了,为什么还要有Redis? 您所在的位置:网站首页 什么是xml,xml的特点有哪些 既然有Map了,为什么还要有Redis?

既然有Map了,为什么还要有Redis?

2023-05-24 02:30| 来源: 网络整理| 查看: 265

以下内容转自掘金 作者:哪吒编程 在这里插入图片描述

同样是缓存,用map不行吗? Redis可以存储几十个G的数据,Map行吗?Redis的缓存可以进行本地持久化,Map行吗?Redis可以作为分布式缓存,Map只能在同一个JVM中进行缓存;Redis支持每秒百万级的并发,Map行吗?Redis有过期机制,Map有吗?Redis有丰富的API,支持非常多的应用场景,Map行吗? 在这里插入图片描述 Redis为什么是单线程的? 代码更清晰,处理逻辑更简单;不用考虑各种锁的问题,不存在加锁和释放锁的操作,没有因为可能出现死锁而导致的性能问题;不存在多线程切换而消耗CPU;无法发挥多核CPU的优势,但可以采用多开几个Redis实例来完善; Redis真的是单线程的吗? Redis6.0之前是单线程的,Redis6.0之后开始支持多线程;Redis内部使用了基于epoll的多路服用,也可以多部署几个Redis服务器解决单线程的问题;Redis主要的性能瓶颈是内存和网络;内存好说,加内存条就行了,而网络才是大麻烦,所以Redis6内存好说,加内存条就行了;而网络才是大麻烦,所以Redis6.0引入了多线程的概念,Redis6.0在网络IO处理方面引入了多线程,如网络数据的读写和协议解析等,需要注意的是,执行命令的核心模块还是单线程的。 Redis优缺点

1.优点

Redis是KV数据库,MySQL是关系型数据库,Redis速度更快;Redis数据操作主要在内存中,MySQL主要将数据存储在硬盘,Redis速度更快;Redis同样支持持久化(RDB+AOF),Redis支持将数据异步将内存的数据持久化到硬盘上,避免Redis宕机出现数据丢失的问题;Redis性能极高,读的速度是110000次/秒,写的速度是81000次/秒;Redis数据类型丰富,不仅支持KV键值对,还支持list、set、zset、hash等数据结构的存储;Redis支持数据的备份,即master-slave模式的数据备份;Redis支持简单的事务,操作满足原子性;Redis支持读写分离,分担读的压力;Redis支持哨兵模式,实现故障的自动转移;单线程操作,避免了频繁的上下文切换;采用了非阻塞I/O多路复用机制,性能卓越;

2.缺点

数据存储在内存,容易造成数据丢失;存储容量受内存的限制,只能存储少量的常用数据;缓存和数据库双写一致性问题;用于缓存时,容易出现内存穿透、缓存击穿、缓存雪崩的问题;修改配置文件后,需要进行重启,将硬盘中的数据同步到内存中,消耗的时间较长,而且数据同步的时间里Redis不能提供服务; Redis常见业务场景 Redis是基于内存的nosql数据库,可以通过新建线程的形式进行持久化,不影响Redis单线程的读写操作通过list取最新的N条数据模拟类似于token这种需要设置过期时间的场景发布订阅消息系统定时器、计数器缓存加速、分布式会话、排行榜、分布式计数器、分布式锁;Redis支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等特性;在这里插入图片描述 总结

Redis是一个key-value存储系统,支持10种数据类型,总结了为何要用Redis替代map作为程序缓存、Redis为什么是单线程的、Redis的优缺点、Redis的常用场景,做了一次Redis的快速入门。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有