redis 核心知识点

Redis

redis的特点

  • 高性能:读11万次每秒,写8万次每秒
  • 高可用:分布式集群可以是多主多从,当主节点发生异常时,对应从节点可以顶替,保持高可用。
  • 易扩展:redis3.0以后的所有数据都存储在16384个槽中,创建集群时需要将槽分配给各个主节点,需要扩容时,将槽重新分配给新的主节点,开启数据迁移即可,在扩容时redis仍然可用。
  • 数据结构丰富:有string、list、set、sorted_set等
  • 原子性:redis是单线程
  • 持久化:redis可以将不用的内存写入磁盘中。重启时从磁盘加载进内存。
  • 灾难恢复:当redis宕机时,可以利用RDB的全量备份和AOF的增量备份进行恢复。

数据结构

string

string的结构
string {
int len;//实际字符串的长度
int free;//剩余可用长度
char buf[];
}

  • 有长度字段,求长度为O(1)。
  • 预分配。当len小于1M时,每次分配空间为原来的2倍。当len大于1M时,每次分配空间增加1M。预留空间较多,append效率高,分配次数减少,但占用较多内存。
  • 惰性释放空间。缩短字符串时,不立即释放因缩短而空出来的空间。
  • 二进制安全。保留原始的字符串,不会受有’\0’的影响。可以用于存储图片、音频、视频等,图片等转化为字符串可能会中间出现’\0’。
  • API安全,增长字符串时,增加了自动扩容防止缓冲区溢出。

适用

  • 计数器,例如热门文章的访问次数、分享次数、点赞次数、收藏数。

命令

  • set
  • get
  • strlen
  • exists
  • incr
  • decr
  • setex
  • expire

list

redis3.2版本之前,list底层使用ziplist或者linked list,3.2版本之后使用quicklist,quicklist底层是ziplist+linkedlist。当存储的都是小整数或短字符串时使用ziplist。
ziplist使用连续内存,是顺序存储结构,类似于数组,但每个节点的大小不一样,使用尽量小合适的编码来存储节点实际数据,以此来节省内存,但这是以时间换空间的,需要额外计算节点长度。zip

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值