04 字符串类型操作命令介绍

1 String类型

1.1 介绍

存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
存储数据的格式:一个存储空间保存一个数据
存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用

1.2 基本操作

增加,查询,删除
  1. 增加或者修改数据
set key value
setnx key value  # 如果这个key不存在,就添加对应数据,如果存在则没有任何作用
  1. 获取数据
get key
  1. 删除数据
del key

eg:

localhost:6379> set name kobe  # 添加一个数据
OK
localhost:6379> get name  # 获取数据
"kobe"
localhost:6379> set name wade  # 修改数据
OK
localhost:6379> get name 
"wade"
localhost:6379> del name # 删除数据
(integer) 1
localhost:6379> get name # 删除之后,在获取,返回的就是nil(null )
(nil)
localhost:6379>

eg:测试setnx

localhost:6379> get name
(nil)
localhost:6379> setnx name kobe
(integer) 1
localhost:6379> get name
"kobe"
localhost:6379> setnx name wade
(integer) 0
localhost:6379> get name
"kobe"
批量操作
  1. 批量添加/修改
mset key1 value1 key2 value2 ...
msetnx key1 value1 key2 value2 ...  ## 可以同时设置多个key,只有有一个存在都不保存
  1. 批量获取
mget key1 key2 ...
  1. 删除本本身就支持批量
del key1 key2 ...

eg:

localhost:6379> mset name kobe age 18 gender man
OK
localhost:6379> mget name age gender
1) "kobe"
2) "18"
3) "man"
localhost:6379> del name age gender
(integer) 3
localhost:6379> mget name age gender
1) (nil)
2) (nil)
3) (nil)

eg: 测试:msetnx

localhost:6379> mget name age
1) (nil)
2) (nil)
localhost:6379> msetnx name kobe age 18
(integer) 1
localhost:6379> mget name age
1) "kobe"
2) "18"
localhost:6379> msetnx name gender wade man
(integer) 0
localhost:6379> get name age gender
(error) ERR wrong number of arguments for 'get' command
localhost:6379> mget name age gender
1) "kobe"
2) "18"
3) (nil)
其他操作
  1. 追加信息到原始信息后补
append key value
  • 这个命令返回值是新数据的长度
  • 如果key不存在,这个命令就是添加数据
    eg:
localhost:6379> set name zhang
OK
localhost:6379> get name
"zhang"
localhost:6379> append name san  # 这个命令返回值是新数据的长度
(integer) 8
localhost:6379> get name
"zhangsan"
localhost:6379> append gender man  ## gender这个key不存在
(integer) 3
localhost:6379> get gender
"man"
  1. 获取长度
strlen key
  • 如果key不存在返回的就是0
localhost:6379> set name kobe
OK
localhost:6379> strlen name
(integer) 4
localhost:6379> strlen gender
(integer) 0
  1. 截取字符串,索引从0开始
getrange key start end

eg:

localhost:6379> set name zhangsan
OK
localhost:6379> getrange name 1 3
"han"
localhost:6379> get name
"zhangsan"
localhost:6379> getrange name 0 -1  # -1 就是到末尾
"zhangsan"  

1.3 数值数据操作

  • redis中可以用String在做数值类型的数据
  • 按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis 数值上限范围,将报错。(9223372036854775807(java中long型数据最大值,Long.MAX_VALUE))
  • redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发
    带来的数据影响。
  1. 设置数值数据增加指定范围的值
incr key  # 递增++1
incrby key increment # 增加指定的值(increment)
incrbyfloat key increment # 增加小数

eg:

localhost:6379> set num 1
OK
localhost:6379> get num
"1"
localhost:6379> incr num
(integer) 2
localhost:6379> get num
"2"
localhost:6379> incrby num 3
(integer) 5
localhost:6379> get num
"5"
localhost:6379> incrbyfloat num 2.5
"7.5"
localhost:6379> get num
"7.5"
localhost:6379>
  1. 设置数值数据减少指定范围的值
decr key  # 对应incr,递减操作
decrby key increment  # 对应incrby ,减指定的数
  • 注意没有decrbyfloat这个命令
    eg:
localhost:6379> set num 10
OK
localhost:6379> get num
"10"
localhost:6379> decr num
(integer) 9
localhost:6379> get num
"9"
localhost:6379> decrby num 3
(integer) 6
localhost:6379> get num
"6"
localhost:6379> decrbyfloat num 0.5
(error) ERR unknown command `decrbyfloat`, with args beginning with: `num`, `0.5`,
localhost:6379>

应用场景:分库分表时候可以用来做id自增,保证id的唯一性,将ID自增交给外部的redis去做,而不是数据库的自增id去做,并且redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响。

  1. 上面的操作可以合并为一个:因为增加一个负数,就是减; 减一个负数,就是加
localhost:6379> set num 10
OK
localhost:6379> incrby num -1
(integer) 9
localhost:6379> get num
"9"
localhost:6379> decrby num -1
(integer) 10
localhost:6379> get num
"10"
  1. 非数值类型数据,进行上述操作会报错
localhost:6379> set num hello
OK
localhost:6379> incr num
(error) ERR value is not an integer or out of range

1.4 设置数据的有效时间

setex key seconds value   # 单位是秒
psetex key milliseconds value  # 单位是豪秒

eg:

localhost:6379> setex name 10 kobe
OK
localhost:6379> get name
"kobe"
localhost:6379> get name  # 10s后获取,就是nil
(nil)
localhost:6379>

1.5 常用命令总结

命令说明
set设置一个key/value
get根据key获得对应的value
mset一次设置多个key value
mget一次获得多个key的value
getset获得原始key的值,同时设置新值
strlen获得对应key存储value的长度
append为对应key的value追加内容
getrange 索引0开始截取value的内容
setex设置一个key存活的有效期(秒)
psetex设置一个key存活的有效期(毫秒)
setnx存在不做任何操作,不存在添加
msetnx原子操作(只要有一个存在不做任何操作)可以同时设置多个key,只有有一个存在都不保存
decr进行数值类型的-1操作
decrby根据提供的数据进行减法操作
Incr进行数值类型的+1操作
incrby根据提供的数据进行加法操作
Incrbyfloat根据提供的数据加入浮点数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值