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

【Redis】基础命令数据结构

文章目录

  • 基础命令
    • keys
    • exists
    • del
    • expire
    • ttl
    • type
  • 数据结构和内部编码

在这里插入图片描述

在介绍数据类型前先介绍一下 Redis 的基础命令,方便理解

基础命令

keys

返回所有满足样式(pattern)的 key

keys pattern

当前有如下 key

PS:实际开发环境和生产环境不建议使用keys *。因为 keys 的时间复杂度是 O(N),redis 执行命令为单线程,如果数据量过大,可能会因此而阻塞,导致业务线程无法使用 redis,而造成阻塞或更严重的后果

在这里插入图片描述

支持如下样式

  • h?llo:? 可匹配任意一个字符,如 hellohallohxllo

在这里插入图片描述

  • h*llo:* 可匹配任意零个或多个字符,如 hlloheeeello

在这里插入图片描述

  • h[ae]llo:[ ]可匹配其中任意一个字符,如 hellohallo,不匹配 hillohllo

在这里插入图片描述

  • h[^e]llo:[^e] 反向匹配,除了e都可以匹配,如 hallohbllo、…,不匹配 hellohllo

在这里插入图片描述

  • h[a-e]llo:[a-e] 表示匹配 a-e 范围的任意一个字符,如 hallohbllohcllo,不匹配 hellohllo

在这里插入图片描述

exists

判断 key 是否存在,返回存在的个数

exists key [key …]
[ ] 是可选字段

数据同上,不支持样式

在这里插入图片描述

del

删除指定的 key,返回删除的个数

del key [key …]

在这里插入图片描述

expire

为指定的 key 添加秒级的过期时间(Time To Live TTL)

expire key seconds

返回值:1 表示设置成功,0表示设置失败

ttl

获取指定 key 的过期时间,秒级

ttl key

返回值:剩余过期时间,-1 表示没有关联过期时间,-2 表示 key 不存在

127.0.0.1:6379> keys *
1) "heeeeello"
2) "hello"
3) "hallo"
4) "hbllo"
127.0.0.1:6379> ttl hello
(integer) -1
127.0.0.1:6379> ttl hllo
(integer) -2
127.0.0.1:6379> expire hello 10
(integer) 1
127.0.0.1:6379> ttl hello
(integer) 6
127.0.0.1:6379> ttl hello
(integer) 5
127.0.0.1:6379> ttl hello
(integer) -2

expire 和 ttl 都有对应的支持毫秒为单位的版本:pexpire 和 pttl,用法相同

在这里插入图片描述

type

返回 key 对应的数据类型

type key

返回值:nonestringlistsetzsethashstream
添加数据的操作后续讲解

在这里插入图片描述

数据结构和内部编码

type 命令实际返回的是当前键的数据结构类型,分别为 string(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序结合),但这些只是 Redis 对外的数据结构

Redis 中 key 的数据结构都为 string,value 的数据结构有不同

在这里插入图片描述

实际 Redis 针对每种数据类型都有自己的底层内部编码实现,而且不同情况下,会有多种实现,适配不同的场景

数据结构:内部编码
数据结构内部编码
stringraw 较长时使用
int 数字
embstr 较短时使用
hashhashtable
ziplist
listlinkedlist
ziplist
quicklist
sethashtable
intset
zsetskiplist 跳表
ziplist

可以使用 object encoding 查看 value 的内部编码

object encoding key

在这里插入图片描述


以上就是本篇博客的所有内容,感谢你的阅读
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

相关文章:

  • 【C++】string类
  • Linux进程间通信(四)之补充【日志】
  • 算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度
  • 使用 librosa 测量《忘尘谷》节拍速度
  • 人形机器人量产元年开启,AI与物理世界深度融合
  • 局域网常用的测速工具,Iperf3使用教程
  • 数仓-如何保障指标的一致性
  • U盘制作系统盘(含U盘恢复)
  • dockerfile编写入门
  • 正式部署abp vnext应用程序时,如何生成openiddict.pfx证书文件
  • Proser:在使用中改进
  • 21、DeepSeekMath论文笔记(GRPO)
  • 如何更改typora图片存储位置
  • 从前端视角看网络协议的演进
  • 【入门】数字走向II
  • (二)Linux下基本指令 2
  • 动态规划法:爬楼梯
  • 深入浅出 JDBC 与数据库连接池
  • ai agent(智能体)开发 python3基础14:在python 中 总能看到方法里面套方法,那什么时候用这种方式合适呢?
  • 【编译原理】总结
  • 玉渊谭天丨中方为何此时同意与美方接触?出于这三个考虑
  • 央行:当前我国债券市场定价效率、机构债券投资交易和风险管理能力仍有待提升
  • 75岁亚当·费舍尔坐镇,再现80分钟马勒《第九交响曲》
  • 国家主席习近平同普京总统签署关于进一步深化中俄新时代全面战略协作伙伴关系的联合声明
  • 金融监管局:已设立74支私募股权投资基金,支持投资科技创新企业
  • 人民日报评论:莫让“胖东来们”陷入“棒杀”“捧杀”泥潭