当前位置:   article > 正文

Redis 常见的操作命令 —— String篇_redis string 过期 查询

redis string 过期 查询

Redis 常见的操作命令 —— String篇

1、基础操作:添加(set)、修改(get)等等

  • set [key] [value]:添加键值对
  • get [key] 查询对应键值
  • mset [key] [value] [key] [value]… :同时设置一个或多个 键值对
  • mget [key] [key] [key] …:同时获取一个或多个 value
  • expire [key] [数字] :给已经存在的键设置过期时间,单位为秒
  • ttl [key] :查看键的过期时间,-1 为永不过期,-2为已经过期
#使用的库都是0号库
192.168.136.130:0>set k1 v1 # 添加一个 键值对 key:k1 ; value:v1 到库中
"OK" #显示成功添加
192.168.136.130:0>get k1 #获取 key为 k1 的value
"v1" #获取到的值
192.168.136.130:0>set k1 v11 # 如果set 的键名已经存在,则会替换掉之前的内容
"OK"
192.168.136.130:0>get k1
"v11"
192.168.136.130:0>del k1 #删除键为k1的键值对
"1" #返回1表示成功
192.168.136.130:0>get k1 #再次获取
null #显示为空
192.168.136.130:0>mset k1 v1 k2 v2 k3 v3 #批量添加 
"OK"
192.168.136.130:0>mget k1 k2 k3 #批量获取
1) "v1"
2) "v2"
3) "v3"

192.168.136.130:0>expire k3 10 # 给 key 为 k3 的键设置过期时间 过期时间为10s
"1"
192.168.136.130:0>ttl k3 # 查看 key 为k3 的过期时间
"6" #还有 6s过期
192.168.136.130:0>ttl k3
"1"
192.168.136.130:0>ttl k3
"-2" # -2代表已经过期
192.168.136.130:0>ttl k1
"-1" # -1代表永不过期
192.168.136.130:0>move k2 1 # 将 key 为 k2 的键值对 移动到 1号库下 (当前是在 0号库)见下图
"1"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

img1

在这里插入图片描述

  • setnx [key] [value] :如果键不存在,则会添加成功,否则将添加失败
  • setex [key] [数字] [value]:在添加键值对的时候就为其设置过期时间(set 方式添加是永不过期)
  • msetnx [key] [value] [key] [value]… :批量添加,如果有一个键已经存在,则所有都将添加失败
192.168.136.130:0>keys *
1) "k1"
192.168.136.130:0>set k2 v2 # 先添加一个键值对 k2 - v2
"OK"
192.168.136.130:0>setnx k2 v22 #k2 已经存在,不会替换掉之前的内容,添加失败
"0"
192.168.136.130:0>get k2
"v2"
192.168.136.130:0>setex k3 10 v3 #在添加的时候就设置过期时间,EXPIRE 是给已存在的键值对设置过期时间
"OK"
192.168.136.130:0>ttl k3
"6"
192.168.136.130:0>ttl k3
"2"
192.168.136.130:0>ttl k3
"-2"

192.168.136.130:0>keys *
1) "k2"
2) "k1"
192.168.136.130:0>msetnx k3 v3 k4 v4 k5 v5 #批量添加(不能添加重复键)msetnx具有原子性,一个键值对添加失败,整个操作都是随之失败
"1"
192.168.136.130:0>keys *
1) "k3"
2) "k5"
3) "k2"
4) "k4"
5) "k1"
192.168.136.130:0>msetnx k5 v5 k6 v6 # k5 已经存在,所以会导致整个操作都失败
"0"
192.168.136.130:0>keys *
1) "k3"
2) "k5"
3) "k2"
4) "k4"
5) "k1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

2、对字符串的一些操作

  • STRLEN [key]:获取值的长度
  • APPEND [key][value]:将value追加到 key的值后面
192.168.136.130:0>set k2 hello #设置一个键值对用于测试
"OK"
192.168.136.130:0>get k2
"hello"
192.168.136.130:0>STRLEN k2 # 获取 k2 value 的长度
"5"
192.168.136.130:0>APPEND k2 world # 在k2 的value 的最后 追加上 world
"10"
192.168.136.130:0>get k2
"helloworld"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3、与数字有关的操作

  • incr [key] :如果值是integer ,则会将其进行加一的操作,如果不是则会报错
  • decr [key]:如果值是integer ,则会将其进行减一的操作,如果不是则会报错
  • incrby [key] [数字] :自定义需要加多少
  • decrby [key] [数字] :自定义需要减多少
192.168.136.130:0>set k1 0 #添加一个键值对 键为 k1 值为 0
"OK"
192.168.136.130:0>get k1 #查看 k1 的值
"0"
192.168.136.130:0>incr k1 # incr是将值 +1 操作
"1" # 0 + 1 = 1
192.168.136.130:0>incr k1 # decr是将值 -1 操作
"2"
192.168.136.130:0>decr k1
"1" # 2 - 1 = 1
192.168.136.130:0>decr k1
"0"
192.168.136.130:0>incrby k1 10 # 将对应的加上一个自定义的数 这里是定义为 10
"10"
192.168.136.130:0>incrby k1 10
"20"
192.168.136.130:0>decrby k1 10 # 将对应的减去一个自定义的数 这里是定义为 10
"10"
192.168.136.130:0>decrby k1 10
"0"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

String 底层的数据结构

String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配.
在这里插入图片描述
如图中所示,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。注意,是value的最大长度为512M,这里的扩容也是将 value 进行扩容

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/727012
推荐阅读
相关标签
  

闽ICP备14008679号