005 - Redis 数据结构 - String类型


一、字符串类型:string


  字符串类型是 Redis 中最基本的数据结构,它能存储任何类型的数据,包括二进制数据,序列化后的数据,JSON 化的对象甚至是一张图片。最大512M。

keyvalue
name楚子航

  字符串类型的数据操作总的思想是通过 key 操作 value,key 是数据标识,value 是我们存储的数据。

一、string 数据的操作命令


1.set key value

功能:将字符串值 value 设置到 key 中,如果 key 已存在,后放的值会把前放的值覆盖掉。
返回值:OK表示成功

127.0.0.1:6379> set name czh
OK

2.get key

功能:获取 key 中设置的字符串值
返回值:key 存在,返回 key 对应的 value ;
    key不存在,返回nil;

127.0.0.1:6379> get name 
"czh"

3.append key value

功能:如果 key 存在,则将 value 追加到 key 原来旧值的末尾;
   如果 key 不存在,则将key 设置值为 value;

返回值:追加字符串之后的总长度(字符个数)

127.0.0.1:6379> set k1 123
OK
127.0.0.1:6379> append k1 456789
(integer) 9
127.0.0.1:6379> get k1
"123456789"
//k2是一个不存在的k
127.0.0.1:6379> append k2 456789
(integer) 6
127.0.0.1:6379> get k2
"456789"
127.0.0.1:6379> 

4.strlen key

功能:返回 key 所储存的字符串值的长度
返回值:如果 key 存在,返回字符串值的长度;
    如果 key 不存在,返回0;

127.0.0.1:6379> strlen k1
(integer) 9
127.0.0.1:6379> 

5.incr key

功能:将 key 中储存的数字值加1;
   如果 key 不存在,则 key 的值先被初始化为 0 再执行 incr 操作;
返回值:返回加1后的 key 值;

127.0.0.1:6379> get k1
"123456789"
//对 k1 的值进行加一
127.0.0.1:6379> incr k1
(integer) 123456790
127.0.0.1:6379> get k1
"123456790"

//k4 不存在,先对其初始化为 0 ,再加一
127.0.0.1:6379> incr k4
(integer) 1
127.0.0.1:6379> get k4
"1"

//incr 只能对数值类型数据进行操作,如果非数值型会报错
127.0.0.1:6379> set k5 a
OK
127.0.0.1:6379> incr k5
(error) ERR value is not an integer or out of range

6.decr key

功能:将 key 中储存的数字值减1;
   如果 key 不存在,则 key 的值先被初始化为 0 再执行 decr 操作;
返回值:返回减1后的 key 值;

127.0.0.1:6379> get k1
"123456789"
//对 k1 的值进行减一
127.0.0.1:6379> decr k1
(integer) 123456788
127.0.0.1:6379> get k1
"123456788"

//k4 不存在,先对其初始化为 0 ,再减一
127.0.0.1:6379> incr k4
(integer) -1
127.0.0.1:6379> get k4
"-1"

//decr 只能对数值类型数据进行操作,如果非数值型会报错
127.0.0.1:6379> set k5 a
OK
127.0.0.1:6379> decr k5
(error) ERR value is not an integer or out of range

7.incrby key offset

功能:将 key 所储存的值加上增量值;;
   如果 key 不存在,则 key 的值先被初始化为 0 再执行 INCRBY 命令;
返回值:返回增量之后的 key 值;

127.0.0.1:6379> get k1
"5"
//对 k1 的值进行增量5
127.0.0.1:6379> incrby k1 5
(integer) 10
127.0.0.1:6379> get k1
"10"

//k4 不存在,先对其初始化为 0 ,再增量
127.0.0.1:6379> incrby k4 5
(integer) 5
127.0.0.1:6379> get k4
"5"

//incrby 只能对数值类型数据进行操作,如果非数值型会报错
127.0.0.1:6379> set k5 a
OK
127.0.0.1:6379> incrby k5 5
(error) ERR value is not an integer or out of range

8.decrby key offset

功能:将 key 所储存的值减去减量值;
   如果 key 不存在,则 key 的值先被初始化为 0 再执行 DECRBY 命令;
返回值:返回减量之后的key值;

127.0.0.1:6379> get k1
"10"
//对 k1 的值进行减量
127.0.0.1:6379> decrby k1
(integer) 5
127.0.0.1:6379> get k1
"5"

//k4 不存在,先对其初始化为 0 ,再减量
127.0.0.1:6379> incrby k4 5
(integer) -5
127.0.0.1:6379> get k4
"-5"

//decr 只能对数值类型数据进行操作,如果非数值型会报错
127.0.0.1:6379> set k5 a
OK
127.0.0.1:6379> decrby k5
(error) ERR value is not an integer or out of range

9.getrange key startIndex endIndex

功能:将 key 所储存的值减去减量值;
   获取 key 中字符串值从 startIndex 开始到 endIndex 结束的子字符串,包括 startIndex 和 endIndex,, 负数表示从字符串的末尾开始,-1 表示最后一个字符;
返回值:返回减量之后的 key 值;

127.0.0.1:6379> set address guangzhou
OK
127.0.0.1:6379> getrange address 0 4
"guang"
127.0.0.1:6379> getrange address -4 -1
"zhou"
127.0.0.1:6379> getrange address 0 -1
"guangzhou"
127.0.0.1:6379> 

10.setrange key offsetIndex value

功能:用 value 覆盖key的存储的值,从 offset 开始;
返回值:修改后的字符串的长度;

127.0.0.1:6379> get address
"guangzhou"
127.0.0.1:6379> setrange address 5 xi  
(integer) 9
127.0.0.1:6379> get address
"guangxiou"
127.0.0.1:6379> 

11.setex key seconds value

功能:设置 key 的值,并将 key 的生存时间设为 seconds (以秒为单位) ,如果 key 已经存在,将覆盖旧值;
返回值:设置成功,返回OK;

127.0.0.1:6379> setex email 20 czh@qq.com
OK
127.0.0.1:6379> ttl email
(integer) 14
127.0.0.1:6379> ttl email
(integer) 11
127.0.0.1:6379> 

12.setnx key value

功能:setnx 是 set if not exists 的简写,如果 key 不存在,则 set 值,存在则不设置值;
返回值:如果key存在,返回字符串值的长度;
    如果 key 不存在,返回0;

127.0.0.1:6379> keys *
1) "address"
127.0.0.1:6379> setnx email czh@qq.com
(integer) 1
127.0.0.1:6379> setnx email lmf@qq.com
(integer) 0
127.0.0.1:6379> 

13.mset key value [key value…]

功能:同时设置一个或多个 key-value 对;
返回值:设置成功,返回OK;

127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"

14.mget key [key …]

功能:获取所有(一个或多个)给定 key 的值;
返回值:包含所有key的列表,如果 key 不存在,则返回nil;

127.0.0.1:6379> mget k1 k2 k3 k4
1) "v1"
2) "v2"
3) "v3"
4) (nil)

15.msetnx key value[key value…]

功能:同时设置一个或多个 key-value 对,如果有一个key是存在的,则设置不成功
返回值:设置成功,返回1;
    设置失败,返回0;

127.0.0.1:6379> msetnx k1 v1 k2 v2
(integer) 1
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
// k1 已经存在的,所以设置失败
127.0.0.1:6379> msetnx k1 v1 k3 v3
(integer) 0



写在最后

以上关于 Redis 中 String 类型数据结构的具体内容,后续如果有时间的话我也将持续更新,如果有错误或者是哪里不足的地方,欢迎各位大大提出宝贵的意见呀~

此外,想了解关于 Redis 的一些其他使用命令使用方法可以关注下方公众号,后台回复 “redis ”即可获取,期待着您的光临~

在这里插入图片描述


相关链接:

链接: 004 - Redis 基本命令.
链接: 003 - 解决 Windows 启动 Redis 服务器一闪而过问题.
链接: 002 - Redis 介绍和安装.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值