如何获取重庆网站公司行业门户网站模板的下载链接?
摘要:重庆网站公司,行业门户网站模板下载,免费平台,企业网站建设综合实训心得有时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,请认准htt
重庆网站公司,行业门户网站模板下载,免费平台,企业网站建设综合实训心得有时候博客内容会有变动#xff0c;首发博客是最新的#xff0c;其他博客地址可能会未同步#xff0c;请认准https://blog.zysicyj.top 首发博客地址 系列文章地址 需求描述 现在假设有这样一个需求#xff0c;我们要开发一个图像存储系统。要求如下#xff1a; 该系统能快… 有时候博客内容会有变动首发博客是最新的其他博客地址可能会未同步请认准https://blog.zysicyj.top 首发博客地址 系列文章地址 需求描述 现在假设有这样一个需求我们要开发一个图像存储系统。要求如下 该系统能快速记录图片的ID和图片保存在系统中的ID 能根据图片ID快速查找到图片存储对象ID 这里我们用10位来存储图片ID和对象ID比如下面这种 photo_id: 1101000051photo_obj_id: 3301000051 这里我们能分析出两个点 图片ID和图片对象ID是一一对应的是典型的“键-单值”模式 String可以保存二进制字节流只需要将流转成数组即可 方案一使用String存储 这个方案是首先想到的毕竟这个场景是非常契合String的。我们把图片ID和图片存储对象ID分别作为键值对的key和value来存储其中图片存储对象ID用String类型。 这里一亿张图片的数据量大概用了6.4G的内存。随着图片的增多Redis使用的内存也在不断增加这列就会遇到「大内存Redis因为生成RDB而响应变慢」的问题。 为什么会变慢 当Redis生成RDB文件时会将内存中的数据写入到磁盘上以便在Redis重启时可以从RDB文件中恢复数据。生成RDB文件的过程可能会导致Redis的响应变慢特别是在处理大内存的情况下。 造成大内存Redis生成RDB而响应变慢的原因主要有以下几点 「内存写入磁盘的速度限制」磁盘的写入速度相对较慢尤其是对于大内存的Redis来说需要写入的数据量较大可能会导致写入磁盘的速度无法满足Redis的写入速度从而导致响应变慢。 「RDB生成过程的阻塞」在生成RDB文件的过程中Redis会阻塞其他操作以确保生成的RDB文件是一致的。这意味着在生成RDB文件期间Redis无法处理其他的读写请求从而导致响应变慢。 所以这时候String 类型并不是一种好的选择我们还需要进一步寻找能节省内存开销的数据类型方案。 为什么String内存开销大 先说结论「String 类型并不是适用于所有场合的它有一个明显的短板就是它保存数据时所消耗的内存空间较多。」 我们回看一下前面说过1亿张图片信息用了约6.4G内存。那么一张图片平均就是64字节这里面包含了一个图片ID和一个图片对象ID。 实际上一张图片对应ID和对象ID只需要16字节就可以了为什么却要64字节呢 这里我们分析一下。图片 ID 和图片存储对象 ID 都是 10 位数我们可以用两个 8 字节的 Long 类型表示这两个 ID。因为 8 字节的 Long 类型最大可以表示 2 的 64 次方的数值所以肯定可以表示 10 位数。但是为什么 String 类型却用了 64 字节呢 在Redis中String类型是一种二进制安全的数据结构可以存储任意类型的数据包括字符串、整数、浮点数等。Redis中的String类型并不是固定长度的它的长度是根据存储的实际数据来动态调整的。 对于存储图片ID和图片存储对象ID这样的10位数使用8字节的Long类型是足够的因为Long类型可以表示的范围远远超过10位数。但是在Redis中String类型的底层实现并不是简单地存储数据本身而是包含了一些额外的信息。 在Redis中每个String类型的值都包含一个头部(header)和一个数据体(body)。头部包含了一些元数据信息如数据类型、长度等。而数据体则存储了实际的数据内容。 对于String类型的值Redis为了能够高效地进行内存管理和数据操作会在头部中存储一些额外的信息。这些额外的信息包括了数据的长度、引用计数、过期时间等。这些信息的存储需要一定的空间因此会导致String类型的值占用的空间比实际数据的长度要大。 具体来说Redis中的String类型的头部占用了39字节的空间而数据体则占用了实际数据的长度。所以对于一个10位数的数据使用String类型存储时实际占用的空间是39字节加上数据长度的总和。 需要注意的是「Redis的String类型的头部大小是固定的不会随着数据的大小而变化」。因此「对于较小的数据头部占用的空间相对较大」而对于较大的数据头部占用的空间相对较小。
