首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

图解Redis中的Radix

在Redis里,有好几个地方都用到了Radix。比如阿里的Redis的每个slot槽里存储的key就是使用了Radix。...为此Redis的大佬们决定使用Radix来解决问题。Radix是从哪里来的呢?是从Trie来的。我们先来简单的了解一下Trie长啥样。 Trie Trie Tree,字典。...我们叫这样的Trie为压缩Trie(Compressed Trie Tree)。 压缩Trie也就是今天的主角Radix,只不过他有多个名字,有人叫压缩Trie,有人叫Radix。...所以为了真正的了解Radix,我们需要知道机器是怎么读取Radix的。计算机对于Radix的处理是以bit(或二进制数字)来读取的。一次被对比r个bit,2的r次方是radix的基数。...总结 1、Redis用到了Radix来存储key,Redis Stream中的key也用到了Radix。 2、Radix是压缩版的Trie

6.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

eslint 规则之 《Missing radix parameter》

eslint 规则连接:https://eslint.org/docs/rules/radix 原文规则错误描述解读 在我们使用parseInt 的时候,应该设置第二个参数据,而不能不写使用默认。...思考 parseInt 第二个参数radix 是什么意思 语法: parseInt(string, radix) 参数描述: 参数 描述 string 必需。要被解析的字符串。 radix 可选。...parseInt 第二个参数radix 默认值是什么 那么parseInt默认值,是不是10呢?默认值是10,传入0 会以10处理。...查看v8 parseInt 源码可以看出: if (radix == 0) { //如果传入radix是0,则以10进行处理 // Radix detection.... 36) return JunkStringValue(); //radix不在2~36之间的处理 总结 parseInt用的时候比较简单,但是理解第二个参数还是有些抽象。

89620

图解基数,给查找加点

Linux 的基数实现在 lib/radix-tree.c 中,和上文提到的不同,Linux 并不是对一个字符串进行存储,而是一个无符号长整型名为 index 的值,可以从操作的 Api 中看出:...*radix_tree_delete(struct radix_tree_root *tree, unsigned long key); Linux 的实现复杂但又精巧,全部展开的话估计又要新开一篇文章...,简单来说,Linuxradix tree 是围绕下面三个参数展开的: • RADIX_TREE_MAP_SHIFT 定义基数,内核通过CONFIG选项,可设置为 4 或 6,默认为 6; • RADIX_TREE_MAP_SIZE...= RADIX_TREE_MAP_SIZE - 1 ) 要理解这三个参数的作用,首先要再次明确 Linux 基数的存储值是无符号长整型,名为 index(而不是字符串)。...而 RADIX_TREE_MAP_SHIFT 就是 bit 位的步长,Linux 默认值为 6,其含义是每右移 6 个 bit 为一个单位,因此对于上面的数字,可以建树为: RADIX_TREE_MAP_SIZE

71820

linux 设备

linux 设备 ---- 参考地址 http://blog.csdn.net/green1900/article/details/45646095 http://www.cnblogs.com...需要注意的是,设备对于可热插拔的热备不进行具体描述,它只描述用于控制该热插拔设备的控制器 2.1设备的组成 设备包含了DTC(device tree compiler) , DTS(device...设备语法 设备是一颗,书上的每个节点由节点和属性组成,属性是键值对 下面这个是rk3399-fpga.dts #include "rk3399.dtsi" //包含了公共部分 / {...unit_address一般是设备地址,用来唯一标识一个节点 Linux中的设备还包括几个特殊的节点,比如chosen,chosen节点不描述一个真实设备,而是用于firmware传递一些数据给OS...这样就可以实现类似函数调用的效果 3.KEY 在设备中,键值对是描述属性的方式,比如,Linux驱动中可以通过设备节点中的”compatible”这个属性查找设备节点 inux设备语法中定义了一些具有规范意义的属性

3K20

Linux设备语法详解

概念 Linux内核从3.x开始引入设备的概念,用于实现驱动代码与设备信息相分离。在设备出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。...基于同样的软件分层设计的思想,由于一个SoC可能对应多个machine,如果每个machine的设备都写成一个完全独立的.dts文件,那么势必相当一些.dts文件有重复的部分,为了解决这个问题,Linux...我这里用`Linux4.8.5源码自带的dm9000网卡为例来分析设备的使用和移植。...Linux设备语法中定义了一些具有规范意义的属性,包括:compatible, address, interrupt等,这些信息能够在内核初始化找到节点的时候,自动解析生成相应的设备信息。...ARM设备专题 设备(上) Linux ARM设备专题 设备(下)

5.7K71

Linux设备(DTS)介绍

设备由来 linux内核源码中,之前充斥着大量的平台相关(platform Device)配置,而这些代码大多是杂乱且重复的,这使得ARM体系结构的代码维护者和内核维护者在发布一个新的版本的时候有大量的工作要做...,以至于LinusTorvalds 在2011年3月17日的ARM Linux邮件列表中宣称“Gaah.Guys,this whole ARM thing is a f*cking pain in the...设备的作用 设备是一个描述硬件的数据结构,甚至你可以将其看成一个大结构体(这个结构体就是平台,成员就是具体的设备),需要注意的是设备并不能解决所有的硬件配置问题(例如:机器识别),它只是提供一种语言...,将硬件的配置从linux内核的源码中提取出来。...Linux使用设备的主要原因如下 A:平台识别 B:实时配置 C:设备植入 设备解耦目标 目标一 vendor相关修改,完全独立出来,禁止在soc原生的dtsi中修改,只允许以dtbo的方式存在;

45220

一文看懂 | 什么是页缓存(Page Cache)

本文使用的 Linux 内核版本为:Linux-2.6.23 什么是页缓存 为了提升对文件的读写效率,Linux 内核会以页大小(4KB)为单位,将文件划分为多数据块。...页缓存的实现 前面主要介绍了页缓存的作用和原理,接下来我们将会分析 Linux 内核是怎么实现页缓存机制的。...从 address_space 对象的定义可以看出,文件的 页缓存 使用了 radix 来存储。...radix:又名基数,它使用键值(key-value)对的形式来保存数据,并且可以通过键快速查找到其对应的值。...如果对 radix 不太了解,可以简单将其看成可以通过文件偏移量快速找到其所在 页缓存 的结构,有机会我会另外写一篇关于 radix 的文章。 2.

18.6K104

Linux笔记(23)| “插件”设备

今天和大家分享的依然是设备,上一节里主要是介绍了设备文件的基本格式、语法规则等,今天介绍一下如何使用设备,以及如何动态加载设备。...设备里记录的是“资源”,比如我们要点亮led,就可以增加一个led的节点,把led相关的寄存器放在这个节点里。...这样我们的设备文件就写好了,参照上一节的做法,我们修改完设备文件,然后进行编译,将生成的dtb文件替换开发板原来的dtb文件,然后重启开发板即可。...设备文件写好了,接下来就是写驱动文件了。...其实驱动文件和我们之前在Linux笔记(21)| platform总线驱动分析介绍的基本是一样的,唯一的不同就是资源获取方式不一样,之前是在设备文件中获取,现在是在设备文件上获取。

2.2K10

Linux 运行时设备

在根文件系统中查看设备,是一种不错的调试手段。...firmware/fdt 这个命令打开后是十六进制模式,如图: 这样是很难看到真实配置的,可以把 fdt 弄出来,放到 ubuntu 中,使用 Linux 源码自带的 DTC 工具反编译,查看真实的配置...对于来自设备的 platform_device,可以进入 /sys/devices/platform//of_node 查看它的设备属性。...note:/proc/device-tree 是链接文件, 指向 /sys/firmware/devicetree/base 以上是 Linux 原生的节点,可以供我们使用。...重要补充: Linux 常用的文件系统有三个:procfs、sysfs、debugfs procfs:该文件系统主要用来反馈内核的信息,包括系统中所有的中断、进程信息都可以在这里查看。

4K20

Linux笔记(22)| 设备初探

今天跟大家分享的是设备,设备Linux3.x以后的版本才引入的,设备用于描述一个硬件平台的板级细节。...如果硬件资源发生了改变,我们只需要修改设备文件就行了,但是这样还不够好,如果有非常多的设备,就要写非常多的设备文件,这些文件非常庞大,导致Linux内核非常臃肿。...在Linux内核里有设备文件,路径是 源码目录/arch/arm/boot/dts/imx6ull-seeed-npi.dts 来看一下设备文件的格式: Devicetree node格式: [...make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- npi_v7_defconfig make ARCH=arm -j4 CROSS_COMPILE=arm-linux-gnueabihf...---- 参考资料: http://doc.embedfire.com/linux/imx6/base/zh/latest/linux_driver/driver_tree.html https://www

1.9K10
领券