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

一文打通redis中的String类型

目录

基本介绍

基本语法

常用命令解读

概述 

SETNX key value 

SETNX key value

GETRANGE key start end

GETSET key value

GETBIT key offset

MGET key1 [key2..]

STRLEN key


基本介绍

①String是Redis最基本的类型,一个key对应一个value。

②String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象

③String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M

String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList

基本语法

Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下:

语法

redis 127.0.0.1:6379> COMMAND KEY_NAME

实例

redis 127.0.0.1:6379> SET w3ckey redis
OK
redis 127.0.0.1:6379> GET w3ckey
"redis"

在以上实例中我们使用了 SET 和 GET 命令,键为 w3ckey。 

常用命令解读

概述 

序号命令及描述
1SET key value 设置指定 key 的值
2GET key 获取指定 key 的值。
3GETRANGE key start end 返回 key 中字符串值的子字符
4GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
5GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
6MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。
7SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
8SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
9SETNX key value 只有在 key 不存在时设置 key 的值。
10SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
11STRLEN key 返回 key 所储存的字符串值的长度。
12MSET key value [key value ...] 同时设置一个或多个 key-value 对。
13MSETNX key value [key value ...] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
14PSETEX key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
15INCR key 将 key 中储存的数字值增一。
16INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。
17INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。
18DECR key 将 key 中储存的数字值减一。
19DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。
20APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

SETNX key value 

Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。

redis> EXISTS job                # job 不存在
(integer) 0redis> SETNX job "programmer"    # job 设置成功
(integer) 1redis> SETNX job "code-farmer"   # 尝试覆盖 job ,失败
(integer) 0redis> GET job                   # 没有被覆盖
"programmer"

返回值:设置成功,返回 1 。 设置失败,返回 0 。 

SETNX key value

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

redis 127.0.0.1:6379> SETEX mykey 60 redis
OK
redis 127.0.0.1:6379> TTL mykey
60
redis 127.0.0.1:6379> GET mykey
"redis

返回值:设置成功时返回 OK 。 

GETRANGE key start end

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

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"

返回值:截取得到的子字符串。

GETSET key value

Redis Getset 命令用于设置指定 key 的值,并返回 key 旧的值。

redis 127.0.0.1:6379> GETSET mynewkey "This is my test key"
(nil)
redis 127.0.0.1:6379> GETSET mynewkey "This is my new value to test getset"
"This is my test key"

 返回值:返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。

当 key 存在但不是字符串类型时,返回一个错误。

GETBIT key offset

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

# 对不存在的 key 或者不存在的 offset 进行 GETBIT, 返回 0redis> EXISTS bit
(integer) 0redis> GETBIT bit 10086
(integer) 0# 对已存在的 offset 进行 GETBITredis> SETBIT bit 10086 1
(integer) 0redis> GETBIT bit 10086
(integer) 1

返回值:字符串值指定偏移量上的位(bit)。当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0 。


MGET key1 [key2..]

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

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 someOtherKey
1) "Hello"
2) "World"
3) (nil)

返回值:一个包含所有给定 key 的值的列表。 

STRLEN key

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

# 对不存在的 key 执行 APPENDredis> EXISTS myphone               # 确保 myphone 不存在
(integer) 0redis> APPEND myphone "nokia"       # 对不存在的 key 进行 APPEND ,等同于 SET myphone "nokia"
(integer) 5                         # 字符长度# 对已存在的字符串进行 APPENDredis> APPEND myphone " - 1110"     # 长度从 5 个字符增加到 12 个字符
(integer) 12redis> GET myphone
"nokia - 1110"

返回值:字符串值的长度。 当 key 不存在时,返回 0。

http://www.lryc.cn/news/129251.html

相关文章:

  • 优测云服务平台|【压力测试功能升级】轻松完成压测任务
  • UseEffect中使用setState更新后获取的值为何依然是更新前
  • 去掉鼠标系列之一: 语雀快捷键使用指南
  • 【Linux】Reactor模式
  • 【LeetCode 算法】Merge Two Binary Trees 合并二叉树
  • 系统架构设计师---2017年下午试题1分析与解答(试题五)
  • el-table实现静态和动态合并单元格 以及内容显示的问题
  • STM32F40X系列FSMC8路驱动LCD显示屏(LY-TFT30-39P-1509 芯片hx8352)
  • 小象课堂在线授课教育系统
  • Android 电池容量获取
  • 无涯教程-Perl - tell函数
  • 【论文综述】Transformer 综述
  • 博客摘录「 佛祖保佑,永无bug——springboot启动图案的修改方法」2023年6月8日
  • 【JavaEE进阶】SpringBoot 日志
  • conda - 调研介绍
  • keepalived集群
  • CentOS系统环境搭建(八)——CentOS7开机自动执行脚本(以MySQL为例)
  • re学习(31)BUUCTF-xx(多层加密)
  • HDFS的小文件影响及解决办法
  • 【前端】husky 的使用
  • Spring系列篇 -- Bean的生命周期
  • 分类预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元多输入分类预测
  • Linux权限系列--给普通用户添加某个命令的sudo权限
  • 11-数据结构-栈和队列的应用(C语言)
  • uni-app自定义多环境配置,动态修改appid
  • 04 - 分离头指针情况、理解HEAD和branch
  • C#__基本特性和使用
  • mysql(3)
  • 阿里巴巴常用的12个后端开发工具
  • php base64转图片保存本地