月度归档: 2020 年 3 月

8 篇文章

教你个命令 KEYS *
KEYS 命令 Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is …
视频学术用语科普
封装格式(AVI MP4 FLV) 封装格式(Format),也称多媒体容器(Multimedia Container),是将已编码压缩好的视频轨道、音频轨道和元数据(视频基本信息如标题、字幕等)按照一定的格式规范,打包放到一个文件中,形成特定文件格式的视频文件。 编码方式(H.26X MPEG A…
Redis有序集合zset底层原理
Redis有序集合中的元素的编码可以是 ziplist 或者 skiplist。ziplist和skiplist编码选择的标准在于Redis里的元素的数量以及元素成员的长度。当满足以下2个条件时,元素编码为ziplist: 有序集合保存的元素数量小于128个 有序集合保存的所有元素成员的长度小于64…
Redis集合set底层原理
集合对象的编码可以是intset和hashtable之一,相对于其他类型的结构集合就要简单的多。 intset编码 intset编码的集合对象底层实现是整数集合,所有元素都保存在整数集合中。 typedef struct intset{ //编码方式 uint32_t encoding; //集合包…
Redi哈希hash底层原理
先明确一个概念叫dict,又称字典(dictionary)或映射(map),是集合的一种;这种集合中每个元素都是KV键值对。 字典dict 在 Redis 中的应用广泛, 使用频率可以说和 SDS 以及双端链表不相上下, 基本上各个功能模块都有用到字典的地方。 其中, 字典dict的主要用途有以下两…
Redis列表list底层原理
在版本3.2之前,Redis 列表list使用两种数据结构作为底层实现: 压缩列表ziplist 双向链表linkedlist 因为双向链表占用的内存比压缩列表要多, 所以当创建新的列表键时, 列表会优先考虑使用压缩列表, 并且在有需要的时候, 才从压缩列表实现转换到双向链表实现。 压缩列表转化成双…
Redis字符串string底层原理
Redis作为一种存储字符串的缓存结构,其具体实现是由C语言完成,在C语言中,字符串是通过字符数组实现的,即char[],那么Redis对于字符串的实现是不是也是基于字符数组吗?不是的,Redis对字符串的处理是通过SDS(Simple Dynamic String)实现的。 SDS简单动态字符串,…
MySQL Explain详解
针对SQL语句我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,从而分析你的查询语句或是表结构的性能瓶颈。 通过EXPLAIN,具体我们可以分析出以下结果: 表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实…