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

redis详细教程(1.String类型)

Redis 的 String 类型内部使用了一种叫做 SDS(Simple Dynamic String)的结构。SDS 的设计比传统的 C 语言字符串更加高效和安全,主要特点如下:

头部信息:SDS 的头部包含了一些元数据,比如字符串的长度、剩余可用空间的长度以及一个标志位,这允许 Redis 快速获取字符串的长度,避免频繁的遍历操作。
二进制安全:SDS 保证二进制安全,即字符串可以包含任何数据,包括空字符(\0),这对于存储如图片、视频等二进制数据至关重要。
空间预分配和惰性空间释放:当 SDS 需要增长时,Redis 会预分配比实际需要更多的空间,减少连续增长操作时的内存重新分配次数。当 SDS 缩短时,Redis 不会立即释放多余的空间,而是标记为可用,以便未来的扩展操作可以直接使用。

常用命令

Redis 为字符串类型提供了一系列命令,以下是一些常用的命令及其功能:

  1. SET:设置一个键的值。如果这个键之前已经存在,那么它的旧值会被新值覆盖。
  2. GET:获取一个键的值。
  3. MGET:获取多个键的值。
  4. MSET:同时设置多个键的值。
  5. SETNX:只有在键不存在时才进行设置。
  6. APPEND:Redis 中的一个字符串操作命令,用于将指定的值追加到键所关联的字符串的末尾。
  7. STRLEN:一个用于获取字符串类型键的长度的命令。
  8. 计数命令:如 INCR、DECR、INCRBY、DECRBY 等,用于对存储在字符串中的数字值进行原子增减操作 。
  9. DEL: 删除键。

SET设置值,GET获取值:

使用MSET获取多个键,并用MGET获取这些键的值,如图:

使用SETNX设置之前不存在的键,如果键存在设置失败返回0,如果成功返回1:

使用APPEND添加内容,如果键不存在,那么 APPEND 命令将创建一个新的键,并设置其值为指定的值。APPEND 命令执行后返回的是追加操作后字符串的总长度。如果键不存在,则返回的是新字符串的长度,如下图所示:

STRLEN(如果没有值则返回0):

使用INCR命令增加计数,当myincr键不存在时执行INCR,它将被创建,初始为零,然后增加1,返回1:

使用DECR命令减少计数,当myincr键不存在时执行DECR,它将被创建,初始为零,然后减少1,返回-1,下图为减少示例:

INCRBY 是 Redis 中用于对存储在指定键中的整数值执行增加操作的命令。INCRBY 允许您指定一个整数值,该值将加到键的当前值上。如果键不存在,那么 INCRBY 将会创建一个键,并将其初始值设置为 0,然后再执行增加操作。

DECRBY则相反,用于减少操作,如下图所示:

DEL:

过期时间操作

在 Redis 中,你可以为键设置过期时间,这样键在指定的时间后会自动被删除。

设置键在指定秒数后过期,EXPIRE key seconds,如果键设置成功,命令返回 1;如果键不存在或无法设置过期时间,命令返回 0,

用TTL  key命令获取剩余过期时间:

*TTL  key命令后如果键不存在,返回 -2。
如果键存在但没有设置过期时间,返回 -1。
如果键设置了过期时间,返回键剩余的秒数。

使用 SET命令与过期时间
在设置键值的同时设置过期时间:

使用PERSIST key命令将其设置为永不过期:

PEXPIRE命令
与 EXPIRE类似,但设置的时间单位是毫秒:

PTTL 命令
与 TTL类似,但返回的时间单位是毫秒,如图:

Redis 的 String 类型在实际应用中有着广泛的用途,从简单的键值对存储,到复杂的实时系统,都离不开 String 类型的支持。常见的应用场景包括缓存、计数器、分布式锁等 。

http://www.lryc.cn/news/469671.html

相关文章:

  • 用友U8接口-库存管理(7)
  • Spring Boot HikariCP数据库连接池入门
  • Docker快速上手教程:MacOS系统【安装/配置/使用/原理】全链路速通
  • 【JavaSE】认识String类,了解,进阶到熟练掌握
  • vue3 vben-admin 窗口大小更改后 echarts尺寸变为 100px的问题
  • Web应用框架-Django应用基础(3)-Jinja2
  • js(深浅拷贝,节流防抖,this指向,改变this指向的方法)
  • 香橙派5(RK3588)使用npu加速yolov5推理的部署过程
  • 基于MWORKS的蓝桥杯「智能装备数字化建模大赛」正式发布,首期培训本周六开启
  • 021、深入解析前端请求拦截器
  • windows中的tracert命令
  • 【玩儿】Java 数字炸弹小游戏(控制台版)+ IO 数据存储
  • 今日头条躺赚流量:自动化新闻爬取和改写脚本
  • 日常实习与暑期实习详解
  • Git的原理和使用(六)
  • Elasticsearch 中的高效按位匹配
  • LSTM,全称长短期记忆网络(Long Short-Term Memory),是一种特殊的循环神经网络(RNN)结构
  • 导出问题处理
  • 通过cv库智能切片 把不同的分镜切出来 自媒体抖音快手混剪
  • 【机器学习】——numpy教程
  • 多线程——线程的状态
  • 开源数据库 - mysql - 组织结构(与oracle的区别)
  • vue3+vite 部署npm 包
  • 华为鸿蒙HarmonyOS应用开发者高级认证视频及题库答案
  • 【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构
  • 大一物联网要不要转专业,转不了该怎么办?
  • LeetCode题练习与总结:4的幂--342
  • ubuntu GLEW could not be initialized : Unknown error
  • 51c~目标检测~合集1
  • 前端工程化面试题