首页 > 数据库 >Redis系列命令更新--Redis字符串命令

Redis系列命令更新--Redis字符串命令

时间:2024-07-19 16:29:49浏览次数:13  
标签:0.1 127.0 6379 -- Redis redis 命令 key

1、Redis SET命令

 

(1)说明:用于设置给定key的值;如果key已经存储其他值,SET就覆写旧值,且无视类型;

(2)语法:redis 127.0.0.1:6379> SET KEY_NAME VALUE

(3)实例:

# 对不存在的键进行设置

redis 127.0.0.1:6379> SET key "value"

OK

redis 127.0.0.1:6379> GET key"value"

# 对已存在的键进行设置

redis 127.0.0.1:6379> SET key "new-value"

OK

redis 127.0.0.1:6379> GET key"new-value"

 

2、Redis Get命令:

(1)说明:用于获取指定key的值;如果key不存在,返回nil;如果key储存的值不是字符串类型,返回一个错误;

(2)语法:redis 127.0.0.1:6379> GET KEY_NAME;返回key的值,如果key不存在时,返回nil;如果key不是字符串类型,那么返回一个错误

(3)实例:

# 对不存在的 key 或字符串类型 key 进行 GET

redis> GET db(nil)

redis> SET db redis

OK

redis> GET db"redis"

# 对不是字符串类型的 key 进行 GET

redis> DEL db(integer) 1

redis> LPUSH db redis mongodb mysql(integer) 3

redis> GET db(error) ERR Operation against a key holding the wrong kind of value

 

3、Redis Getrange命令

(1)说明:Redis Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。

(2)语法:redis 127.0.0.1:6379> GETRANGE KEY_NAME start end;截取得到的子字符串;

(3)实例:首先,设置 mykey 的值并截取字符串。

redis 127.0.0.1:6379> SET mykey "This is my test key"

OK

redis 127.0.0.1:6379> GETRANGE mykey 0 3"This"

redis 127.0.0.1:6379> GETRANGE mykey 0 -1"This is my test key"

 

4、Redis Getset命令

(1)说明:Redis Getset命令用于设置指定key的值,并返回key的旧值

(2)语法:redis 127.0.0.1:6379> GETSET KEY_NAME VALUE;返回给定key的旧值;当key没有旧值时,即key不存在时,返回nil;

(3)实例:

redis> GETSET db mongodb    # 没有旧值,返回 nil(nil)

redis> GET db"mongodb"

redis> GETSET db redis      # 返回旧值 mongodb"mongodb"

redis> GET db"redis"

 

5、Redis Getbit命令:

(1)说明:Redis Getbit命令用于对key所储存的字符串值,获取指定偏移量上的位(bit)

(2)语法:redis 127.0.0.1:6379> GETBIT KEY_NAME OFFSET;返回字符串值指定偏移量上的位;当偏移量OFFSET比字符串值的长度大,或者key不存在时,返回0

(3)实例:

# 对不存在的 key 或者不存在的 offset 进行 GETBIT, 返回 0

redis> EXISTS bit(integer) 0

redis> GETBIT bit 10086(integer) 0

# 对已存在的 offset 进行 GETBIT

redis> SETBIT bit 10086 1(integer) 0

redis> GETBIT bit 10086(integer) 1

 

6、Redis Mget命令

(1)说明:Redis Mget命令返回所有(一个或多个)给定key的值;如果给定的key里面,有某个key不存在,那么这个key返回特殊值nil

(2)语法:redis 127.0.0.1:6379> MGET KEY1 KEY2 .. KEYN;返回一个包含所有给定key值的列表

(3)实例:

redis 127.0.0.1:6379> SET key1 "hello"

OK

redis 127.0.0.1:6379> SET key2 "world"

OK

redis 127.0.0.1:6379> MGET key1 key2 someOtherKey1) "Hello"2) "World"3) (nil)

7、Redis Setbit命令

(1)说明:用于对key所存储的字符串值,设置或清除指定偏移量上的位(bit);

(2)语法:redis 127.0.0.1:6379> Setbit KEY_NAME OFFSET;返回指定偏移量原来储存的位

(3)实例:

redis> SETBIT bit 10086 1(integer) 0

redis> GETBIT bit 10086(integer) 1

redis> GETBIT bit 100   # bit 默认被初始化为 0(integer) 0

 

8、Reids Setex命令

(1)说明:Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

(2)语法:redis 127.0.0.1:6379> SETEX KEY_NAME TIMEOUT VALUE;设置成功时返回OK

(3)实例:

 

 

69672963d2de716573afabc6b090f3c6.png

 

redis 127.0.0.1:6379> SETEX mykey 60 redis

OK

redis 127.0.0.1:6379> TTL mykey60

redis 127.0.0.1:6379> GET mykey"redis

实际执行情况:

 

 

9、Redis Setnx命令:

(1)说明:Redis Setnx(SET if Not eXists)命令在指定的key不存在时,为key设置指定的值;

(2)语法:redis 127.0.0.1:6379> SETNX KEY_NAME VALUE;设置成功,返回1;设置失败,返回0

(3)实例:

redis> EXISTS job                # job 不存在(integer) 0

redis> SETNX job "programmer"    # job 设置成功(integer) 1

redis> SETNX job "code-farmer"   # 尝试覆盖 job ,失败(integer) 0

redis> GET job                   # 没有被覆盖"programmer"

 

10、Redis Setrange命令

(1)说明:Redis Setrange命令用指定的字符串覆盖给定key所储存的字符串值,覆盖的位置从偏移量offset开始

(2)语法:redis 127.0.0.1:6379> SETRANGE KEY_NAME OFFSET VALUE;返回被修改后的字符串长度

(3)实例:

redis 127.0.0.1:6379> SET key1 "Hello World"

OK

redis 127.0.0.1:6379> SETRANGE key1 6 "Redis"(integer) 11

redis 127.0.0.1:6379> GET key1"Hello Redis"

 

11、Redis Strlen 命令

(1)说明:Redis Strlen 命令用于获取指定key所储存的字符串值的长度;当key储存的不是字符串值时,返回一个错误;

(2)语法:redis 127.0.0.1:6379> STRLEN KEY_NAME;返回字符串值的长度;当key不存在时,返回0

(3)实例:

# 获取字符串的长度

redis> SET mykey "Hello world"

OK

redis> STRLEN mykey(integer) 11

# 不存在的 key 长度为 0

redis> STRLEN nonexisting(integer) 0

 

12、Redis Mset命令

(1)说明:Redis Mset命令同时设置一个或多个key-value对

(2)语法:redis 127.0.0.1:6379> MSET key1 value1 key2 value2 .. keyN valueN ;总是返回OK

(3)实例:

redis 127.0.0.1:6379> MSET key1 "Hello" key2 "World"

OK

redis 127.0.0.1:6379> GET key1"Hello"

redis 127.0.0.1:6379> GET key21) "World"

 

13、Redis Msetnx命令

(1)说明:Redis Msetnx命令用于所有给定key都不存在时,同时设置一个或多个key-value对

(2)语法:redis 127.0.0.1:6379> MSETNX key1 value1 key2 value2 .. keyN valueN ;当所有key都成功设置,返回1,;如果所有给定key都设置失败(至少有一个key已经存在),那么返回0;

(3)实例:

# 对不存在的 key 进行 MSETNX

 

redis> MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis"(integer) 1

redis> MGET rmdbs nosql key-value-store1) "MySQL"2) "MongoDB"3) "redis"

# MSET 的给定 key 当中有已存在的 key

redis> MSETNX rmdbs "Sqlite" language "python"  # rmdbs 键已经存在,操作失败(integer) 0

redis> EXISTS language                          # 因为 MSET 是原子性操作,language 没有被设置(integer) 0

redis> GET rmdbs                                # rmdbs 也没有被修改"MySQL"

 

14、Redis Psetex命令

(1)说明:Redis Psetex命令以毫秒为单位设置key的生存时间

(2)语法:redis 127.0.0.1:6379> PSETEX key1 EXPIRY_IN_MILLISECONDS value1 ;设置成功时返回OK

(3)实例:

redis 127.0.0.1:6379> PSETEX mykey 1000 "Hello"

OK

redis 127.0.0.1:6379> PTTL mykey999

redis 127.0.0.1:6379> GET mykey1) "Hello"

 

15、Redis Incr命令

(1)说明:Redis Incr命令将key中储存的数字之增一;如果key不存在,那么key的值会先被初始化为0,然后再执行INCR操作;如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误;本操作的值限制在64位(bit)有符号数字表示之内

(2)语法redis 127.0.0.1:6379> INCR KEY_NAME ;返回执行INCR命令之后key的值

(3)实例:

redis> SET page_view 20

OK

redis> INCR page_view(integer) 21

redis> GET page_view    # 数字值在 Redis 中以字符串的形式保存"21"

 

16、Redis Incrby命令

(1)说明:Redis Incrby命令将key中储存的数字加上指定的增量值;如果key不存在,那么key的值会被初始化为0,然后再执行INCRBY命令;如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误

(2)语法:redis 127.0.0.1:6379> INCRBY KEY_NAME INCR_AMOUNT;返回加上指定的增量值之后,key的值

(3)实例:

# key 存在且是数字值

redis> SET rank 50

OK

redis> INCRBY rank 20(integer) 70

redis> GET rank"70"

# key 不存在时

redis> EXISTS counter(integer) 0

redis> INCRBY counter 30(integer) 30

redis> GET counter"30"

# key 不是数字值时

redis> SET book "long long ago..."

OK

redis> INCRBY book 200(error) ERR value is not an integer or out of range

 

 

17、Redis Incrbyfloat命令

(1)说明:Redis Incrbyfloat命令为key中所储存的值加上指定的浮点数增量值;如果key不存在,那么INCRBYFLOAT会先将key的值设为0,再执行加法操作;

(2)语法:redis 127.0.0.1:6379> INCRBYFLOAT KEY_NAME INCR_AMOUNT;返回执行命令之后key的值

(3)实例:

# 值和增量都不是指数符号

redis> SET mykey 10.50

OK

redis> INCRBYFLOAT mykey 0.1"10.6"

# 值和增量都是指数符号

redis> SET mykey 314e-2

OK

redis> GET mykey                # 用 SET 设置的值可以是指数符号"314e-2"

redis> INCRBYFLOAT mykey 0      # 但执行 INCRBYFLOAT 之后格式会被改成非指数符号"3.14"

# 可以对整数类型执行

redis> SET mykey 3

OK

redis> INCRBYFLOAT mykey 1.1"4.1"

# 后跟的 0 会被移除

redis> SET mykey 3.0

OK

redis> GET mykey                                    # SET 设置的值小数部分可以是 0"3.0"

redis> INCRBYFLOAT mykey 1.000000000000000000000    # 但 INCRBYFLOAT 会将无用的 0 忽略掉,有需要的话,将浮点变为整数"4"

redis> GET mykey"4"

 

18、Redis Decr命令

(1)说明:Redis Decr命令将key中储存的数字值减1;如果key不存在,那么key的值会先被初始化为0,然后再执行DECR操作;如果值包含错误的类型,或字符串的值不能表示为数字,那么返回一个错误;本操作的值限制在64位(bit)有符号数字表示之内;

(2)语法:redis 127.0.0.1:6379> DECR KEY_NAME

(3)实例:

# 对存在的数字值 key 进行 DECR

 

redis> SET failure_times 10

OK

 

redis> DECR failure_times(integer) 9

 

# 对不存在的 key 值进行 DECR

 

redis> EXISTS count(integer) 0

 

redis> DECR count(integer) -1

 

# 对存在但不是数值的 key 进行 DECR

 

redis> SET company YOUR_CODE_SUCKS.LLC

OK

 

redis> DECR company(error) ERR value is not an integer or out of range

 

19、Redis Decrby命令

(1)说明:Redis Decrby命令将key所储存的值减去指定的减量值;如果key不存在,那么key的值会先被初始化为0,然后再执行DECRBY操作;如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误;本操作的值限制在64位(bit)有符号数字表示之内

(2)语法:redis 127.0.0.1:6379> DECRBY KEY_NAME DECREMENT_AMOUNT;返回减去指定减量值后,key的值

(3)实例:

# 对已存在的 key 进行 DECRBY

redis> SET count 100

OK

redis> DECRBY count 20(integer) 80

# 对不存在的 key 进行DECRBY

redis> EXISTS pages(integer) 0

redis> DECRBY pages 10(integer) -10

 

20、Redis Append命令

(1)说明:Redis Append命令用于指定的key追加值;如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值的末尾;如果key不存在,APPEND就简单地将给定key设置为value,就像执行SET key value一样

(2)语法:redis 127.0.0.1:6379> APPEND KEY_NAME NEW_VALUE;返回追加指定值之后,key中字符串的长度;

(3)实例:

# 对不存在的 key 执行 APPEND

redis> EXISTS myphone               # 确保 myphone 不存在(integer) 0

redis> APPEND myphone "nokia"       # 对不存在的 key 进行 APPEND ,等同于 SET myphone "nokia"(integer) 5                         # 字符长度

# 对已存在的字符串进行 APPEND

redis> APPEND myphone " - 1110"     # 长度从 5 个字符增加到 12 个字符(integer) 12

redis> GET myphone"nokia - 1110"

 

标签:0.1,127.0,6379,--,Redis,redis,命令,key
From: https://blog.csdn.net/leavesym/article/details/140260054

相关文章

  • Git分支管理基本原理
    原文全文详见个人博客:Git分支管理基本原理上文已讨论过svn分支管理的基本原理,本文将继续探讨Git分支管理的基本原理,以便后续进行进一步的理解和对比:https://www.coderli.com/git-branch-method/【Java学习交流(982860385)】加入群聊,大佬免费带飞:【Java学习交流(982860385)】......
  • 查看电脑内核及线程数量
    1.第一种方法:进入电脑:win+r进入命令提示符号界面输入:wmic进入命令行界面1.1cpugetNumberOfCores内核数量1.2cpugetnumberoflogicalProcessors线程数量1.3查看电脑处理器发现是20核,比14核多了6核心,是因为超线程技术的原因;超线程技术把多线程处理器内部的两......
  • KU FPGA FLASH boot失败debug
    原因新板子回来后,测试flash烧录正常,但是无法BOOT,此时SPI设置为X4模式,使用内部时钟,速度90M。烧录过程不报错,校验也正常。FLASH理论支持最大速度108M,90M应该还好。另外板卡预留了EMCCLK外部时钟模式,速率100M也不可行。此时约束如下:set_propertyCONFIG_VOLTAGE3.3[curre......
  • qt 创建一个可以拖拽的矩形,简单实践
    1.概要需求,一个可以拖拽的矩形,鼠标接近边线点击变成可拖拽形状。2.代码#include<QApplication>#include<QGraphicsView>#include<QGraphicsScene>#include<QGraphicsRectItem>#include<QMouseEvent>#include<QGraphicsSceneMouseEvent>#include<QLa......
  • JAVA基础知识
    注释单行注释//多行注释/**/文档注释(JavaDoc)/**标识符和关键字关键字标识符以字母、$、_开始区分大小写可以中文或拼音(不建议)数据类型强类型语言与弱类型语言Java:强类型变量需要先定义再使用(安全性高速度慢)基本数据类型与引用数据类型基......
  • 【2024】SpringBoot+Vue.js协同过滤算法美食推荐小程序
     博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大......
  • RMI反序列化-流程分析
    参考教程视频Java反序列化RMI专题-没有人比我更懂RMI参考博客RMI反序列化初探JAVA安全基础(四)--RMI机制-先知社区(aliyun.com)RMI反序列化漏洞之三顾茅庐-流程分析RMI应用概述参考RMI应用概述RMIClient首先去rmiregistry注册中心查找,RMIServer开启的端口。之后......
  • 介绍下项目的架构
    一、面试官考察点面试官想考察面试者对项目的理解程度,不是简单的点点点,对系统有一定的理解,如果不理解架构,不清楚系统之间的交互,会遗漏一些测试点,比如两个模块之间是通过MQ交互的,那就要考虑到MQ的弊端,生产者和消费者之间的数据不一致的问题,这个时候有没有xxljob的补偿机制等等......
  • 从慢到快:如何用JDK 21虚拟线程重塑性能极限
    JDK21引入了虚拟线程(VirtualThreads),这是Java语言和虚拟机中的一个重要新特性。虚拟线程的目的是简化并发编程,使得处理大量并发任务变得更加高效和易于管理。以下是虚拟线程的概念、优势和劣势,以及相关的示例说明。虚拟线程概念虚拟线程是一种轻量级的线程,设计用来简......
  • TransReID模型运行
    模型源码可通过下方链接进行下载,相应的数据集也可以通过下方链接找到并下载。https://github.com/damo-cv/TransReID?tab=readme-ov-file1.环境配置pipinstall-rrequirements.txt通过以上指令安装好所需要的包。2.预训练模型下载在源码下载页面,找到图片所示位置进行......