一张脑图助你搞定Redis

本文是作者复习Redis后的总结,分为Redis基础、原理、分布式和应用实战四部分。介绍了Redis的缓存、存储结构、数据类型及其应用场景,如字符串、列表、哈希、集合和有序集合。讲解了Redis的过期时间设置、发布订阅、持久化、内存回收策略和单线程模型。还涵盖了主从复制、哨兵机制和Redis-Cluster。在应用实战中涉及Redis客户端选择、分布式锁实现和管道模式。总结中提示了可能引发的问题,如缓存击穿和雪崩,以及如何预防。
摘要由CSDN通过智能技术生成

前言

  温故知新,最近自己在复习之前零散的知识点,想通过脑图的方式将每一块知识内容串在一起,比如redis,多线程,jvm,spring等等。
  同时希望我的总结也可以帮助到其他人,所以打算写这个系列的文章。就叫它“一张脑图系列”。


  这篇文章是我复习完redis之后的总结,共有四小节,每小节最后会有本节的脑图。

  1. Redis 基础
  2. Redis原理
  3. Redis分布式
  4. Redis应用实战

  由于文章是以相对简练的描述进行总结,适用人群:

  • 想要先概览redis,然后对细节部分逐个击破
  • 有redis使用经验,想要短时间复习redis大部分知识点

01.Redis 基础

缓存

  • 应用内缓存:Map、EH Cache
  • 应用外缓存(缓存组件):Memcache、Redis

存储结构

  • remote dictionary server(远程字典服务器)
  • 以字典结构存储数据,允许其他应用通过TCP读写字典中的内容

redis启动&停止

  • 可执行文件
    • Redis-server Redis服务器
    • Redis-benchmark Redis性能测试工具
    • redis-check-aof Aof文件修复工具
    • redis-check-dump Rdb文件检查工具
    • Redis-sentinel Sentinel服务器(2.8以后)
  • 直接启动(默认端口6379) → redis-server …/redis.conf
  • 停止 → redis-cli shutdown
    • redis收到shutdown命令后,先断开所有客户端连接
    • 然后根据配置执行持久化,最终完成退出
    • 强制杀线程,会导致数据丢失。∵redis可能正在将内存中的数据同步到硬盘

五种数据类型及应用场景

字符串类型
  • 使用场景(最大容量512M)
    • 存储用户的邮箱、json化的对象、图片
  • 数据结构
    • int → 存放整型数据
    • SDS(simple dynamic string) → 存放字节 / 字符&浮点型数据
    • 根据字符串长度调整Header,从而节省内存
列表类型(双向)
  • 使用场景
    • 最新消息排行、消息队列
  • 数据结构
    • v3.2:linkedlist | ziplist → quicklist(由ziplist组成的双向链表)
    • linkedlist → 插入复杂度低,但内存开销大
    • ziplist → 存储效率高,但需要频繁申请和释放内存。∵存储在一段连续内存
    • 当元素个数和单个长度小,采用ziplist
hash类型
  • 使用场景
    • 存储对象(每一个field-value相当于对象的属性和属性值)
  • 数据结构
    • 数据量小时,用ziplist
    • 否则使用hashtable
    • dictEntry → 内部链(key-value+next指针)
    • dictht → 存放buckets
    • dict → 扩容/缩容时,dictht的迁移<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值