redis数据结构附录

引言

本次对上一次的数据结构知识进行补充,主要有redis数据结构的相关应用场景和内存相关知识

引用计数-内存

redis中的对象回收机制是采用引用计数的方式,首先我们可以通过redis对象结构体代码可知

/*
 * Redis 对象
 */
typedef struct redisObject {
    ...

    // 引用计数
    int refcount;
    ...

} robj;

redis数据结构附录

上面表格是和引用计数字段相关的api

引用计数-共享

我们知道引用计数可以实现对象内存什么时候销毁,那么引用计数也可以用来对象共享

比如此时有一个对象A,值为10,新建了一个对象B,值和类型都与A一样,则可以让他们指向同一个地址,然后引用计数+1

注意:redis初始化时候,会自动创建10000个字符串对象,包括0-9999这10000个整数,当服务器要用到这些数字的字符串对象时候,redis就不需要重新创建。(可以修改 redis.h/REDIS_SHARED_INTEGERS进行修改)

redis> set A 100
OK
redis> OBJECT REFCOUNT A
(integer) 2

应用场景

redis由于有多种数据结构,每种数据结构都有着不同的api和对应的时间复杂度,因此在实际工作或者项目开发中,应该面对不同场景选择不同的redis数据结构,因为自己在字节工作,会常常使用redis,下面根据自己平时的一些总结进行阐述,这个部分会持续更新

自己的网址:www.shicoder.top
欢迎加群聊天 452380935
本文由博客一文多发平台 OpenWrite 发布!

Original: https://www.cnblogs.com/shilinkun/p/16168911.html
Author: 小坤学习园
Title: redis数据结构附录

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606988/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CANoe的安装和使用

    CANoe的简介 CANoe是德国Vector公司为汽车总线的开发而设计的一款总线开发环境,全称叫CAN open environment。CANoe集合了网络监控、数据获取/记录…

    Linux 2023年6月13日
    0209
  • Spring5 学习笔记

    学习地址: B站-动力节点 个人代码: GitHub Spring 概述 1.1 Spring 简介 Spring Framework 是一个使用Java开发的、轻量级的、开源框架…

    Linux 2023年6月14日
    092
  • usermod -aG命令

    原文链接:https://www.zhoubotong.site/post/73.html添加用户uos到组groupA里: usermod -a -G groupA uos 例如…

    Linux 2023年6月6日
    01.7K
  • 机器学习:单元线性回归(python简单实现)

    本篇文章主要记录和讲解使用python如何简单实现单元线性回归算法 文章简介 使用python简单实现机器学习中单元线性回归算法。 算法目的 该算法核心目的是为了求出假设函数h中多…

    Linux 2023年6月7日
    092
  • jenkins

    jenkins 1.简介 1.1 SVN介绍 1.2 Maven介绍 1.3 Ant介绍 1.4 Gradle介绍 1.5 jenkins工作原理 1.6 jenkins特点 2….

    Linux 2023年6月7日
    0113
  • Redis快速度特性及为什么支持多线程及应用场景

    转载请注明出处: 1.Redis 访问速度快特性 正常情况下,Redis执行命令的速度非常快,官方给出的数字是读写性能可以达到10万/秒,当然这也取决于机器的性能;Redis使用了…

    Linux 2023年5月28日
    094
  • Linux 0.11源码阅读笔记-内存管理

    内存管理 Linux内核使用段页式内存管理方式。 内存池 物理页:物理空闲内存被划分为固定大小(4k)的页 内存池:所有空闲的物理页面形成一个内存池,并逐页分配和回收。并通过位图记…

    Linux 2023年5月27日
    097
  • node.js和vue cli脚手架下载安装配置方法

    一、node.js安装以及环境配置 1、下载vue.js 下载地址: https://nodejs.org/en/ 2、安装node.js 下载完成后,双击安装包开始安装。安装地址…

    Linux 2023年6月7日
    0105
  • Linux动静分离与Rewrite

    一、动静分离 1.1 单台机器动静分离 1、创建NFS挂载点(NFS服务端) mkdir /static vim /etc/exports /static 172.16.1.0/2…

    Linux 2023年5月27日
    0104
  • docker相关命令杂理

    – 2020.11.16docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] #保存现有的镜像 # docker commit …

    Linux 2023年6月8日
    091
  • VSCode实现GDB图形界面远程调试

    如何利用VSCode实现GDB图形界面远程调试 前言 在习惯了集成开发环境的图形界面调试时,首次使用GDB远程调试必定很不习惯,下面讲述如何利用VSCode实现GDB图形界面远程调…

    Linux 2023年6月7日
    0113
  • Linux 下统计文件夹下文件的数量

    1、查看当前目录下的文件数量(不包含子目录中的文件) 2、查看当前目录下的文件数量(包含子目录中的文件) 3、 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如…

    Linux 2023年6月13日
    0104
  • Emacs 基础offset值

    cc-mode有如下规定:One of the symbols +, -, ++, –, *, or /These special symbols describe a…

    Linux 2023年6月13日
    088
  • linux配置密钥登录

    一、前言: ssh远程登录密码认证的方式有三种,password、Keyboard Interactive、Public Key前面两种方式就是密码认证,含义都是一样大同小异。第三…

    Linux 2023年6月8日
    087
  • nginx源码编译安装(详解)

    nginx编译安装 编译安装大致步骤: 安装步骤: 官网下载合适的版本,建议选择稳定版本。 官网地址:https://nginx.org wget https://nginx.or…

    Linux 2023年5月27日
    0141
  • batch批处理笔记

    1. echo 和 @ 回显命令 @ #关闭单行回显 echo off #从下一行开始关闭回显 @echo off #从本行开始关闭回显。一般批处理第一行都是这个 echo on …

    Linux 2023年6月7日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球