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有预留空间