redis 高并发问题

发布于 / 随记 / 0条评论 / Tags: none / 16 次浏览

1.并发写,
答:由于redis是单线程的,可以在内存中合并写操作来优化,而且省去了io和序列化操作
2.redis的持久化方式

  • RDB
  • AOF
    3.redis 提供了主从复制功能,即一份数据有多份副本
    4.redis 中的字符串并非C中的字符串实现,而是用SDS(simple dynamic string)的抽象类型,键值对的key和value都是一个SDS类型。SDS还用来缓冲
  • SDS初始大小小于1M,则分配N+1+N的空间,如果大于1M,则分配30MB,目的是防止字符串修改溢出和重新分配空间
  • 惰性回收,如果SDS字符串缩短了,那么free属性会标识剩余的空间,而不是直接收回。
  • 二进制安全,C语言中,字符串必须符合某种编码,如ASCII。比如遇到\0会认为是字符串结尾,但是SDS没有这个假设和限制,村进去的二进制是什么样,读取的时候就是什么样。
    5.当redis列表的值字符串比较大时,redis会采用链表作为数据结构
    6.redis map的实现
  • rehash ---扩张---大于等于使用×2的数字。数字为2的n次方
  • reshash --缩减----小于等于使用的数字,数字为2的n次方
  • 渐进式rehash,每次增删改查都会出发rehash
    7.实际上外面包了一层对象,来决定最终的类型。当我们创建一个键值对的时候,我们会创建两个

    评论区(暂无评论)