栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

文章目录
  • Redis 常见的操作命令 —— String篇
      • 1、基础操作:添加(set)、修改(get)等等
      • 2、对字符串的一些操作
      • 3、与数字有关的操作
    • 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"

  • 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
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"
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"
String 底层的数据结构

String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配.

如图中所示,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。注意,是value的最大长度为512M,这里的扩容也是将 value 进行扩容

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006267.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号