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塞进去