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 编码。 

    五:字符串命令的实现

      - 

      

  • 相关阅读:
    CSS display使用
    WPF触发器
    WPF动画2
    WPF动画2
    WPF 动画1
    CSS 媒体查询
    [Leetcode] Rotate List
    [Leetcode] Add Two Numbers
    [Leetcode] Sort List
    [Leetcode] Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/25-lH/p/12661532.html
Copyright © 2011-2022 走看看