Redis类型之String

1.Redis中的string

        注意本文以及之后讲的redis的类型但是指的value的类型,所有的key都是string

        Redis中的字符串,直接就是按照二进制数据的方式存储的,不会做任何的编码转换,这里相对于mysql就比较好(个人感觉),因为mysql默认的字符集是拉丁文插入中文会失败。

        string不仅可以存储文本数据还可以存储整数、普通文本字符串、JSON、xml、二进制数据,这里值得一提的是redis对于string的类型限制了大小最大为512M,这是因为redis是单线程其希望进行的操作都比较快速。

2.String常用操作

2.1 SET

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

       redis文档给出的语法格式说明:[]相当于一个独立的单元,表示可选项(可有可无),|表示或者的意思,[]和[]之间可以同时存在

        对于第一个中括号其指的是设不设置过期时间,EX表示设置的时间单位是s而PX表示设置的时间的单位是ms。

        对于第二个括号中的NX表示如果key不存在才设置,如果key存在则不设置(返回nil),而XX表示key存在才设置(相当于更新key中的value),如果key不存在则返回nil        

2.2 失去年终奖小技巧

        清除redis上所有的数据的操作,这就等价于删库了(drop database)

FLUSHALL                  //轻易不要使用,不然废了,但是学习中可以随便用

2.3 GET

GET key   //这个命令还是比较简单的

·        对于GET来说,只是支持字符串类型的value,如果value是其他类型,使用GET获取就会报错,下面我对list类型的value使用get就出现了报错

2.4 MGET 以及 MSET

MGET key [key ...]
MSET key value [key value ...]

        对比于上面的set和get其实mset和mget的区别在于一次操作多组键值对。

        对于多组key和value其实mset和mget是高效的,这是因为我们的这些命令其实是需要通过网络来发送给redis的服务端的,那么相对于多次发送的set和get显然是一次发送多组数据的mset和mget更高效

        

        但是一次设置太多的数据依旧可能会导致redis阻塞。

2.5 String中存储的是数字时可以使用的操作

2.5.1 value是整数

        incr:针对value+1

        incrby:针对value+n

        decr:针对value-1

        decrby:针对value-n

        这四个操作的返回值都是相应操作后的值,值得一提的是上面的操作如果key不存在会将key视为0创建并进行操作。

        其实incrby也可以用来实现减法,这就好比加上一个负数。同样的decrby也可以用来实现加法

2.5.2 value是浮点数

        incrbyfloat:把key对应的value进行+-运算,运算的操作数可以是浮点数,但是并没有提供decrbyfloat这样的命令,就只能同加上负数来实现减法

        这里猜测为什么没有提供减法版本,可能是因为使用redis进行的计数操作一般都是针对整数进行的。

        这里因为是多个客户端对接一个服务端那么上面的这些对数字操作的命令会不会存在线程安全的问题呢?就比如在c++中我们起了两个线程对同一个变量都进行++10000次但是结果并不是20000一般结果都是比20000小的。但是其实是没有问题的这是因为redis是一个单线程。

2.6 字符串操作

2.6.1 获取字符串的长度

APPEND KEY VALUE

        append返回值的长度单位是字节,这是因为redis的字符串并不会对字符编码做任何处理,换而言之就是redis只认识字节不认识字符。

        append可以用来设置key,如果key已经存在那么append会将value追加到key原来的value中

2.6.2 从某个位置开始替换字符串

SETRANGE key offset value

        offset表示从哪个位置开始,value表示替换的字符串。

2.6.3 截取字符串

GETRANDGE key start end

        这个区间是左闭右闭的,这里确实需要注意,因为C++中的区间是左闭右开的,并且这里的下标是支持负数的对应关系如下,简单来说负数就是len-1位置处的元素

3.string内部的三种编码格式

        int:64位/8字节的整数

        embstr:压缩字符串。适用于比较短的字符串

        raw:普通字符串。适用于表示更长的字符串。

object encoding  可以查看value的编码格式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91932.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[激光原理与应用-156]:光学器件 - 激光器为什么会出现多余的能量,哪些地方会出现多余能量?

在激光器运行过程中,多余能量的出现是不可避免的物理现象,其根源在于能量转换与传输过程中的非理想特性。以下从能量来源、产生位置及具体机制三方面进行详细说明:一、多余能量的主要来源泵浦源效率限制泵浦源(如激光二极管、闪光…

Arxiv-Daily

Daily Paper Report - 2025-07-24 12:53 Today’s Recommended Papers 1. Multi-modal Multi-task Pre-training for Improved Point Cloud Understanding Authors: Liwen Liu, Weidong Yang, Lipeng Ma, Ben Fei Deep-Dive Summary: 多模态多任务预训练以改善点云理解 预…

如何对云环境或者超融合系统进行性能测试?

最近几个月,公司开启了新的产品计划,准备来做一个国产超融合一体机(其实个人觉得现在入行已经晚了太多了,市场基本没有多少了) POC功能测试过完,但是感觉不到什么优势,由于芯片架构采用的是arm架…

【web自动化测试】实战

web自动化测试就是对界面的测试1、编写测试用例2、参考测试用例,创建自动化测试项目,编写自动化测试脚本论坛登录页:ForumLoginTest.py论坛首页:ForumListTest.py论坛详情页:ForumDetailTest.py论坛编辑页:…

在Maxscript中随机化对象变换、颜色和材质

只需几行Maxscript,即可为3ds Max场景带来更多活力和变化! 在本文中,您将学习如何快速随机化选定对象的位置、旋转、线颜色和材质。 非常适合在ArchViz、动态图形和产品可视化项目中创建更自然、更少机械的布局。 为什么要使用随机化脚本? 1.快速为场景添加自然随机性 2.…

分类数据集 - 交通事故场景分类数据集下载

数据集介绍:交通事故场景分类数据集,真实交通场景高质量图片数据;适用实际项目应用:公共场所监控场景下是否发生交通事故检测项目,以及作为监控场景通用交通检测数据集场景数据的补充;数据集类别&#xff1…

内网公网详解,及无公网IP内网穿透给外网直接远程连接访问的具体实现方法步骤

一、什么是内网、外网1、内网IP(局域网IP)是指在私有网络或局域网内部使用的IP地址,无法直接从互联网访问,需通过NAT(网络地址转换)技术实现对外通信。内网IP(Intranet IP)是专为局域…

Redis协议数据迁移方式

主从复制(REPLICAOF/SLAVEOF):目标实例挂为从节点,通过复制协议全量增量同步后切换为主。模拟从节点工具:模拟复制协议同步数据,常见两种实现:(1) 拉取全量和增量命令流,在本地生成 …

英语中日期与时间缩写

日常使用中,时间缩写无处不在。掌握这些缩写不仅能提高沟通效率,还能让您的英语表达更加地道和专业。本文将系统性地介绍英语中各类时间相关缩写,包括月份、星期、时刻表达等,并提供实用记忆技巧和应用场景。 一、时间缩写基础概…

【Spring Cloud】-- RestTeplate实现远程调用

实现远程调用有很多种方式,这里我们使用RestTemplate来进行实现。 REST :表现层资源状态转移(资源在网络中以某种表现形式进行状态转移),是一种软件架构风格,状态转移:数据状态的变化。 表现层&…

2025年信创政策解读:如何应对国产化替代挑战?(附禅道/飞书多维表格/华为云DevCloud实战指南)

本文核心产品:​​禅道(国产项目管理工具)、飞书多维表格(协同办公工具)、华为云DevCloud(云端研发平台)​​ ——在“自主可控”成为国家战略关键词的2025年,国产化替代已从“可选动…

如何让 RAG 检索更高效?——大模型召回策略全解

如何让 RAG 检索更高效?——大模型召回策略全解 一、引子:RAG 的“强”靠得住吗? RAG(Retrieval-Augmented Generation)作为一种将文档检索与大语言模型结合的框架,已成为企业落地知识问答、搜索增强、智能…

Bilateral Reference for High-Resolution Dichotomous Image Segmentation

代码来源 https://github.com/ZhengPeng7/BiRefNet 模块作用 DIS 是一种旨在对高分辨率图像中的目标物体进行精确分割的技术,尤其适用于具有复杂细微结构的物体,例如细长的边缘或微小细节。传统方法在处理这类任务时往往难以捕捉细微特征或恢复高分辨…

RAGFlow 0.20.0 : Multi-Agent Deep Research

Deep Research:Agent 时代的核心能力2025 年被称为 Agent 落地元年,在解锁的各类场景中,最有代表性之一,就是 Deep Research 或者以它为基座的各类应用。为什么这么讲? 因为通过 Agentic RAG 及其配套的反思机制&#…

CMakeLists.txt学习

一:#是行注释 ,[[ 块注释 ]]0.cmake_minimum_required: 指定使用的cmake的最低版本1.project() 定义工程名称并可以指定工程的版本,工程描述,web主页地址,支持的语言(默认情况支持所有语言)2.…

Pytorch-04 搭建神经网络架构工作流

搭建神经网络架构 在pytorch中,神经网络被抽象成由一系列对数据执行特定操作的层或者模块组成,比如下面的Attention实现,每个块都是一个模块或者层。 如果你想快速搭建网络架构,torch.nn这个命名空间提供了所有很多开箱即用的层…

从“碎片化”到“完美重组”:IP报文的分片艺术

前言 在网络通信中,当IP层需要传输的数据包大小超过数据链路层的MTU限制时,就必须进行分片处理。本文将完整解析IP分片的工作机制,包括分片字段的作用、如何减少分片,以及分片报文的组装原理。 IP报头解析请参考&#xff…

[GESP202306 四级] 2023年6月GESP C++四级上机题超详细题解,附带讲解视频!

本文为2023年6月GESP C四级的上机题目的详细题解!觉得写的不错或者有帮助可以点个赞啦! (第一次讲解视频,有问题可以指出,不足之处也可以指出) 目录 题目一讲解视频: 题目二讲解视频: 题目一: 幸运数 题目大意: …

内网穿透 FRP 配置指南

关键词:内网穿透、FRP配置、frps、frpc、远程访问、自建服务器、反向代理、TCP转发、HTTP转发 在开发或部署项目时,我们经常遇到内网设备无法被公网访问的问题,例如你想从外网访问你家里的 NAS、远程调试开发板,或是访问本地测试环…

SpringBoot 信用卡检测、OpenAI gym、OCR结合、DICOM图形处理、知识图谱、农业害虫识别实战

信用卡欺诈检测通常使用公开数据集 数据准备与预处理 信用卡欺诈检测通常使用公开数据集如Kaggle的信用卡交易数据集。数据预处理包括处理缺失值、标准化数值特征、处理类别特征。在Spring Boot中,可以使用pandas或sklearn进行数据预处理。 // 示例:使用Spring Boot读取CS…