当前位置:网站首页>Redis 核心数据结构 & Redis 6 新特性详
Redis 核心数据结构 & Redis 6 新特性详
2022-07-07 11:49:00 【bingtanghulu_6】
目录
1.list
redis在redisDB中是一个k-V结构,存储在字典dict中,dict包含两个hashTable结构,以数组形式存在,其中list 是一个有序的数据结构,采用双端链表quicklist和ziplist作为底层实现。
[[email protected] ~]# cd /usr/local/redis-6.2.7
[[email protected] redis-6.2.7]# src/redis-server redis.conf
[[email protected] redis-6.2.7]# src/redis-cli
127.0.0.1:6379> lpush a-list a b c
(integer) 3
127.0.0.1:6379> rpush a-list e f g
(integer) 6
127.0.0.1:6379> rpush a-list e 1100 f g
(integer) 10
127.0.0.1:6379> type a-list
list
127.0.0.1:6379> object encoding a-list
"quicklist"
list的数据结构如下:
2.hash
hash在字段比较小时使用ziplist存储,比较大时采用hashtable存储,下图演示object encoding key编码由ziplist变化为hashtable的场景。
127.0.0.1:6379> hset a-hash name caiji age 35 f1 v1 f2 v2 f3 v3
(integer) 5
127.0.0.1:6379> hgetall a-hash
1) "name"
2) "caiji"
3) "age"
4) "35"
5) "f1"
6) "v1"
7) "f2"
8) "v2"
9) "f3"
10) "v3"
127.0.0.1:6379> type a-hash
hash
127.0.0.1:6379> object encoding a-hash
"ziplist"
127.0.0.1:6379> hset a-hash f4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
(integer) 1
127.0.0.1:6379> hgetall a-hash
1) "f1"
2) "v1"
3) "name"
4) "caiji"
5) "f2"
6) "v2"
7) "age"
8) "35"
9) "f3"
10) "v3"
11) "f4"
12) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
127.0.0.1:6379> type a-hash
hash
127.0.0.1:6379> object encoding a-hash
"hashtable"
hash的数据结构如下,可以通过设置redis.conf配置文件配置ziplist和hashtable的存储范围
面试题:string和hash选型和优缺点
3.Set
Set为无序的自动去重的数据类型,当都用整型存储时是有序的,底层使用intset数据结构,当用字符串存储时是无序的,使用hashtable存储。
127.0.0.1:6379> sadd a-set 1 2 3 5 10 9 4 4 4
(integer) 7
127.0.0.1:6379> smembers a-set
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "9"
7) "10"
127.0.0.1:6379> type a-set
set
127.0.0.1:6379> object encoding a-set
"intset"
127.0.0.1:6379> sadd a-set a
(integer) 1
127.0.0.1:6379> smembers a-set
1) "a"
2) "3"
3) "10"
4) "9"
5) "4"
6) "2"
7) "5"
8) "1"
127.0.0.1:6379> type a-set
set
127.0.0.1:6379> object encoding a-set
"hashtable"
intset的数据结构如下,有三个元素。
4.Zset
skiplist原理,使用二半查找,索引方式形成索引树查找数据,第K层索引数=n/2^k。
127.0.0.1:6379> zadd a-zset 100 a 200 b 150 c
(integer) 3
127.0.0.1:6379> zrange a-zset 0 -1 withscores
1) "a"
2) "100"
3) "c"
4) "150"
5) "b"
6) "200"
127.0.0.1:6379> type a-zset
zset
127.0.0.1:6379> object encoding a-zset
"ziplist"
5.GeoHash
GeoHash是一个算法加上zset实现的
help @geo
geohash底层实现,经纬度编码规则如下。gethash只能发送模糊范围,不会发送具体经纬度,适用于精度不是那么高的场景
6.面试常见问题
1. redis的多线程模型,在redis.conf中搜索thread-I/O里面有详细注释
redis执行过程:read-解析resp协议-执行命令-写入
多线程默认是关闭的,可以设置redis.conf中io-thread参数,如下图
配置了io-threads-do-reads参数以后其他I/O线程也可以进行读写任务
边栏推荐
- Mongodb slice summary
- LeetCode_二分搜索_中等_153.寻找旋转排序数组中的最小值
- Deep understanding of array related problems in C language
- Build a secure and trusted computing platform based on Kunpeng's native security
- PC端页面如何调用QQ进行在线聊天?
- 干货|总结那些漏洞工具的联动使用
- My "troublesome" subordinates after 00: not bad for money, against leaders, and resist overtime
- xshell连接服务器把密钥登陆改为密码登陆
- 现在网上开户安全么?那么网上开户选哪个证券公司?
- 【堡垒机】云堡垒机和普通堡垒机的区别是什么?
猜你喜欢
cmake 学习使用笔记(一)
室内ROS机器人导航调试记录(膨胀半径的选取经验)
供应链供需预估-[时间序列]
Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)
Dry goods | summarize the linkage use of those vulnerability tools
LED light of single chip microcomputer learning notes
2022-7-6 sigurg is used to receive external data. I don't know why it can't be printed out
TPG x AIDU | AI leading talent recruitment plan in progress!
flask session伪造之hctf admin
"Song of ice and fire" in the eleventh issue of "open source Roundtable" -- how to balance the natural contradiction between open source and security?
随机推荐
Social responsibility · value co creation, Zhongguancun network security and Information Industry Alliance dialogue, wechat entrepreneur Haitai Fangyuan, chairman Mr. Jiang Haizhou
2022-7-6 Leetcode 977. Square of ordered array
2022-7-6 初学redis(一)在 Linux 下下载安装并运行 redis
云计算安全扩展要求关注的安全目标和实现方式区分原则有哪些?
Xshell connection server changes key login to password login
Ikvm of toolbox Net project new progress
clion mingw64中文乱码
Learning breakout 2 - about effective learning methods
【堡垒机】云堡垒机和普通堡垒机的区别是什么?
Show the mathematical formula in El table
LeetCode_ Binary search_ Medium_ 153. Find the minimum value in the rotation sort array
move base参数解析及经验总结
2022-7-7 Leetcode 844.比较含退格的字符串
What parameters need to be reconfigured to replace the new radar of ROS robot
AI人才培育新思路,这场直播有你关心的
我那“不好惹”的00后下属:不差钱,怼领导,抵制加班
Mongodb replication (replica set) summary
High end for 8 years, how is Yadi now?
Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
Supply chain supply and demand estimation - [time series]