【9天Redis系列】数据结构+string

文章目录

前言


1)文章根据Redis6.0版本 编写

2)所有涉及到下标的都支持负数下标,所有涉及到区间的默认指闭区间(' ');

3)符号含义:必选:'< >'、可选:' '、多选一:'|'、多个:'...'、如果' '里有单词是大写的,代表使用这种修饰符必须要写上这个大写单词


Redis的常见数据类型及内部数据结构

Redis有些数据并不以表面的数据类型存储,实际上Redis会根据数据情况使用更高效的数据结构来存储,例如使用type key查看key=key1,value=123的数据得到string,使用object encoding key可以查看其在Redis中真正的存储结构是int:

  • string
    • raw:相当于单位为字节的char数组
    • int :字符为不超过64位二进制大小的整数时
    • embstr :值为较短的字符串或浮点数时
  • hash
    • hashtable :哈希表
    • ziplist :压缩列表,元素较少时采用该数据结构,用来节省空间;元素个数较少且value不能太长,否则升级为hashtable
  • list
    • linkedlist :链表
    • ziplist :压缩列表,元素较少时采用
  • set
    • hashtable 哈希表
    • intset 元素都为整数且元素个数较少时
  • zset
    • skiplist 跳表
    • ziplist 元素较少时采用

String命令

Redis对string类型的value操作命令:

  • set key NX\|XX EX seconds\|PX milliseconds\|EXAT unix-time-seconds\|PXAT unix-time-milliseconds\|KEEPTTL :设置或覆盖一个key,
    • NX:当前key不存在,则set成功
    • XX:当前key存在才可以,设置成功,也就是覆盖原key
    • EX:设置过期时间,对于当前时刻而言的,相当于倒计时,单位秒
    • PX:用法同EX,单位毫秒
    • EXAT:设置过期时间,过期时间为对于1970-01-01 00:00:00 UTC这个时间戳而言的,相当于定个闹钟,单位秒
    • PXAT:用法同EXAT,单位毫秒
    • KEEPTTL:通常搭配XX使用,继承被覆盖的key的过期时间
  • get key:获取对应的value,但是这个value只能为string,否则报错
  • mset key value key1 value1...:批量插入,会覆盖已有的key
  • mget key key1...:批量获取,如果key不存在或非string,返回nil
  • setnx key value:作用同set+NX,当前key不存在才能设置成功,不过这个命令发行时间早于NX修饰符
  • setex key seconds value:作用同set+EX修饰符,这个命令发行时间早于EX修饰符
  • psetex key milliseconds value :作用同set+PX修饰符,这个命令发行时间早于PX修饰符
    ------下述5个命令在key不存在时自动创建key并赋值0再加/减-------
  • incr key:对整数类型的value加1并返回value值
  • incrby key increment:对对整数类型的value加指定值并返回value值
  • decr key:对整数类型的value减1并返回value值
  • decrby key increment:对整数类型的value减指定值并返回value值
  • incrbyfloat key increment :对浮点数类型的value加/减指定值并返回value值
    --------以下对value的插入或获取都是以字节单位的----------
  • append key value:对原value尾部添加,如果key不存在则创建key并赋值,返回最终value的占用字节个数
  • getrange key start end:截取从字节数组下标为start到end位置的字符,并返回截取到的字符串,key不存在返回nil;不支持反向截取,支持用负数下标(-1代表最后一位)
  • setrange key offset value1:从字节数组的start位置开始替换value1到原value上,被替换的字节数取决于value1的字节数,超过原value长度仍然完整插入value1;key不存在则创建一个,但如果offset不为0,则offset前的内容都用 \x00(空字节占位)
  • strlen key:统计value占用字节数,key不存在返回0,不支持非string类型value

明天见

相关推荐
张张123y4 分钟前
# 后端第八课:数据库入门(给 FastAPI 接口加上“记忆“,存下问答历史)
数据库·sql·mysql·oracle·fastapi·sqllite
cspttty14 分钟前
2027秋招市场调研岗:统计学专业如何补齐业务、SQL与研究交付能力
大数据·数据库
BD_Marathon24 分钟前
Milvus数据库的DML操作
数据库·milvus
其实防守也摸鱼30 分钟前
存储管理:页面置换算法学习任务(测验题要求给出置换页面顺序,缺页次数,缺页率)
android·前端·数据库·学习·oracle·自动化
cspttty30 分钟前
2027校招:大数据管理与应用专业如何匹配电商运营与供应链管培生能力要求
大数据·数据库
ss27336 分钟前
AI时代首先数据库-PostgreSQL实战笔记 | 12 PostgreSQL数据目录与重要文件结构
数据库·笔记·postgresql
小天源1 小时前
智叟云集政策监测技术方案——原文解析、证据提取与可核验摘要
java·服务器·数据库
凤山老林1 小时前
从零搭建企业 OAuth2 授权中心:Spring Boot 集成 Spring Authorization Server 与
数据库·spring boot·spring
小羊没烦恼!1 小时前
在.net中读写config文件的各种方法
java·大数据·运维·服务器·前端·数据库·oracle
NocoBase1 小时前
本周更新|优化及缺陷修复
数据库·人工智能·开源·零代码·无代码