Redis常用数据类型底层数据结构分析
2024-09-05 14:27:02
Redis是一种键值(key-Value)数据库,相对于关系型数据库,它也被叫作非关系型数据库
Redis中,键的数据类型是字符串,但是为了非富数据存储方式,方便开发者使用,值的数据类型有很多
字符串 (string)
这种数据类型非常简单,对应到数据结构里面,就是字符串
列表 (list)
支持存储一组数据,这种数据类型对应两种方式,一种是压缩列表,另一种是双向循环链表
## 压缩列表
- 列表中保存的单个数据小于64字节
- 列表数据个数少于512个
比较省内存,支持不同类型数据的存储链表
Reis的双向链表额外定义了一个list结构体,来组织链表的首、尾指针,还有长度等信息
字典 (hash)
存储一组数据对。每个数据对又包含键值两部分,实现方式压缩列表和散列表
## 压缩列表
- 字典中保存的键和值的大小都要小于64字节
- 字典中键值对的个数要小于512个
散列表
使用 MurmurHash2运行速度快、随机性好的哈希算法作为哈希函数,对于哈希冲突问题,Redis使用链表法来解决。除此之外,
Redis还支持散列表的动态扩容、缩容。
- 装载因子 > 1 -->扩大2倍
- 装载因子 <0.1 -->缩小2倍
集合 (set)
集合用来存储一组不重复的数据,也有两种实现,一种是有序数组,一种是散列表
## 有序数组
- 存储的数据都是整数。
- 存储的数据元素个数不超过512个。
有序集合 (sortedset)
存储一组数据,并且每个数据会附带一个得分。通过得分的大小,将数据组织成跳表这样的数据结构,以支持快速地按照得分值、得分区间获取数据
最新文章
- Dreamweaver 扩展开发:文档路径等信息的处理
- [资料分享]nutch视频教程
- StringBuffer and StringBuilder
- ViewPager部分源码分析三:scroll
- MVC Model数据验证
- Linux下删除空文件,删除指定大小的文件
- 串行通讯之Qt
- centos7命令
- 组合vs继承
- eclipse中Build Path-Add to Build Path相应到androidstudio的设置
- hdu 2222 Keywords Search ac自己主动机
- 扩展欧几里德 POJ 1061
- apache本地多域配置(wampserver本地多域配置)
- java--反射和注解
- 4.1、Libgdx的生命周期
- [LeetCode&;Python] Problem 118. Pascal&#39;s Triangle
- Jmeter如何提取响应头部的JSESSIONID
- char *s 与 char s[ ]的区别
- LayaBox IDE 安装后执行项目报错解决方案的一些记录
- react native 之 事件监听 和 回调函数
热门文章
- java application.properties 密码加密
- Selenium在IE浏览器中执行脚本时输入字符太慢问题解决方法
- swift MT报文解析处理
- Eclipse 新建.jsp页面后,页面头部标签报错的解决方法
- Python 入门 之 反射
- spark教程(六)-Python 编程与 spark-submit 命令
- Lock Puzzle CodeForces - 936C (构造)
- Webpack loaderUtils.parseQuery()
- 使用python的selenium库刷超星网课
- Nginx如何配置反向代理