Redis简单总结

Redis:

   是一款基于键值对的非关系型数据库;他是基于内存存储,也可以将数据进行磁盘存储。

redis大部分功能是用来做缓存,计数器,排行榜,消息队列,分布式锁;

1.缓存:作为缓解数据库读取数据压力,

2.计数器:记录浏览量,点赞数

redis为什么这么快:

​    1.基于内存操作,

​    2.单线程,避免了线程切换和竞态产生的资源消耗

​    3.基于非阻塞的IO多路复用机制

​    4.对于几种数据结构进行了大量的优化,并且缓存了时间

什么是IO多路复用模型:主线程去监控,其他线程去执行,谁执行完毕了就通知主线程我这边准备好了,你过来进行你主线程的操作就行了。

redis是基于内存操作,CPU并不是他的最大瓶颈,他的瓶颈是内存和网络限制

redis6.0之后的多线程是怎么回事:

​    其实他真正处理redis指令的线程还是只有一个,他是能够允许多个客户端socket连接

redis持久化方式有2个:RDB和AOF

​    1.RDB叫快照:记录某一时刻redis中数据(在某一时刻,进行快照,数据不全,恢复速度比AOF快,但是存在兼容性问题,不能实时记录)

​    2.AOF:指令追加写入文件,每时每刻将redis的操作指令写入日志(但是恢复速度慢,他会在执行一遍记录的redis指令,数据量大)

Redis的主从复制相当于一种服务冗余,当主节点出现问题,从节点提供所有服务。

主从复制原理:

​    1.从节点redis保存主节点(master)的节点信息:ip和port

​    2.建立主从节点的连接,

​    3.发送ping指令,看看通信会话是否正常

​    4.权限验证

​    5.同步主节点数据集

​    6.命令持续复制,主节点会持续将写命令发送给各从节点,保证数据一致性。

主从复制会出现的问题:

​    1.当主节点发生故障之后,需要手动将一个从节点提升为主节点,并修改其他从节点的配置信息,把需要连接的主节点配置改为当前的,并重新进行数据同步
​    2.主节点受单机的内存影响,

主从是解决高可用问题,哨兵是解决分布式。

Redis  Sentinel:哨兵模式:

它分为哨兵节点和数据节点

哨兵节点:不存储数据,对数据节点进行监控

数据节点:分为主节点,从节点,存储数据

哨兵功能:

​    1.监控:监控主节点和所有的从节点是否正常运行

​    2.自动故障转移:当主节点不工作时,哨兵会进行自动故障转移,他会将失效的主节点下的其中一个从节点变为主节点并将,其他从节点的配置进行修改

​    3.配置提供者:通过哨兵来获取主从节点信息

​    4.可以将故障转移结果通知给客户端

用scan指令来代替keys指令

String类型的数据结构:SDS简单动态字符串

1. int:8个字节的长整形
2. embstr:小于等于39个字节的字符串
3. raw:大于39个字节的字符串


SDS优点:

1. 有单独的统计变量len和free,可以很方便的获取字符串的长度
2. 内容存放在柔性数组里面,SDS对上册暴露的指针不是指向结构体SDS的指针,而是直接指向这个柔性数组buf的指针。
3. 由于有len的存在,读写字符串是不依赖“\0”,保证了二进制安全

SDS他是预先分配的字符数组,实际字符串占用用不了那么多位。

在java语言体系下有三个常用的redis客户端:Jedis,Redisson,Lettuce

你可能感兴趣的:(redis,数据库,缓存)