本文主要是介绍什么是Redis?Redis为什么如此之快?| 后端学习手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
随着互联网技术的进一步发展,各种类型的应用层出不穷,这导致在当今云计算、大数据盛行的时代,对性能有了更多的需求。
为了克服这一问题,NoSQL应运而生,它同时具备了高性能、可扩展性强、高可用等优点,受到广泛开发人员和仓库管理人员的青睐。
什么是Redis
Redis是一个由ANSIC语言编写,性能优秀、支持网络、可持久化的Key-Value内存的NoSQL数据库,并提供多种语言的API。
Redis数据类型
Redis的常用数据类型主要是 String、List、Hash、Set、ZSet 这5种。
参考上图,Redis数据类型在互联网公司一般有以下应用:
String:缓存、限流、计数器、分布式锁、分布式Session
Hash:存储用户信息、用户主页访问量、组合查询
List:微博关注人时间轴列表、简单队列
Set:赞、踩、标签、好友关系
Zset:排行榜
比如电商在大促销时,Redis会用一些特殊的设计来保证系统稳定,扣减库存可以考虑如下设计:
上图中,直接在Redis中扣减库存,记录日志后通过Worker同步到数据库,在设计同步Worker时需要考虑并发处理和重复处理的问题。
Redis为何那么快
通过上面的应用场景可以看出Redis是非常高效和稳定的,那Redis底层是如何实现的呢?
Redis 的效率很高,官方给出的数据是 100000+QPS,QPS即每秒钟request/事务 数量,这是因为:
1. Redis 完全基于内存,绝大部分请求是纯粹的内存操作,执行效率高。Redis 使用单进程单线程模型的(K,V)数据库,将数据存储在内存中,存取均不会受到硬盘 IO 的限制,因此其执行速度极快。
2. 另外单线程也能处理高并发请求,还可以避免频繁上下文切换和锁的竞争,如果想要多核运行也可以启动多个实例。
3.数据结构简单,对数据操作也简单,Redis 不使用表,不会强制用户对各个关系进行关联,不会有复杂的关系限制,其存储结构就是键值对,类似于 HashMap,HashMap 最大的优点就是存取的时间复杂度为 O(1)。
4.Redis 使用多路 I/O 复用模型,为非阻塞 IO。
注:Redis 采用的 I/O 多路复用函数:epoll/kqueue/evport/select。
选用策略:
1. 因地制宜,优先选择时间复杂度为 O(1) 的 I/O 多路复用函数作为底层实现。
2. 由于 Select 要遍历每一个 IO,所以其时间复杂度为 O(n),通常被作为保底方案。
3. 基于 React 设计模式监听 I/O 事件。
快来学习鸭!
不吹不黑,Redis因其优秀的素质已成为开发者必备技术之一,CSDN学院邀请到网易云担任云计算高级工程师的阿文老师共同出品《Redis从入门到精通》课程。
限量300单,扫码购买!
59元抢购啦!
这篇关于什么是Redis?Redis为什么如此之快?| 后端学习手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!