Redis的前世今生
Redis 是什么 ?
Redis(Remote Dictionary Server ),即远程字典服务,作者是Salvatore Sanfilippo,来自意大利的西西里岛。
1、使用ANSI C编写的开源的、免费的;
2、支持多种数据结构(字符串、哈希、列表、集合、有序集合);
3、遵守BSD协议,基于内存存储的 K-V 数据库,不同的级别的磁盘持久化;
4、提供多种语言的API;
5、C/S通讯模型单进程单线程模型
为什么要有Redis ?
常识储备
1、数据可以存放在磁盘文件中和内存中;
2、影响访问磁盘文件速度的有两个重要指标:带宽(吞吐量)、寻址。在带宽一定的情况下磁盘文件的寻址是毫秒级(ms),内存的寻址是纳秒(ns),两者相差了10万倍左右;
诞生背景
1、早期数据存放在磁盘文件中,查询效率受带宽和寻址之间的影响,在数据量很小的情况下,查询效率并不会很慢;
2、当数据量很大的情况下(比如这个文件有10g),从一个文件中检索出我们需要的内容(比如说字符串),此时寻址的时间就会变得很漫长,严重影响客户端的体验;
3、此时数据库随潮流诞生,比如MySql,虽然数据也是存放在磁盘文件中,但是会采用datepage分治,在底层抽象维护成一个个的数据格子,同时在内存中维护索引,利用内存检索快的特点,快速命中目标,然后快速命中格子,检索出自己需要的数据;
4、如果数据量特别特多大,并且索引无法命中,此时数据库仍然会对文件从头到尾扫描,如果这个时候采用基于内存的关系型数据库,那查询效率就提高了将近10万倍。 SAP 关系型内存数据库就诞生了,但是它有一个显著的特点,特别昂贵,一般企业用不起。
5、我们既想提升查询效率,又不想花钱怎么办呢?我们继续思考,磁盘中的数据是否是我们经常用的呢?能否把经常用的和不经常用的区分开,也就是将热点数据拿出来存在内存中,冷数据等待要查询的时候再加载到内存,并定期删除内存呢?
在这种前提下,Redis来了。
Redis可以用来做什么 ?
1、存放数据
2、session共享、分布式锁
3、消息发布、订阅