什么是redis
1.什么是redis
是一种key value形式的非关系型数据库,一般先存在内存中,在存入硬盘中,因为是存在内存中,所以效率非常快,一般是用它来做缓存的;redis是单线程的采用的多路复用的非阻塞io,所以速度很快。
2. 数据类型
String:
计数器、粉丝数、也可以存储对象
hash:
适合存储对象,用户信息等
list:
关注列表,粉丝列表这些
set:
共同关注,共同喜好
zset:
可以通过score来做时间窗口
3. 持久化
rdf:
当它达到某个条件,会把内存数据 保存到rdb文件里面,保存有同步和异步,一般默认是异步
aof:
日志的方式写命令,每有一条写的命令,就会追加到aof里面,aof每隔一段时间会进行重写,把一些垃圾命令进行优化
4. 淘汰策略
-
从设置过期时间的数据中,删除最近用的最少得数据
-
从数据集中,删除最少使用的
-
从设置过期时间的数据中,删除任意数据
-
从数据集中,删除任意数据
-
删除马上要过期的
-
不删除数据
5.集群
5.1 主从模式
有一个master和多个从节点组成,支持读写分离,读数据可以从从节点读取,写数据还是由master节点完成,并且同步给其他从节点,缺点是主节点挂后需要手动切换主节点。
- 全量复制,当有一个从节点加入时,会把主节点的所有数据全量同步过去。
- 增量复制,主节点写入数据时,会同步给其他从节点。
- 心跳检测,主节点会定时发送心跳信息来检查连接状态,没有收到从节点的响应就会把这个从节点标记不可用。
5.2 哨兵模式
由一个master、多个从节点和多个哨兵节点组成,哨兵会定时检测主节点,当发现主节点不可用时,会通知其他哨兵,当大多数都认为不可用时,会选举出一个主节点,然后通知其他从节点更换主节点,对比主从模式多了一个自动选举的功能不需要手动切换。
5.3 集群模式
是有多个master节点和从节点组成,每个从节点对应一个主节点,数据也是同步对应主节点的数据,把多个master节点进行分区,每个master节点存储的数据不一样,客户端查询或写数据时,把key通过一些运算然后取模得到一个数字,然后就知道是分到哪个区的,来决定他存在哪个matser;其实有点像mysql的分库有点异曲同工之妙,这种方式可以提高redis的瓶颈,之前两种集群只保证了高可用,但是写数据只有一台机器的瓶颈,集群模式有多个master还可以随意水平扩展。