前言
由于项目的原因所以需要深入Redis学习,所以我会不定期的更新~
什么是Redis
他是开源的BCD协议,使用C编写的,他是把数据存储在内存中的,使用的是no only sql 数据库,是键值对的方式
Redis的数据类型
redis支持非常多的数据类型,字符串,散列,列表,集合,有序集合,范围查询
支持语言
java,C++,C,Python
Redis的使用用途
- 缓存
- 中间件
Nosql数据分类
KV、文档、列、图、对象、xml
Redis的历史
最开始发明redis是为了解决网络负载问题才开发出的redis,同时也是为了解决mysql带来的缺陷,大量的io输入输出
最开始redis出现的原因是下面的架构图
由于网站的增多,用户访问量的增多,导致有大批量的输入和输出,当时采用的是mysql数据,mysql一般是把数据存储在硬盘上的。所以导致大量的输入输出。这个时候操作网站的时候会非常的卡,性能非常低,所以这个时候就准备自己写一个数据库,基于的是key value形式的,并且他是存储在内存中的,所以减少了io输入输出
Redis与Mysql对比
对于mysql,当我们想查询数据的时候,首先我们现在内存中找到索引值,然后通过索引值去硬盘上查找,但是如果访问量大的时候会导致io阻塞
针对于redis我们把数据直接存放到内存中,不对硬盘进行操作
Redis的功能
- 持久化:把内存中的数据保留在硬盘上,起到备份的作用
- 发布订阅:把消息同时发送到客户端,使用广播的形式:例如卡槽的形式
- 过期键值:设置Redis存储中该key存储的时间 -
- 事物功能:原子性,使用乐观锁(只在提交的时候检查)
- 主从复制:多个复制品,减少压力,安全
- sentinel哨兵:用于redis的监控,则自动转移
- redis集群|:一部分是读一部分是写,减少了压力