zoukankan      html  css  js  c++  java
  • Redis的数据结构(一)

    (一)使用SDS(simple dynamic string)简单动态字符串。

    好处:

    1.可以杜绝缓冲区溢出。--->SDS  API在修改SDS时会进行空间判断,【空间不足自动扩充-->再执行修改操作

    2.C的   内存重分配  过程--->每次都要重分配--->耗时影响性能

    ①执行增长字符串操作--->like appened拼接操作,在执行该操作之前--->先通过内存重分配-->拓展底层数组空间大小。

    ②执行缩短字符串操作--->like  trim,那么在执行这个操作之后,内存重分配--->释放部分空间

    3.SDS  的空间预分配惰性空间释放【SDS优化策略

    ①:空间预分配:--->用于优化SDS字符串增长操作。【①SDS.len<1MB--->size*2+1[size大小的未使用空间+这个1用于保存空字符]   

                                                                                         ②SDS.len>1MB--->30MB(len的大小由1变为30)+1MB(未使用空间)+1byte(保留空字符)

    ②:惰性空间释放--->优化SDS字符串缩短操作。避免缩短字符时所需要的内存重新分配操作。并为将来可能的增长操作提供了优化

    (二)Redis字典的实现

    1.哈希表

    扩展和收缩是根据  负载因子来判断的。【其中拓展有个--写时复制---优化子进程的使用效率】

  • 相关阅读:
    es6-箭头函数
    高度自适应的div
    移动端css水平垂直居中
    跨域2-常用的跨域方式
    跨域1-CORS跨域
    前端路由分类
    K8S系列-2.常用命令
    Git多分支管理
    微服务-01初识
    VirtualBox虚拟Centos磁盘文件扩容
  • 原文地址:https://www.cnblogs.com/not-alone/p/8510095.html
Copyright © 2011-2022 走看看