Redis存储

Redis介绍

1.非关系型的键值对数据库,可以根据键以O(1)的时间复杂度取出或插入关联值
2. Redis的数据是存在内存中的
3.键值对中键的类型可以是字符串,整型,浮点型等,且键是唯一的
4.键位对中的位类型可以是string,hash,list, set,sorted set等
5. Redis内置了复制,磁盘持久化,LUA脚本,事务,SSL,ACLs,客户端代理等功能
6.通过Redis哨兵和自动分区提供高可用性

Redis底层使用C语言实现,key使用SDS类型(len存储数据长度,free表示剩余空间,char数组存字符串。例原来字符串"abc",新字符串"abcdef",空间不够,扩容大小位len+需要扩容大小后乘2,最大1M)。
3.2之前len和free是int类型,可以存储32亿,通常用不到,浪费空间,3.2之后对SDS类型做了扩展sdshdr5/sdshdr8/sdshdr16等,用flags表示具体类型(flags前三位存放string的类型,后五位存放字符串长度,可存放2的五次幂-1,超过就使用sdshdr8)。
在这里插入图片描述
在这里插入图片描述

RedisDB
默认情况下redis有16个DB
在这里插入图片描述
key/value在Redis中,是存储在dict结构中,dict结构中存储两个dictht(hash表),dictht中存储dictEntry,dictEntry中存储的就是Key/Value具体数据,key以SDS格式存储,value以redisObject格式存储,redisObject存储了数据的类型type(string,hash,list,set,zset)和编码encoding(embstr,raw,int等)。
在这里插入图片描述

一个缓存行64字节,redisObject本身占16byte,存储string类型占4byte,剩余44,数据小于44就不会再去开辟内存空间,object encoding就是embstr,超过45就是raw;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值