【Redis—05】Redis五种数据类型-字符串操作

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

  • 图片使用base64的方式转为字符串存入redis
  • 而对象可以序列化后存入redis
keyvalue
city北京上海深圳(string)

 

常用操作:

1、set

将字符串值 value 设置到 key 中

127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 vvvvvvvvvvvvvvvvvvvvvvv2
OK

127.0.0.1:6379> keys *
1) "k1"
2) "k2"

可以重写key对应的value的值:

127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k1 vvvvvvvvv1
OK

 

2、get

获取 key 中设置的字符串值

我们刚才设置了半天value,那如何查看key对应的value呢?

127.0.0.1:6379> get k1
"vvvvvvvvv1"

127.0.0.1:6379> get k2
"vvvvvvvvvvvvvvvvvvvvvvv2"

127.0.0.1:6379> get k100
(nil)

 

3、incr

将 key 中储存的数字值加1,如果 key 不存在,则 key 的值先被初始化为 0 再执行 INCR 操作(只能对数字类型的数据操作)

127.0.0.1:6379> INCR  k1   #对之前的k1进行incr,会报错,因为不是数字类型
(error) ERR value is not an integer or out of range

127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> INCR num
(integer) 2
127.0.0.1:6379> INCR num
(integer) 3
127.0.0.1:6379> INCR num
(integer) 4
127.0.0.1:6379> INCR num
(integer) 5

 

4、decr

将 key 中储存的数字值减1,如果 key 不存在,则么 key 的值先被初始化为 0 再执行 DECR 操作(只能对数字类型的数据操作)

127.0.0.1:6379> DECR num
(integer) 4
127.0.0.1:6379> DECR num
(integer) 3
127.0.0.1:6379> DECR num
(integer) 2
127.0.0.1:6379> DECR num
(integer) 1
127.0.0.1:6379> DECR num
(integer) 0
127.0.0.1:6379> DECR num
(integer) -1

 

5、setex

set expire的简写,设置key的值 ,并将 key 的生存时间设为 seconds (以秒为单位)  

  • 和expire的区别在于:expire是对以有的key设置生存时间,而setex是在创建key的同时设置生存时间
127.0.0.1:6379> SETEX k3 10 v3 #设置k3 生存时间10秒 值为v3
OK
127.0.0.1:6379> TTL k3
(integer) 5
127.0.0.1:6379> TTL k3
(integer) 3
127.0.0.1:6379> TTL k3
(integer) -2

这个是一个缓存的效果,例如在实际使用中,设置一个key让他在一小时后过期,达到缓存效果。

 

6、setnx

setnx 是 set if not exists 的简写,如果key不存在,则 set 值,存在则不设置值

127.0.0.1:6379> SETNX k1 v1 #k1已经存在,所以创建失败
(integer) 0
127.0.0.1:6379> SETNX k4 v4 #k4不存咋,创建成功
(integer) 1

 

6、getset

设置 key 的值为 value ,并返回 key 的旧值

127.0.0.1:6379> get k1
"vvvvvvvvv1"
127.0.0.1:6379> getset k1 v1
"vvvvvvvvv1"
127.0.0.1:6379> get k1
"v1"

 

7、其他命令

  • strlen:返回 key 所储存的字符串值的长度
    • 127.0.0.1:6379> strlen k1
      (integer) 2

       

  • append:如果 key 存在且是字符串, 则将 value 追加到 key 原来旧值的末尾,如果 key 不存在, 则将key 设置值为 value
    • 127.0.0.1:6379> APPEND k1 1111
      (integer) 6
      127.0.0.1:6379> get k1
      "v11111"
      

       

  • incrby:将 key 所储存的值加上增量值,如果 key 不存在,则 key 的值先被初始化为 0 再执行 INCRBY 命令
  • decrby:将 key 所储存的值减去减量值,如果 key 不存在,则 key 的值先被初始化为 0 再执行 DECRBY 命令
    • 127.0.0.1:6379> INCRBY num 5
      (integer) 4
      127.0.0.1:6379> INCRBY num 5
      (integer) 9
      127.0.0.1:6379> INCRBY num 5
      (integer) 14
      
      127.0.0.1:6379> DECRBY num 5
      (integer) 9
      127.0.0.1:6379> DECRBY num 5
      (integer) 4
      127.0.0.1:6379> DECRBY num 5
      (integer) -1

       

  • getrange:获取 key 中字符串值从 start 开始 到 end 结束 的子字符串
    • 127.0.0.1:6379> get k1
      "v11111"
      127.0.0.1:6379> GETRANGE k1 1 3
      "111"
      

       

  • setrange:从指定的位置开始将key的值替换为新的字符串,比如旧值helloworld,setrange 5 redis,将从第5个下标位置往后开始替换为新的字符串redis,最终结果:helloredis
    • 127.0.0.1:6379> SETRANGE k1 3 234
      (integer) 6
      127.0.0.1:6379> get k1
      "v11234"
      

       

  • mset:同时设置一个或多个 key-value 对
  • mget:获取所有(一个或多个)给定 key 的值
  • msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在时才能设置成功,否则只要有一个key存在都会失败

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值