Redis系列(三)存储原理与数据模型

redis 存储结构

在这里插入图片描述
redis时key-value的结构,其中value包含:字典,双向链表,压缩列表,调表,整数数组,动态字符串。

存储转换

其中redis中各value的数据结构根据不同的情况有不同的存储转换。
在这里插入图片描述

字典实现

redis 中 K-V 组织是通过字典来实现的;hash 结构当节点超过 512 个或者单个字符串长度大于 64 时,hash 结构采用字典实现;

数据结构

  1. key字符串经过 hash 函数运算得到 64 位整数;
  2. 相同字符串多次通过 hash 函数得到相同的64位整数;
  3. 整数对 2 n 2^{n} 2n 取余可以转化为位运算;
  4. 抽屉原理 n+1个苹果放在 n 个抽屉中,苹果最多的那个抽屉至少有 2 个苹果;64位整数远大于数组的长度,比如数组长度为 4,那么 1、5、9、1+4n 都是映射到1号位数组;所以大概率会发生冲突;

冲突

负载因子

负载因子 = used / size; used 是数组存储元素的个数, size 是数组的长度;
负载因子越小,冲突越小;负载因子越大,冲突越大;
redis 的负载因子是 1;

扩容

如果负载因子 > 1,则会发生扩容;扩容的规则是翻倍;
如果正在 fork (在 rdb、aof 复写以及 rdb-aof 混用情况下)时,会阻止扩容;但是此时若负载因子 > 5,索引效率大大降低, 则马上扩容;这里涉及到写时复制原理;
**写时复制:**只有在不得不复制数据内容时才去复制数据内容;

缩容

如果负载因子 < 0.1,则会发生缩容;缩容的规则是恰好包含 used 的 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Redis是一款高性能、内存型的键值对数据库,具有持久化、高并发、分布式等特性。《Redis核心原理与实践》是一本非常经典的Redis学习资料,包含了Redis的核心原理、实现细节、性能优化以及应用案例等方面的内容,对于Redis的学习和应用具有很大的帮助。 如果想要获取《Redis核心原理与实践》这本书的PDF资料,可以在网盘上搜索下载。不过在下载之前需要注意一些问题,如文件来源是否可靠、文件的安全性等。建议选择知名的云盘平台或者官方渠道下载,避免下载病毒或者包含其他不良内容的文件。 在学习Redis的过程中,不仅需要掌握其核心原理和实践技巧,还要了解其在实际应用中的使用场景和经验。同时还需要多实践和练习,以更好地掌握Redis的使用和优化技巧。 ### 回答2: Redis是当前非常流行的内存缓存中间件,它有很多优秀的特性,如高效的操作、支持多种数据结构、数据持久化等。但是,想要深入理解Redis,需要对Redis的核心原理有一定的认识。为此,很多开发者都希望能够通过网络资源获取到Redis核心原理与实践的相关资料。 其中,Redis核心原理与实践PDF是一个非常不错的资源。它详细介绍了Redis的核心原理和实践技巧,包括Redis内部网络模型、键值对的存储结构、数据类型的操作等等。通过学习这些内容,可以帮助开发者更好地理解Redis的运行机制,并且能够在实践中掌握更多的技巧。 如果想要获取Redis核心原理与实践PDF,可以通过各种网盘搜索资源。常见的网盘有百度云、蓝奏云、微盘等等,这些网盘上都有不少Redis相关的资源分享。需要注意的是,获取资源是需要付费的,因此还需要谨慎选择可信的资源提供者。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值