当前位置: 首页 > news >正文

05 Redis之Benchmark+简单动态字符串SDS+集合的底层实现

3.8 Benchmark

Redis安装完毕后会自动安装一个redis-benchmark测试工具,其是一个压力测试工具,用于测试 Redis 的性能。 src目录下可找到该工具

通过 redis-benchmark –help 命令可以查看到其用法

3.8.1 测试1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.9 简单动态字符串SDS

无论是 Redis 的 Key 还是 Value,其基础数据类型都是字符串。

例如,Hash 型 Value 的field 与 value 的类型、List 型、Set 型、ZSet 型 Value 的元素的类型等都是字符串。

虽然 Redis是使用标准 C 语言开发的,但并没有直接使用 C 语言中传统的字符串表示,而是自定义了一种字符串。这种字符串本身的结构比较简单,但功能却非常强大,称为简单动态字符串, Simple Dynamic String,简称 SDS。

注意,Redis 中的所有字符串并不都是 SDS,也会出现 C 字符串。C 字符串只会出现在字符串“字面常量”中,该字符串不可能发生变更。
例如: edisLog(REDIS_WARNNING, “sdfsfsafsafds”);

3.9.1 SDS的结构

SDS 不同于 C 字符串。C 字符串本身是一个以双引号括起来,以空字符’\0’结尾的字符序列。但 SDS 是一个结构体,定义在 Redis 安装目录下的 src/sds.h 中:

struct sdshdr{// 字节数组,用于保存字符串 
char buf[]; 
// buf[]中已使用字节数量,称为 SDS 的长度 int len; 
// buf[]中尚未使用的字节数量 
int free; 
}

例如执行 SET country “China”命令时,键 country 与值”China”都是 SDS 类型的,只不过一个是 SDS 的变量,一个是 SDS 的字面常量。”China”在内存中的结构如下(SDS会预留一部分free空间):
在这里插入图片描述

3.9.2 SDS的优势

3.9.2.1 防止”字符串长度获取”性能瓶颈

相关文章:

  • 改变this指针的三个方法?
  • 如何在 Ubuntu 中安装 Microsoft Edge 浏览器
  • 【Spring连载】使用Spring Data访问Redis(五)----Redis Cache
  • 一篇文带你使用js实现拖拽排序
  • go-zero 统一返回
  • 使用Process.Start()打开文件夹时出现访问被拒绝异常
  • go grpc高级用法
  • 输出日志信息的两种方式比较:日志框架SLF4J和System.out.println
  • 【flutter项目类型】project type如何区分
  • Python基础(二十九、pymsql)
  • 如何快速搭建个人博客
  • c++线程thread示例
  • qt5-入门
  • UE4 CustomDepthMobile流程小记
  • 业务逐字稿
  • 《深入 React 技术栈》
  • HTTP中GET与POST的区别 99%的错误认识
  • node-glob通配符
  • Octave 入门
  • Python爬虫--- 1.3 BS4库的解析器
  • Sass 快速入门教程
  • SOFAMosn配置模型
  • Solarized Scheme
  • Swift 中的尾递归和蹦床
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Webpack 4 学习01(基础配置)
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 对象引论
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 前言-如何学习区块链
  • 深度学习中的信息论知识详解
  • 小而合理的前端理论:rscss和rsjs
  • 用 Swift 编写面向协议的视图
  • 再次简单明了总结flex布局,一看就懂...
  • 白色的风信子
  • mysql面试题分组并合并列
  • ​香农与信息论三大定律
  • # dbt source dbt source freshness命令详解
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #Java第九次作业--输入输出流和文件操作
  • #面试系列-腾讯后端一面
  • (09)Hive——CTE 公共表达式
  • (152)时序收敛--->(02)时序收敛二
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)php投票系统 毕业设计 121500
  • (九)One-Wire总线-DS18B20
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (三十五)大数据实战——Superset可视化平台搭建
  • (一)为什么要选择C++
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案