Redis数据类型 - 字符串

本文详细介绍了Redis中的字符串数据类型及其操作,包括设置、获取、删除键值对,以及字符串的长度、范围获取和追加操作。此外,还讲解了如何将字符串键用于存储和操作数字值,包括整数和浮点数的加减操作。Redis的这些特性使其成为高效的数据存储和处理工具。
摘要由CSDN通过智能技术生成


Redis不仅是一个键值对文本存储容器,它实际提供多种数据结构,以支持各种各样的数据。

一、字符串

字符串是Redis最基本的键值对类型,这种类型的键值对会在数据库中把单独的一个键和单独的一个值关联起来,被关联的值既可以是普通的文本数据,也可以是图片、视频等更为复杂的二进制数据。

  • 创建键值对数据
    语法格式:SET key value,如
SET name "redisone"

在Redis数据库中,是以无序方式存放数据库键的,一个新加入的键可能会出现在数据库的任何位置,因此我们在使用Redis时不应该对键在数据库中的位置做任何假设,以免造成错误。

在默认情况下,对一个已经设置了值的字符串键值对再次执行SET命令时就会将值覆盖。从Redis2.6.12开始,可以通过向SET命令提供NX选项或XX选项来指明是否覆盖旧值,NX表示只在键没有值的情况下才覆盖,而XX与之相反,只有在键有值时才进行覆盖,如

# 只在password没有值时将其值设置为123456
SET password "123456" NX
  • 删除指定key
    Redis中删除的命令为DEL
    语法格式:DEL key,如
# 删除key为password的数据
DEL password
  • 查看数据库中键
    可通过KEYS命令查看数据库中的键,
    语法格式:KEYS pattern
    其中pattern表示匹配模式,如
#查看所有键
KEYS * 

#查看n开头的键
KEYS n*

其他匹配符
?:匹配任意单个字符;
[]:匹配给定字符串中的单个字符,如user.[abc]可匹配user.ab,user.cd,但不匹配user.df;
[?-?]:匹配给定范围中的单个字符,如user.[a-f]可匹配user.ab,user.df,但不匹配user.gh;

  • 获取键对应的值
    可以使用GET命令从数据库中获取指定字符串键对应的值,键不存在时返回空值(nil)。
    语法格式:GET key,如
GET name
  • 获取旧值并设置新值
    Redis中可通过GETSET命令来获取值的同时为其设置新值。
    语法格式:GETSET key newValue,如
#获取name的值并将其值设置为redistwo
GETSET name "redistwo"
  • 一次为多个字符串键设置值
    除了GET、SET之外,Redis还提供了MSET命令来实现同时对多个字符串键设置值。
    语法格式:MSET key value key value …,如
# 同时设置age和message,并且值分别为18、hello
MSET age 18 message "hello"

MSET命令除了可以更方便的执行多个设置操作外,还能有效地提高程序的效率,因为执行多条SET命令需要客户端和服务器之间进行多次网络通信,由此可能耗费大量的时间,而使用MSET命令去代替多条SET命令只需要一次网络通信,可有效减少程序执行多个设置操作的时间。

与SET中使用NX时类似,也有MSETNX指令,用于指明只在键不存在的情况下,一次为多个字符串键设置值,在成功执行时返回1,失败时返回0

  • 一次获取多个字符串键的值
    与MSET相对应的还有MGET,用于一次获取多个字符串键的值。
    语法格式:MGET key1 key2 …,如
# 一次获取age和message的值
MGET age message
  • 获取字符串值的字节长度
    通过对字符串键执行STRLEN命令,可以取得字符串键存储的值的字节长度,对于不存在的键,将返回0;
    语法:STRLEN key,如
# 获取name对应的值的字节长度
STRLEN name
  • 获取字符串值的部分指定值
    因为每个字符串都是由一系列的字节组成,所以字符串中的每个字节实际上都拥有与之相对应的索引,Redis中为每个字符串都提供了一系列索引操作,这些命令允许用户通过正数索引或负数索引对字符串值进行操作;

所谓正数索引就是以0开始,从字符串的开头向结尾不断递增;
而负数索引以-1开头,从字符串的结尾向开头不断递减;

在这里插入图片描述
通过使用GETRANGE命令,用户可以获取字符串值指定索引范围的值;
语法格式:GETRANGE key start end,如

# 获取message对应值的0至4索引上的内容,如果值为helloworld,获取的则是hello
GETRANGE message0 4

与GETRANGE相对应的有SETRANGE,用于将字符串值从索引开始的部分替换为指定的新内容,注意是索引开始往后的部分,而不是指定的具体范围;当新值大于原有的长度时将会自动扩展;而当指定的索引值超过最大索引时,期间的部分将使用空格进行占位。

  • 追加新内容到值的末尾
    通过使用APPEND命令,可以给指定key的值追加新的值,如果键不存在,将会初始化空值,再进行追加;
    语法格式:APPEND key suffix,如
# 给name的值追加 lucky,如果name的值原来为 redis,那么新值就是redis lucky
APPEND name ' lucky'

二、使用字符串键存储数字值

每当用户将一个值存储到字符串键中的时候,Redis会对这个值进行检测,如果这个值能够被识别为long范围内的整数或double范围内的浮点数,redis就会把这个值当作数字来处理。同时,redis提供了一系列加法操作命令以及减法操作命令,以方便对这些数字值进行操作。

1、整数操作

INCRBY、DECRBY:对整数值执行加法操作和减法操作

INCRBY命令用于为整数值加上指定的整数增量,增量也需要是整数,当指定的键不存在时,会先将键的值初始化为0,再执行加法操作;
语法格式:INCRBY key increment,如

# 为age的值增加10
INCRBY age 10

DECRBY与INCRBY相反,用于为整数减去指定的值

INCR、DECR:对整数值执行加1和减1操作

Redis分别提供了用于执行加1操作的INCR和用于执行减1操作的DECR,使用这两个命令时只需指定key,即可对对于key的值进行加1或减1操作,如

# age加1
INCR age
# age减1
DECR age

除了增量和减量固定为1之外,INCR命令和DECR命令的其他方面与INCRBY和DECRBY命令相同。

2、浮点数操作

与INCRBY相似,Redis还提供了INCRBYFLOAT命令来对浮点数进行加法操作,语法格式与INCRBY相同,操作数既可以是整数也可以是浮点数,如

INCRBYFLOAT age 12.5

INCRBYFLOAT除了可进行加法外,还可进行减法操作,只需在增量数钱添加负号即可,如

# 对age减去10
INCRBYFLOAT age -10

虽然Redis并不限制字符串键存储的浮点数和小数位长度,但是在使用INCRBYFLOAT命令处理浮点数的时候,命令最多只会保留计算结果小数点后的17位数字,超过这个范围的小数将被截断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值