Redis基础类型的使用


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、string类型

1. 常用命令

1.1 设置值

set key value [ex seconds] [px milliseconds] [nx|xx]
  1. ex seconds:为 键 设置 秒级过期时间。
  2. px milliseconds:为 键 设置 毫秒级过期时间。
  3. nx:键必须 不存在,才可以设置成功,用于 添加。
  4. xx:与 nx 相反,键必须 存在,才可以设置成功,用于 更新。

1.2 批量设置值

mset key value [key value ...]

1.3 批量获取值

mget key [key ...]

1.4 计数

incr 命令,Redis 还提供了 decr(自减)、incrby(自增指定数字)、decrby(自减指定数字)、incrbyfloat(自增浮点数)等命令操作。

1.5 追加值

append key value

1.6 字符串长度

strlen key

1.7 设置并返回原值

getset key value

1.8 设置指定位置的字符

setrange key offeset value

1.9 设置指定位置的字符

getrange key start end

在这里插入图片描述

二、string类型在Redis中是如何存储的

1. string类型存储

除了记录实际数据,String 类型还需要额外的内存空间记录数据长度、空间使用等信息,这些信息也叫作元数据。当实际保存的数据较小时,元数据的空间开销就显得比较大了。
一个 RedisObject 包含了 8 字节的元数据和一个 8 字节指针,这个指针再进一步指向具体数据类型的实际数据所在,例如指向 String 类型的 SDS 结构所在的内存地址:
在这里插入图片描述

  1. 为了节省内存空间,当保存的是 Long 类型整数时,RedisObject 中的指针就直接赋值为整数数据了,这样就不用额外的指针再指向整数了,节省了指针的空间开销。
  2. 当保存的是字符串数据,并且字符串小于等于 39 字节(3.2版本后SDS结构优化,该值变为44)时,RedisObject 中的元数据、指针和 SDS 是一块连续的内存区域,这样就可以避免内存碎片。这种布局方式也被称为 embstr 编码方式。
  3. 当字符串大于 39 字节时,SDS 的数据量就开始变多了,Redis 就不再把 SDS 和 RedisObject 布局在一起了,而是会给 SDS 分配独立的空间,并用指针指向 SDS 结构。这种布局方式被称为 raw 编码模式。
    在这里插入图片描述

参考文档

Redis如何查看单个key所占用的内存大小
Redis:string类型带来的空间消耗过大的问题。
《闲扯Redis二》String数据类型之底层解析

猜你喜欢

转载自blog.csdn.net/bj_ameng/article/details/115348671
今日推荐