Redis对象--String类型

89 阅读2分钟

REDIS知识点汇总--String

Redis快速使用

  • 在windows安装目录下 打开cmd 输入redis-server.exe redis.windows.conf运行,不能关
  • 本机的默认用户和密码为:root、123456
  • 通过客户端Another Redis Desktop Manager进行图形化连接使用,测试常见的redis命令正确性

Redis数据结构

Redis Object

Object是什么?

​ Redis是双列存储的NoSQL非关系型数据库,key和value都能抽象成对象,key只能是String型的对象,而value可以各种类型主要有String、List、SET、Zset、Hash、Stream等

Object底层数据结构?

​ Redis是基于C语言实现的,结构体主要包括:type类型、encoding编码方式、refcount引用指针、ptr内容指针等

String类型

常见操作

  • 不带参数的创建和更新: set

    	set testString1 123
    
  • 带参数的创建和更新

    如果不存在就创建 setnx(set not exist)

     setnx testString1 123
    

​ 设置单位为s的过期时间 setex(时间写在value前面)

​ 设置单位为ms的过期时间 setpx

SETEX testString1 10 abc
  • 获取参数 get、mget

    get testString1
    mget teStString1 testString2
    
  • 删除

     del testString1
    

String的编码方式

​ 说明:上文提到object结构体中有几个数据段 此时type为String encoding方式为下面三种

  • long范围类的整数时 为INT
  • 小于等于阈值时 是EMBSTR(这个阈值在3.2之前是39,之后是44)
  • 大于阈值时 是RAW

set一个已有对象会发生什么?

​ 如果是同一个类型对象,会更新这个值并覆盖或擦除过期时间,如果是不同类型的值,就会删除原来类型的值,新建一个指定类型的值

浮点型会以什么编码?

​ 浮点型会以EMBSTR或者RAW编码

String可以是多大?

​ 我当前使用的是5.05版本,源码中注明是512MB

SDS有什么用?

​ SDS:simple dynamic string 简单动态字符串,用C语言指定了一个字符串结构体包含 长度 占用大小和指向byte指针

​ C语言原来的字符是char数组 以\0结尾,二进制不安全,SDS二进制安全

​ SDS可以直接获得String字符串大小获取时间是O(1),原来要遍历

​ SDS有预留空间