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 的值是 value | O(k), k 是键个数 |
| get key | 获取 key 的值 | O(1) |
| del key [key …] | 删除指定的 key | O(k), k 是键个数 |
| mset key value [key value…] | 批量设置指定的 key 和 value | O(k), k 是键个数 |
| mget key [key …] | 批量获取 key 的值 | O(k), k 是键个数 |
| incr key | 指定的 key 的值 +1 | O(1) |
| decr key | 指定的 key 的值 -1 | O(1) |
| incrby key n | 指定的 key 的值 +n | O(1) |
| decrby key n | 指定的 key 的值 -n | O(1) |
| incrbyfloat key n | 指定的 key 的值 +n | O(1) |
| append key value | 指定的 key 的值追加 value | O(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存储的字符串,是直接按二进制方式存储,不会做任何编码转换,存的是什么ÿ…...
pytorch基于FastText实现词嵌入
FastText 是 Facebook AI Research 提出的 改进版 Word2Vec,可以: ✅ 利用 n-grams 处理未登录词 比 Word2Vec 更快、更准确 适用于中文等形态丰富的语言 完整的 PyTorch FastText 代码(基于中文语料),包含࿱…...
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表格标签的作用 用来显示和展示数据,不是用来布局页面的。 1.2表格的基本语法 <table> //用于定义表格标签 <tr> // table row 用于定义表格中的行,必须嵌套在<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库内外部时钟主频锁相环分频器
文章目录 前言第一部分: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. 创建多个与参数同类型,其中一个与参数同名的Bean 4. 创建一个与参数同类型不同名的Bean 5. 创建多个与参数同类型但不同名的Bean 对于Bean修饰的方法,也可能需要从外部传参&…...
[特殊字符] ChatGPT-4与4o大比拼
🔍 ChatGPT-4与ChatGPT-4o之间有何不同?让我们一探究竟! 🚀 性能与速度方面,GPT-4-turbo以其优化设计,提供了更快的响应速度和处理性能,非常适合需要即时反馈的应用场景。相比之下,G…...
【模型】Bi-LSTM模型详解
1. 模型架构与计算过程 Bi-LSTM 由两个LSTM层组成,一个是正向LSTM(从前到后处理序列),另一个是反向LSTM(从后到前处理序列)。每个LSTM单元都可以通过门控机制对序列的长期依赖进行建模。 1. 遗忘门 遗忘…...
directx12 3d开发过程中出现的报错 一
报错:“&”要求左值 “& 要求左值” 这个错误通常是因为你在尝试获取一个临时对象或者右值的地址,而 & 运算符只能用于左值(即可以放在赋值语句左边的表达式,代表一个可以被引用的内存位置)。 可能出现错…...
Ubuntu 24.04 安装 Poetry:Python 依赖管理的终极指南
Ubuntu 24.04 安装 Poetry:Python 依赖管理的终极指南 1. 更新系统包列表2. 安装 Poetry方法 1:使用官方安装脚本方法 2:使用 Pipx 安装 3. 配置环境变量4. 验证安装5. 配置 Poetry(可选)设置虚拟环境位置配置镜像源 6…...
读写锁: ReentrantReadWriteLock
在多线程编程场景中,对共享资源的访问控制极为关键。传统的锁机制在同一时刻只允许一个线程访问共享资源,这在读写操作频繁的场景下,会因为读操作相互不影响数据一致性,而造成不必要的性能损耗。ReentrantReadWriteLock࿰…...
上海路网道路 水系铁路绿色住宅地工业用地面图层shp格式arcgis无偏移坐标2023年
标题和描述中提到的资源是关于2023年上海市地理信息数据的集合,主要包含道路、水系、铁路、绿色住宅区以及工业用地的图层数据,这些数据以Shapefile(shp)格式存储,并且是适用于ArcGIS软件的无偏移坐标系统。这个压缩包…...
爬虫学习笔记之Robots协议相关整理
定义 Robots协议也称作爬虫协议、机器人协议,全名为网络爬虫排除标准,用来告诉爬虫和搜索引擎哪些页面可以爬取、哪些不可以。它通常是一个叫做robots.txt的文本文件,一般放在网站的根目录下。 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): i ! j, abs(i - j) < indexDiff abs(nums[i] - nums[j]) < valueDiff 如果存在,返回 true &a…...
使用 Go 语言调用 DeepSeek API:完整指南
引言 DeepSeek 是一个强大的 AI 模型服务平台,本文将详细介绍如何使用 Go 语言调用 DeepSeek API,实现流式输出和对话功能。 Deepseek的api因为被功击已不能用,本文以 DeepSeek:https://cloud.siliconflow.cn/i/vnCCfVaQ 为例子进…...
基于MCP协议构建地方财政智能体:开源项目实践与开发指南
1. 项目概述:当MCP遇上地方财政,一个开源智能体的诞生最近在开源社区里,一个名为apifyforge/municipal-fiscal-intelligence-mcp的项目引起了我的注意。这个项目名听起来有点“学术”,但拆解开来,其实指向了一个非常具…...
AI代码智能体突破电话验证瓶颈:从环境模拟到混合架构的实战方案
1. 项目概述:当代码智能体遇上“电话验证墙”最近在折腾Claude这类AI代码助手做自动化任务时,我发现一个挺有意思的瓶颈:它们经常在需要电话验证(Phone Verification)的环节上“卡壳”。这可不是个小问题,想…...
法律条款时间逻辑的DSL与状态机实现:从概念到工程实践
1. 项目概述:当法律条款遇上时间逻辑最近在做一个挺有意思的项目,叫“Clause-Logic/exoclaw-temporal”。光看名字,可能有点摸不着头脑,但如果你接触过合同、协议或者任何带有法律效力的文书,并且尝试过用代码去处理它…...
企业级应用awesome-stock-resources:商业项目合规使用终极指南
企业级应用awesome-stock-resources:商业项目合规使用终极指南 【免费下载链接】awesome-stock-resources :city_sunrise: A collection of links for free stock photography, video and Illustration websites 项目地址: https://gitcode.com/gh_mirrors/aw/awe…...
TrollInstallerX终极指南:如何高效部署iOS越狱工具的专业解决方案
TrollInstallerX终极指南:如何高效部署iOS越狱工具的专业解决方案 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 在iOS 14.0到16.6.1系统上安装TrollStore一…...
技术生命周期管理:从恐龙化石到活化石的工程实践
1. 项目概述:一场跨越十年的技术怀旧竞赛2012年5月底,EE Times网站上的一则简短公告,宣告了一场名为“Pushing back the sands of time”的漫画配文竞赛结果揭晓。这场竞赛的核心,是一幅描绘了实验室场景的漫画,参赛者…...
别再只盯着屏蔽罩了!PCB布局与软件防抖,才是低成本搞定EMC(静电/辐射/脉冲群)的关键
低成本EMC设计实战:PCB布局与软件防抖的黄金法则 当谈到电磁兼容性(EMC)设计时,许多工程师的第一反应往往是增加屏蔽罩、使用昂贵的滤波器或购买高规格的元器件。这种思路虽然有效,但对于资源有限的初创团队和小型项目…...
CodeMaker完整指南:5分钟掌握IntelliJ IDEA智能代码生成插件
CodeMaker完整指南:5分钟掌握IntelliJ IDEA智能代码生成插件 【免费下载链接】CodeMaker A idea-plugin for Java/Scala, support custom code template. 项目地址: https://gitcode.com/gh_mirrors/co/CodeMaker 还在为Java和Scala项目中的重复编码工作而烦…...
ChromaControl终极指南:如何实现多品牌RGB设备统一灯光控制
ChromaControl终极指南:如何实现多品牌RGB设备统一灯光控制 【免费下载链接】ChromaControl 3rd party device lighting support for Razer Synapse. 项目地址: https://gitcode.com/gh_mirrors/ch/ChromaControl 你是否曾为不同品牌的RGB设备需要安装多个控…...
R3nzSkin英雄联盟皮肤修改器完整教程:免费体验全皮肤的终极指南
R3nzSkin英雄联盟皮肤修改器完整教程:免费体验全皮肤的终极指南 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin R3nzSkin是一款专为《英雄联盟》玩家设计的开源皮肤修改工具&a…...
