要谈起目前流行的NoSQL,就不得不提本文的主角——Redis。Redis是一款基于内存的Key-Value结构的数据库,再加上其底层采用单线程、多路I/O复用模型,Redis的运行速度非常快,可以很好的完成高并发大数据的吞吐任务。
Redis像一个超大的Map键值对,需要通过键来找数据。Redis支持多种数据类型,其中包括 string字符串类型、hash哈希类型、list列表( 链表 类型、set集合类型和zset有序集合类型。
想要了解更多关于Redis信息可以查看官方网站 https://redis.io/
Redis也提供了一个中文网站 http://www.redis.cn/
很多技术人员喜欢把Redis叫“缓存”,Redis明明是一种数据库,为什么会叫一个不像数据库的名称?想要回答这个问题,要先了解缓存是什么。
缓存的英文为cache,原本是指集成电路上的高速存储器。CPU在做计算时会频繁读写数据,如果CPU直接在内存里频繁读写,处理的效率是很低的,但如果CPU在缓存中频繁读写,处理的效率就会极大的提升。因此CPU在处理一条数据时,数据会先从内存移动到缓存中,在缓存中完成所有处理之后,再回到内存中,其移动过程可简化成图1。缓存是快车道,内存是慢车道,数据只在慢车道跑了两次,大部分时间都在快车道奔驰,这样就极大的节省了运输时间。这就是缓存在硬件中作用。
图1 数据的移动过程
随着互联网的发展,网络越来越发达,很多日常事务都转移到了线上,这就出现了当今互联网行业最棘手的问题——高并发与大数据。例如某抢购网站发生如图2所示场景,同一时刻有几千甚至几万人查询数据库中的同一张表,这样数据库会承受极大的压力。关系型数据库虽然看上去效率很高,但实际上非常脆弱。技术人员尝试过很多办法去解决高并发问题 负载均衡、分库分表、升级设备、延迟查询,但这些问题要么成本极高,要么牺牲了用户体验,有些甚至根本毫无作用。
图2 多个请求同时查询数据库,数据库压力过大
最后技术人员想到了缓存,如果为网站项目提供一个类似CPU缓存的东西,让它去回应海量的访问请求,成为如图3所示的一道屏障,不就缓解了数据库的压力了吗?于是缓存从原先单纯的硬件概念,变成了硬件、软件都大量采用的高速读写方案。
图3 由缓存提供静态数据,降低了数据库压力
目前很多项目首选的缓存软件正是Redis。Redis是Key-Value结构,查询数据的时间复杂度很低,非常善于快速查询;Redis是基于内存的数据库,能有效降低服务器硬盘的I/O压力;Redis是单线程的,很多命令都属于“原子操作”,可以轻松处理高并发请求。以上种种优点迅速让Redis成为缓存中间件的领头军,以至于很多技术人员习惯性的将Redis与缓存划上了等号,似乎忘了Redis仍是一种数据库!
Powered by 小羊羔外链网 8.3.10
©2015 - 2024 小羊羔外链网
您的IP:18.188.40.207,2024-04-18 07:45:21,Processed in 0.04758 second(s).