zoukankan      html  css  js  c++  java
  • 《Redis

    一:概述

      - Redis 源码版本为3.0.0.

      - Redis 字符串命令请戳

      - OBJECT ENCODING key 查看数据底层类型实现。

      - 字符串最大字节为 512M.

    二:总结

      - 使用 String 时,如果字符串不超过 32 字节且需要变动字符串,则可以重建字符串。(如果修改的话会引起底层数据类型的变动)

     

    二:字符串对象的底层实现

      - 编码方式

        - 字符串对象共有三种编码方式 int/raw/embstr

      - 编码方式的选择

        - 如果对象保存的是整数,并且可以用long类型表示,编码为 int

        - 如果对象保存的是字符串,并且长度大于32字节,SDS保存,编码为 raw.(测试为35字节)

        - 如果对象保存的是字符串,并且长度小于32字节, 编码为 embstr.

      - embstr 编码方式

        - 专门保存短字符串的一种优化编码方式。

        - 和 SDS 一样,都是使用 redisObject 和 sdshdr 来表示字符串对象。

          - 但是 raw 编码会调用两次内存分配来分别创建。

          - embstr 只会调用一次(分配一块连续的内存)。

        - 相比与 raw 格式

          - embstr 内存分配次数更少。

          - 释放内存更快。

          - 更好的使用缓存。(连续内存)

        - embstr保存图示

          - 

        - raw保存图示

          - 

    四:编码转换

      - 转换方式

        -  int/embstr 编码会在某些条件下,转换为 raw 编码的字符串对象。

      - 转换条件

        - 如果对象执行了一些命令,使得这个对象存的不在是整数值,那么会从 int -> raw。

        - Redis 没有为 embstr 的字符串编写任何修改程序,也可以说 embstr 编码是只读的。所以对 embstr 字符串修改是总会变成 raw 编码。 

    五:字符串命令的实现

      - 

      

  • 相关阅读:
    收音机 德生
    Ubuntu14.04+安卓系统4.3+JDK6编译源码
    springboot2.0+redis实现消息队列+redis做缓存+mysql
    万能命令
    分享个强大的抓包工具
    Vue之Mustache语法
    Vue之vbind基本使用
    Centos7.3环境下安装最新版的Python3.8.4
    Vue之vonce、vhtml、vtext、vpre、vcloak的基本使用
    Centos7.3安装最新版本git
  • 原文地址:https://www.cnblogs.com/25-lH/p/12661532.html
Copyright © 2011-2022 走看看