Redis学习
Hisenz Lv1

一、Redis 学习思路

  1. Redis 知识全景图
    Redis知识全景图主要包括,两大维度:系统维度、应用维度,三大主线:高可靠、高性能、高可扩展
  2. 两大维度
    • 系统维度:设计原理、应用设计规范
    • 应用维度:应用场景驱动、典型案例驱动
  3. 三大主线
    • 高可靠:主从复制、哨兵机制
    • 高性能:线程模型、数据结构、持久化、网络断层
    • 高可扩展:数据分片、负载均衡
      Redis-Overview.png

二、 Redis基本数据类型

Redis基本数据类型有5种:字符串(string)、数组(array)、哈希表(hash)、集合(set)、有序集合(sorted set)
数据结构有六种:简单动态字符串、双向链表、压缩列表、哈希表、调表、整数数组

  1. 全局键值对
    Redis使用了一个哈希表来保存所有的键值对,这样就可以O(1)的时间复杂度来快速找到键值对。哈希表其实就是一个数组,数组中的每一个元素都是一个哈希桶,每个哈希桶保存了键值对数据,但并不是值本身,而是指向具体值的指针

    当写入数据过多时,就会有非常大的可能性造成哈希冲突,Redis解决哈希冲突的方式就是链式哈希,同一个哈希桶中的多个元素用一个链表来保存,并用指针依次连接

    随着数据量的增长,哈希冲突会越来越频繁,哈希链的长度也会越来越长,这就会造成查询时间变长,这对于Redis来说是不能容忍的,所以Redis会对哈希表进行refresh操作,Redis维护了两个全局哈希表1和2,
    • 开始阶段:哈希表1存入数据,哈希表2未分配空间
    • 扩容阶段:随着数据增多,哈希表1性能下降,给哈希表2分配更大的空间,比如哈希表1的两倍
    • 复制阶段:将哈希表1中的数据复制到2中
    • 释放阶段:将哈希表1的空间释放
    • 可选阶段:复制数据是非阻塞的,当用户访问数据时,从哈希表1中查询数据后,返回数据并将索引上的所有数据从哈希表1中复制到哈希表2中
  2. 集合数据类型
  • 本文标题:Redis学习
  • 本文作者:Hisenz
  • 创建时间:2023-07-10 19:17:57
  • 本文链接:https://hisenz.github.io/2023/07/10/Redis学习-开票/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!