零基础学习Redis(6) -- string类型命令使用

news2024/9/20 8:40:46

redis中,不同的数据结构有不同的操作命令。

redis中的string是按照二进制存储的,不会对数据做任何编码转换。

1. set / get 命令

为了方便使用,redis提供了多个版本的get / set命令来操作字符串

1. set

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

使用set时可以同时设置过期时间,EX以秒为单位,PX以毫秒为单位:

 [NX | XX]:

NX:如果key不存在,该语句才执行成功,否则返回nil

XX:如果key存在,该语句才执行成功,否则返回nil

2. get

get key

返回对应key的value,只有value是字符串类型才能成功

3. mset 

一次设置多个key

mset key1 value1 key2 value2 ...

4. mget

一次获取多个value,同样只能获取字符串类型

mget key1 key2 key3 ... 

5. setnx

相当于 set key value nx,只有key不存在才会设置成功,否则返回0

setnx key value

6. setex

相当于 set key value ex seconds,设置key的同时设置过期时间,单位是秒

setex key seconds value

7. psetex 

相当于 set key value ex milliseconds,设置key的同时设置过期时间,单位是豪秒

2. 数值操作命令 

前面我们说过,redis中的字符串存整数的时候是int类型编码,所以redis还提供了一些操作数值的命令

1. incr / incrby

incr key

对指定key的value + 1并返回+1后的值只有value是int编码时才生效:

decrby key n

对指定key的value + n并返回+n后的值只有value是int编码时才生效,n 可以为负数:

2. decr / decrby

decr key

对指定key的value - 1并返回-1后的值只有value是int编码时才生效:

decrby key n

对指定key的value - n并返回-n后的值只有value是int编码时才生效,n 可以为负数: 

3. incrbyfloat 

incrbyfloat key n

对指定key的value - n并返回-n后的值只有value是整数或小数时才生效,n 可以为小数/负数: 

注意:对于上面的5个命令,如果对应的key不存在会先创建一个value为0的key再执行操作

3. 字符串操作命令

1. append

append key value

给对应key的值拼接上一个字符串value,拼接成功返回拼接后的字符串字节数,只有string类型才能使用:

如果key不存在则相当于set命令 

2. getrange

getrange key start end

获取key对应value的[start,end]区间的字符串:

注意这里是闭区间

这里的start 和 end可以为负数,-1 相当于字符串的最后一个字符位置,-2相当于倒数第二个位置

特殊情况:

如果存的是中文,这里我使用的xshell是utf8编码,存中文时,会存入对应的utf8编码的二进制,由于utf8编码的每个汉字用3个字节表示,而getrange命令的下标单位是字节,所以使用getrange就存在从某个汉字中间开始获取/结尾字符串的情况:

这里如果想让redis显示解析后的字符可以在启动redis客户端的时候使用:

redis-cli --raw

3. setrange

setrange key offset value 

从指定下标开始替换字符串,返回替换后的长度

如果offerset超过了key中长度,会把之间的字节值填为0:

offerset也可以对不存在的key操作,在操作之前会创建一个value为空字符串的key:

4. strlen

strlen key 

获取字符串的长度,单位是字节:

4. 应用场景

1. 缓存

作为缓存存储热点数据,常见的实现方式是把最近被访问的数据当作热点数据存到redis中,即当一个数据被访问,而这个数据又没在redis中,就把这个数据同时缓存到redis中,但是这样可能导致redis中数据越来越多,导致装不下,于是可以在把数据写给redis时设置一个过期时间。

2. 计数器

例如记录一个视频的点赞数,每有一个点赞就使用incr命名让点赞数+1,定期把点赞数同步到数据库即可,避免频繁操作硬盘。

3. 存储会话信息

分布式架构中可以用来存储会话信息,使多个服务器共享会话信息

4. 验证码

通常来说,验证码会有一个有效时间,这个时间就可以通过设置key的过期时间来完成,同时还可以在用户获取验证码时设置一个标记key,这个key存在时用户不能再次获取验证码,也就是限制获取验证码的时间间隔,防止恶意攻击。

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

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

相关文章

NVIDIA将在Hot Chips 2024会议上展示Blackwell服务器装置

NVIDIA 将在 Hot Chips 2024 上展示其 Blackwell 技术堆栈,并在本周末和下周的主要活动中进行会前演示。对于 NVIDIA 发烧友来说,这是一个激动人心的时刻,他们将深入了解NVIDIA的一些最新技术。然而,Blackwell GPU 的潜在延迟可能…

iptables: Chain Already Exists:完美解决方法

iptables: Chain Already Exists:完美解决方法 🔥 iptables: Chain Already Exists:完美解决方法 🔥摘要引言正文内容 📚什么是 Chain already exists 错误? 🤔常见原因及解决方法 &#x1f52…

排序算法刷题【leetcode88题目:合并两个有序数组、leetcode21:合并两个有序链表】

一、合并两个有序数组 题目比较简单&#xff0c;使用归并排序里面的同样的操作就可以&#xff0c;代码如下所示 #include <iostream> #include <vector> using namespace std;/* leetcode88题&#xff1a;合并两个有序数组 */ class Solution { public:void merge…

九、前端中的异步方法Promise,Promise详解

文章目录 1.Promise简介什么是promise为什么使用Promisepromise中的状态 2.Promis的用法 1.Promise简介 什么是promise Promise是异步编程的一种解决方案&#xff0c;它的构造函数是同步执行的&#xff0c;then 方法是异步执行的。 为什么使用Promise 在JavaScript的世界中…

入门Java编程的知识点—>数组(day05)

重点掌握数组是什么&#xff1f;为什么要使用&#xff1f;如何进行数组的定义&#xff1f; 数组 数组是用来存储同一类型多个元素的存储结构,数组是引用数据类型. 存储同一类型的多个元素如何理解? 生活中: 衣柜→可以存储多个衣服 | 鞋柜→可以存储多个鞋子 | 橱柜→可以存储…

嵌入式Qt移植之tslib部署到Busybox根文件-思维导图-学习笔记-基于正点原子阿尔法开发板

嵌入式Qt移植之tslib部署到Busybox根文件 烧写Busybox根文件系统到开发板 准备好一个固化系统 以TF卡为例子 TF 卡用读卡器插到 Ubuntu 虚拟机 会出现两个分区 boot分区是存放内核和设备树这些 rootfs分区是存放文件系统的 eMMC、NADA FLASH或者其他方式挂载也可&#xf…

windows删除不了的一些长名字文件,为什么python可以删除?

感谢阅读 windows报错截图windows最大文件路径长度限制为什么基于windows系统运行的python可以完成删除文件名259字符的文件&#xff1f;文件系统的存储方式操作系统和文件系统的关系总结 windows报错截图 windows最大文件路径长度限制 但真的是260字符吗&#xff1f;早期windo…

系统分析师4:数据库系统

文章目录 1 数据库体系结构1.1 三级模式和两级映像1.2 分布式数据库1.2.1 分布式数据库概述1.2.2 分布式数据库特点1.2.3 透明性分类 2 数据库设计2.1 数据库设计概述2.2 概念结构设计2.3 逻辑结构设计 3 关系代数3.1 关系代数介绍3.2 典型例题 4 规范化理论4.1 规范化理论基础…

《黑神话·悟空》背后的神秘力量——揭秘游戏服务器架构

✌ 作者名字&#xff1a;高峰君主 &#x1f482; 作者个人网站&#xff1a;高峰君主 - 一个数码科技爱好者 &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f4ac; 人生格言&#xff1a;没有…

“智汇论坛“——基于 Spring 前后端分离版本的论坛系统

一.项目背景 1.项目简介 智汇论坛是一个集高科技与高效交流于一体的在线社区平台&#xff0c;旨在为用户提供一个便捷、智能的讨论空间。通过集成先进的服务器端技术和丰富的浏览器端技术&#xff0c;智汇论坛不仅支持用户之间的实时互动与信息共享&#xff0c;还确保了平台的…

火语言RPA流程组件介绍--提取应用内嵌资源

&#x1f6a9;【组件功能】&#xff1a;提取应用内嵌的文件、图片及文本等资源 配置预览 配置说明 提取类型 文件|图片|文本 选择资源 选择内嵌资源中的文件或者文本图片 提取成 路径|文本|二进制内容 输入输出 输入类型 万能对象类型(System.Object)输出类型 字符串…

电脑U口管理软件分享|U口管理软件哪个好?

电脑U口&#xff08;即USB端口&#xff09;管理软件是保护电脑安全、防止数据泄露和恶意软件入侵的重要工具。 在选择U口管理软件时&#xff0c;需要考虑其功能、易用性、安全性以及是否满足个人或企业的具体需求。以下是一些值得推荐的电脑U口管理软件及其特点&#xff1a; 1…

Ptrade获取热门板块,连板股票 python代码

之前有人咨询&#xff0c;ptrade如何获取不同的概念板块个股。其实很容易&#xff0c;本身有获取板块信息的API函数&#xff1a; get_sort_msg – 获取板块、行业的涨幅排名 get_sort_msg(sort_type_grpNone, sort_field_nameNone, sort_type1, data_count100) 接口说明 该接…

cola_os学习笔记(上)

cola_os的学习笔记 声明 该项目系本人学习项目所做的笔记。该项目的项目地址为cola_os: 300行代码实现多任务管理的OS&#xff0c;在很多MCU开发中&#xff0c;功能很简单&#xff0c;实时性要求不强&#xff0c;如果使用RTOS显得太浪费&#xff0c;任务多了管理不当又很乱&a…

《行进中国大运河篇》圆满收官 郭品超讲述运河精神展文化自信

昨日&#xff0c;山东卫视大型文化探访综艺节目《行进中国大运河篇》圆满收官。节目中&#xff0c;演员郭品超携手行进团成员张晓谦和俞庚寅&#xff0c;一同从杭州出发&#xff0c;沿着京杭大运河一路向北&#xff0c;途径江苏、山东&#xff0c;河南、河北、天津等多个省市&a…

什么是主机监控审计系统?三款热门计算机监控审计系统推荐!

主机监控审计系统是保障企业IT基础设施安全的重要工具&#xff0c;通过实时监控、记录和分析主机上的活动&#xff0c;有效检测并预防潜在的安全威胁。 本文将首先简述主机监控审计系统的基本概念&#xff0c;并推荐三款热门的计算机监控审计系统&#xff0c;其中特别介绍安企…

歌曲分享平台|基于SprinBoot+vue的原创歌曲分享平台系统(源码+数据库+文档)

原创歌曲分享平台 目录 基于SprinBootvue的原创歌曲分享平台 一、前言 二、系统设计 三、系统功能设计 5.1平台功能模块 5.2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码…

ChatGPT协助论文写作各阶段指令示例

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在学术论文写作过程中&#xff0c;我们经常面临选题、文献综述、研究设计、数据分析、写作润色等多方面的挑战。人工智能技术的发展为这些挑战提供了新的解决方案。ChatGPT作为一款强大…

Qt:玩转QPainter序列三

前言 接着序列三&#xff0c;图像的合成模式。 图像的合成模式(CompositionMode)是在讲述当多个图像重叠时重叠部分该如何显示的问题。 正文 先看合成模式的定义&#xff0c;下面是分析。 1. enum CompositionMode 这个枚举类型CompositionMode定义了多种图像合成模式。图…

AI作曲工具真的这么神奇?新手也能出音乐!

AI音乐创作工具不仅让专业音乐人有了更多灵感来源&#xff0c;也让普通人能够轻松实现自己的音乐梦想。本文将带你了解如何使用这些工具创作出属于自己的音乐作品。 选择适合的AI音乐创作工具 首先&#xff0c;你需要找到一个适合自己的AI音乐创作平台。市场上有许多选择&…