Redis储存结构

Redis怎么储存的

这个redisDb是数据库对象 里面的其他字段忽略了 然后里面有个dict列表(字典列表)

我们随便来看一个redisObject

区分一下子啊 他这个dict里面没有存redisObject的对象 也没有存dict对象 它只是存了个数据指针

你看那个redis每个底层编码 抠搜的 这块要是再保存一份都浪费回去了

过期键

Redis数据都可以设置过期键,这样到了一定的时间,这些对象就会自动过期并回收。这些过期键没有和一般键存放在一起

错误的:啊 这存的也是指针 这个dict和expires里面存的都是key 都是同一份数据 虽然画是这么画的但实际上两个dict的key都能找时间戳和value(通过指针)

这两个dict里面存的是key对象的指针(也就是String对象的指针) value一个是任意对象 一个是timestamp 这个key是会在两个dict复用的 所以直接用指针

我们之前说的对象虽然有的是key-value结构 但是不代表这里的key-value结构是一个对象 这里的key是一个string对象 value又是一个对象

SET a b,这个数据的存储结构是怎样的?

Redis储存引擎里面有一个dict 把a放在对应偏移量上 然后再把b作为它的对应value储存

SET a 100 ex 60之后,调用TTL a,此时这个过期信息是存储在哪里的?

直接把这个key对象指针 放到expires里面 然后再把时间戳作为value塞进去

相关推荐
HalvmånEver几秒前
MySQL的数据类型(一)
数据库·mysql
tjc1990100511 分钟前
golang如何使用t.Cleanup清理测试_golang t.Cleanup测试清理使用策略
jvm·数据库·python
SeSs IZED14 分钟前
Redis开启远程连接
数据库·redis·缓存
214396523 分钟前
如何提升SQL数据更新的安全性_使用行级锁与悲观锁机制
jvm·数据库·python
uElY ITER31 分钟前
VS与SQL Sever(C语言操作数据库)
c语言·数据库·sql
SHoM SSER42 分钟前
SQL之CASE WHEN用法详解
数据库·python·sql
Caspian Wren1 小时前
通过Logstash将MySQL数据同步到ES
数据库·mysql·elasticsearch·logstash
2401_835956811 小时前
Golang怎么做代码热更新_Golang热更新教程【精通】
jvm·数据库·python
justjinji1 小时前
如何解决Oracle JDBC驱动版本的兼容性问题_ojdbc8.jar与JDK版本的对应关系
jvm·数据库·python
cyber_两只龙宝1 小时前
【Oracle】Oracle之SQL的聚合函数和分组
linux·运维·数据库·sql·云原生·oracle