Redis初识第一期
简介
Redis刚开始开发时,是想作为一种消息队列使用的,但是后续发现它在分布式系统中大放异彩,所以就将它作为缓存使用了。
Redis是基于网络的,可以将内存中的数据共享给别的进程或者别的主机的进程使用。
Redis相较于MySQL,由于Redis是基于键值对存储数据的,这不同于MySQL使用表来存数据,所以Redis也是一种非关系型数据库。而且Redis由于是在内存上处理数据,这注定了它处理数据的能力远远快于MySQL。其次,由于“二八原则”的存在,即80%的业务场景很多时候只需要20%的数据就可以完成,所以Redis存的数据也足以应对大多数场景了。
Redis的一些特性
1.最主要的特性就是在内存中存储数据,并且使用键值对的方式进行存储数据。
2.Redis还支持使用脚本来进行批量处理操作。
3.Redis还可以使用C/C++或者Rust语言来进行扩展。
4.Redis同时也支持数据持久化,可以将内存的数据备份到磁盘上,当服务器因为重启而导致数据丢失时,Redis可以在服务器重启时将数据从磁盘上重新进行加载。
5.Redis也支持集群,可以“水平扩展”(类似于分库分表),将数据拆开存到不同主机的Redis数据库上。
6.Redis也支持“主从结构”,所谓主从结构,就是”主“主机负责写数据,并将修改的数据同步到各个“从”主机上,每个”从“主机只支持读操作。
总结:Redis为什么”快“?
1.最主要的原因是Redis在内存上存储和处理数据,而MySQL数据库是在硬盘上进行操作。
2.Redis的核心功能逻辑简单,操作”短快平“。
3.Redis采用IO多路复用(epoll),即一个线程管理多个Socket。
4.Redis处理数据是单线程处理的,对于请求是串行化处理的,这避免了因为多线程竞争而导致的开销。(但是Redis本身是多线程的,只是处理数据是单线程处理的)
5.底层实现是使用的C语言,这是相较于其语言而言,因为MySQL的底层实现也是C语言。