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

Redis - String相关命令

目录

  • set
  • get
  • mset
  • mget
  • setnx、setex、psetex
  • incr、incrby、decr、decrby、incrbyfloat
  • append
  • getrange
  • setrange
  • strlen
  • 字符串类型编码方式
  • 总结

Redis - String

Redis存储的字符串,是直接按二进制方式存储,不会做任何编码转换,存的是什么,取出来的就是什么

set

set命令的完整体

set key value [expiration EX seconds |PX milliseconds] [NX|XX]

Redis语法格式说明:

[] 表示一个独立的单元,表示可选项,|表示或者

ex 表示设置超时时间,单位是秒,px也是设置超时时间,单位是毫秒

set key value ex 10

相当于

set key value ex 10
expire key 10

NX表示:如果key不存在才设置,如果key存在就不设置(返回nil)

XX表示:如果key存在才设置,如果key不存在就不设置(返回nil)

另外,如果key不存在,会创建新的键值对,如果key存在,会把旧的value覆盖掉,可能会改变原来的数据类型,key设置的ttl也会失效

使用案例:
在这里插入图片描述

get

get只支持字符串类型的value,如果value是其他类型,使用get获取会出错
在这里插入图片描述

mset

一次设置多个key的值

mset key value [key value...]

在这里插入图片描述

时间复杂度O(N),N指的是命令中key的个数

mget

一次获取多个key的值,如果value不是字符串类型的,返回nil

mget key [key...]

在这里插入图片描述

时间复杂度O(N),N指的是命令中key的个数

setnx、setex、psetex

setnx:不存在才能设置,存在则设置失败

setnx key value

在这里插入图片描述

setex:设置value的同时,设置过期时间(单位秒)

setex key seconds value

在这里插入图片描述

psetex:设置value的同时,设置过期时间(单位毫秒)

psetex key milliseconds value

在这里插入图片描述

incr、incrby、decr、decrby、incrbyfloat

  • incr:针对value+1,key对应的value必须是整数(64位范围内),返回值是 +1 之后的值
incr key

在这里插入图片描述

如果key不存在,就把这个key的value当做0

在这里插入图片描述

  • incrby:针对value+n
incrby key increment

在这里插入图片描述

如果key不存在,就把这个key的value当做0

在这里插入图片描述

n也可以是负数

在这里插入图片描述

  • decr:针对value-1,key对应的value必须是整数(64位范围内),返回值是 -1 之后的值
decr key

在这里插入图片描述

如果key不存在,就把这个key的value当做0

在这里插入图片描述

  • decrby:针对value-n
decrby key increment

在这里插入图片描述

  • incrbyfloat:针对value +小数或者value-小数

在这里插入图片描述

​ 这个命令没有减法版本,但是可以加负数,并且使用Redis进行的计数操作一般是整数

上述时间复杂度都是O(1),多个客户端针对同一个key进行incr操作,不会引起线程安全问题

append

如果key已经存在,并且value是String类型,这个命令会将value追加到原有的value后面。如果key不存在,效果相当于set,返回值是追加后的字符串的长度

append key value

在这里插入图片描述
在这里插入图片描述

append返回值的单位长度是字节,Redis不会对字符编码做处理,设置的是什么,获取的就是什么

在这里插入图片描述

Xshell终端默认是utf8,所以在终端输入汉字之后也是按照utf8编码的,在utf8中,一个汉字通常是3个字节的,所以在获取的时候,也是utf8编码的,那么如何让Redis获取key对应的value能够显示中文?在启动的时候加上 --raw即可

redis-cli --raw

在这里插入图片描述

getrange

返回key对应的String的子串,由start和end确定(左闭右闭),使用负数表示倒数。-1表示倒数第一个字符,-2表示倒数第二个字符,以此类推如果超过了范围会根据String长度自动调整(下标从0开始)

getrange key start end

在这里插入图片描述

如果value是中文,切出来的可能是不完整的汉字

在这里插入图片描述

setrange

将字符串中的子串进行替换

setrange key offset value

offset表示偏移量,表示从第几个字节开始进行替换,结束的位置是看value的长度,返回值是替换后新的字符串的长度

在这里插入图片描述

如果针对中文字符串进行setrange,可能会出问题

如果key不存在,也是可以进行setrange操作,只不过会把offset之前的内容填充成0x00

在这里插入图片描述

strlen

获取字符串的长度,单位是字节,如果key不存在返回0,如果对应的key的value不是String类型的则会报错

strlen key

在这里插入图片描述

字符串类型编码方式

字符串类型的内部编码方式有3种,包括int、embstr、raw

int:8个字节的长整型

embstr:小于39个字节的字符串

raw:大于39个字节的字符串

Redis会根据当前值的类型和长度动态的决定使用哪种编码方式

在这里插入图片描述

总结

命令效果时间复杂度
set key value [key value…]设置 key 的值是 valueO(k), k 是键个数
get key获取 key 的值O(1)
del key [key …]删除指定的 keyO(k), k 是键个数
mset key value [key value…]批量设置指定的 key 和 valueO(k), k 是键个数
mget key [key …]批量获取 key 的值O(k), k 是键个数
incr key指定的 key 的值 +1O(1)
decr key指定的 key 的值 -1O(1)
incrby key n指定的 key 的值 +nO(1)
decrby key n指定的 key 的值 -nO(1)
incrbyfloat key n指定的 key 的值 +nO(1)
append key value指定的 key 的值追加 valueO(1)
strlen key获取指定 key 的值的⻓度O(1)
setrange key offset value覆盖指定 key 的从 offset 开始的部分值O(n),n是字符串长度,通常视为O(1)
getrange key start end获取指定 key 的从 start 到 end 的部分值O(n),n是字符串长度,通常视为O(1)

相关文章:

Redis - String相关命令

目录 setgetmsetmgetsetnx、setex、psetexincr、incrby、decr、decrby、incrbyfloatappendgetrangesetrangestrlen字符串类型编码方式总结 Redis - String Redis存储的字符串,是直接按二进制方式存储,不会做任何编码转换,存的是什么&#xff…...

pytorch基于FastText实现词嵌入

FastText 是 Facebook AI Research 提出的 改进版 Word2Vec,可以: ✅ 利用 n-grams 处理未登录词 比 Word2Vec 更快、更准确 适用于中文等形态丰富的语言 完整的 PyTorch FastText 代码(基于中文语料),包含&#xff1…...

3D人脸建模:高精度3D人脸扫描设备快速生成真人脸部3D模型

什么是3D人脸建模? 3D人脸建模,即借助特定技术手段,获取人脸三维数据,并构建出能精准呈现人脸形状、纹理等特征的三维模型。这一技术广泛应用于计算机视觉、人机交互、虚拟现实、影视制作等多个领域,为各行业都带来了前所未有的创…...

4.PPT:日月潭景点介绍【18】

目录 NO1、2、3、4​ NO5、6、7、8 ​ ​NO9、10、11、12 ​ 表居中或者水平/垂直居中单元格内容居中或者水平/垂直居中 NO1、2、3、4 新建一个空白演示文稿,命名为“PPT.pptx”(“.pptx”为扩展名)新建幻灯片 开始→版式“PPT_素材.doc…...

冷链监控系统

前后端源码 wx :bright12389 冷链系统需求分析 1. 项目背景 冷链系统用于监控和管理冷链物流过程中的环境参数(如温度、湿度),确保货物在运输、存储过程中的质量安全。系统需支持实时监控、历史数据分析、异常告警等功能。 2.…...

VSCode中代码颜色异常

检查右下角语言模式是否是HTML, 如果不是就点击更改为HTML模式即可...

表格标签的使用

一.表格标签 1.1表格标签的作用 用来显示和展示数据&#xff0c;不是用来布局页面的。 1.2表格的基本语法 <table> //用于定义表格标签 <tr> // table row 用于定义表格中的行&#xff0c;必须嵌套在<table> </table>标签中 <td>单元格内的文…...

llama.cpp GGUF 模型格式

llama.cpp GGUF 模型格式 1. Specification1.1. GGUF Naming Convention (命名规则)1.1.1. Validating Above Naming Convention 1.2. File Structure 2. Standardized key-value pairs2.1. General2.1.1. Required2.1.2. General metadata2.1.3. Source metadata 2.2. LLM2.2.…...

嵌入式硬件篇---HAL库内外部时钟主频锁相环分频器

文章目录 前言第一部分&#xff1a;STM32-HAL库HAL库编程优势1.抽象层2.易于上手3.代码可读性4.跨平台性5.维护和升级6.中间件支持 劣势1.性能2.灵活性3.代码大小4.复杂性 直接寄存器操作编程优势1.性能2.灵活性3.代码大小4.学习深度 劣势1.复杂性2.可读性3.可维护性4.跨平台性…...

【IoCDI】_@Bean的参数传递

目录 1. 不创建参数类型的Bean 2. 创建一个与参数同类型同名的Bean 3. 创建多个与参数同类型&#xff0c;其中一个与参数同名的Bean 4. 创建一个与参数同类型不同名的Bean 5. 创建多个与参数同类型但不同名的Bean 对于Bean修饰的方法&#xff0c;也可能需要从外部传参&…...

[特殊字符] ChatGPT-4与4o大比拼

&#x1f50d; ChatGPT-4与ChatGPT-4o之间有何不同&#xff1f;让我们一探究竟&#xff01; &#x1f680; 性能与速度方面&#xff0c;GPT-4-turbo以其优化设计&#xff0c;提供了更快的响应速度和处理性能&#xff0c;非常适合需要即时反馈的应用场景。相比之下&#xff0c;G…...

【模型】Bi-LSTM模型详解

1. 模型架构与计算过程 Bi-LSTM 由两个LSTM层组成&#xff0c;一个是正向LSTM&#xff08;从前到后处理序列&#xff09;&#xff0c;另一个是反向LSTM&#xff08;从后到前处理序列&#xff09;。每个LSTM单元都可以通过门控机制对序列的长期依赖进行建模。 1. 遗忘门 遗忘…...

directx12 3d开发过程中出现的报错 一

报错&#xff1a;“&”要求左值 “& 要求左值” 这个错误通常是因为你在尝试获取一个临时对象或者右值的地址&#xff0c;而 & 运算符只能用于左值&#xff08;即可以放在赋值语句左边的表达式&#xff0c;代表一个可以被引用的内存位置&#xff09;。 可能出现错…...

Ubuntu 24.04 安装 Poetry:Python 依赖管理的终极指南

Ubuntu 24.04 安装 Poetry&#xff1a;Python 依赖管理的终极指南 1. 更新系统包列表2. 安装 Poetry方法 1&#xff1a;使用官方安装脚本方法 2&#xff1a;使用 Pipx 安装 3. 配置环境变量4. 验证安装5. 配置 Poetry&#xff08;可选&#xff09;设置虚拟环境位置配置镜像源 6…...

读写锁: ReentrantReadWriteLock

在多线程编程场景中&#xff0c;对共享资源的访问控制极为关键。传统的锁机制在同一时刻只允许一个线程访问共享资源&#xff0c;这在读写操作频繁的场景下&#xff0c;会因为读操作相互不影响数据一致性&#xff0c;而造成不必要的性能损耗。ReentrantReadWriteLock&#xff0…...

上海路网道路 水系铁路绿色住宅地工业用地面图层shp格式arcgis无偏移坐标2023年

标题和描述中提到的资源是关于2023年上海市地理信息数据的集合&#xff0c;主要包含道路、水系、铁路、绿色住宅区以及工业用地的图层数据&#xff0c;这些数据以Shapefile&#xff08;shp&#xff09;格式存储&#xff0c;并且是适用于ArcGIS软件的无偏移坐标系统。这个压缩包…...

爬虫学习笔记之Robots协议相关整理

定义 Robots协议也称作爬虫协议、机器人协议&#xff0c;全名为网络爬虫排除标准&#xff0c;用来告诉爬虫和搜索引擎哪些页面可以爬取、哪些不可以。它通常是一个叫做robots.txt的文本文件&#xff0c;一般放在网站的根目录下。 robots.txt文件的样例 对有所爬虫均生效&#…...

Python小游戏29乒乓球

import pygame import sys # 初始化pygame pygame.init() # 屏幕大小 screen_width 800 screen_height 600 screen pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("打乒乓球") # 颜色定义 WHITE (255, 255, 255) BLACK (…...

220.存在重复元素③

目录 一、题目二、思路三、解法四、收获 一、题目 给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。 找出满足下述条件的下标对 (i, j)&#xff1a; i ! j, abs(i - j) < indexDiff abs(nums[i] - nums[j]) < valueDiff 如果存在&#xff0c;返回 true &a…...

使用 Go 语言调用 DeepSeek API:完整指南

引言 DeepSeek 是一个强大的 AI 模型服务平台&#xff0c;本文将详细介绍如何使用 Go 语言调用 DeepSeek API&#xff0c;实现流式输出和对话功能。 Deepseek的api因为被功击已不能用&#xff0c;本文以 DeepSeek&#xff1a;https://cloud.siliconflow.cn/i/vnCCfVaQ 为例子进…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

k8s从入门到放弃之Pod的容器探针检测

k8s从入门到放弃之Pod的容器探针检测 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;容器探测是指kubelet对容器执行定期诊断的过程&#xff0c;以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...