首页 > 数据库 >【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )

【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )

时间:2023-02-18 22:33:46浏览次数:39  
标签:127.0 name 0.1 Redis 6379 键值 name1 操作 数据


文章目录

  • ​​一、多个数据操作​​
  • ​​1、设置多个键值对​​
  • ​​2、获取多个键对应的值​​
  • ​​3、当键不存在时设置多个键值对​​
  • ​​二、值的范围操作​​
  • ​​1、获取值的范围内容​​
  • ​​2、设置值的范围内容​​
  • ​​三、值的时间操作​​
  • ​​1、设置键值对同时设置过期时间​​
  • ​​2、设置新值并获取旧值​​
  • ​​四、简单动态字符​​






一、多个数据操作




1、设置多个键值对



执行

mset key1 value1 key2 value2 ...

命令 , 可以 向 Redis 数据库中设置多个键值对数据 ;



代码示例 : 使用一条命令 , 向 redis 数据库中插入 ​​name=Tom​​​ , ​​age=18​​ 两个键值对数据 ;

127.0.0.1:6379> mset name Tom age 18
OK
127.0.0.1:6379>
127.0.0.1:6379> get name
"Tom"
127.0.0.1:6379> get age
"18"
127.0.0.1:6379>

【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )_getset



2、获取多个键对应的值



执行

mset key1 key2  ...

命令 , 可以 从 Redis 数据库中 读取 多个键 对应的数据 ;



代码示例 : 使用一条命令 , 向 redis 数据库中插入 ​​name=Tom​​​ , ​​age=18​​ 两个键值对数据 ;

127.0.0.1:6379> mset name Tom age 18
OK
127.0.0.1:6379>
127.0.0.1:6379> get name
"Tom"
127.0.0.1:6379> get age
"18"
127.0.0.1:6379> mget name age
1) "Tom"
2) "18"
127.0.0.1:6379>

【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )_getset_02



3、当键不存在时设置多个键值对



执行

msetnx key1 value1 key2 value2 ...

命令 , 可以向 Redis 数据库中设置多个键值对数据 ;

该操作是 原子操作 , 如果 其中有 键 key 存在 , 则所有的 键值对 插入失败 ;



代码示例 : 插入 ​​name1=Jerry age1=16​​​ 键值对成功 , 因为 name1 和 age1 都不存在 , 插入 ​​name2=Jack age=10​​ 键值对失败 , 因为 age 键已经存在 , 由于该操作是原子操作 , 整个操作都以失败告终 ;

127.0.0.1:6379> msetnx name1 Jerry age1 16
(integer) 1
127.0.0.1:6379> mget name1 age1
1) "Jerry"
2) "16"
127.0.0.1:6379> msetnx name2 Jack age 10
(integer) 0
127.0.0.1:6379> keys *
1) "name1"
2) "age"
3) "age1"
4) "name"
127.0.0.1:6379>

【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )_mset_03






二、值的范围操作




1、获取值的范围内容



执行

getrange key 0 2

命令 , 获取 键 key 对应的值的 从 0 开始 到 2 结束 的内容 , 其中包括 0 和 2 两个边界索引对应的值 ;

上述操作 类似于 Java 中的 String#subString 函数 ;



代码示例 : 获取 ​​name1​​​ 键对应的 ​​Jerry​​​ 值的 从 0 开始到 2 结束的范围内容 , 为 ​​Jer​​ ;

127.0.0.1:6379> get name1
"Jerry"
127.0.0.1:6379> getrange name1 0 2
"Jer"
127.0.0.1:6379>

【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )_mset_04



2、设置值的范围内容



执行

setrange key 2

命令 , 设置 键 key 对应的值的 从 2 开始 的内容 , 相当于在值的 2 索引位置插入内容 , 并覆盖后面的值 ; 索引 2 位置的值也被覆盖了 ;



代码示例 : 设置 ​​name1​​​ 键对应的 ​​Jerry​​​ 值的 从 2 开始 的范围内容 , 最终变成 ​​Je123​​ ;

127.0.0.1:6379> setrange name1 2 123
(integer) 5
127.0.0.1:6379> get name1
"Je123"
127.0.0.1:6379>

【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )_setex_05






三、值的时间操作




1、设置键值对同时设置过期时间



执行

setex key 20 value

命令 , 可以 向 Redis 数据库中设置 key=value 键值对数据 , 并同时为该键值对数据 设置 20 秒过期时间 ;



代码示例 :

127.0.0.1:6379> setex name2 20 Tom
OK
127.0.0.1:6379> ttl name2
(integer) 16
127.0.0.1:6379> ttl name2
(integer) 10
127.0.0.1:6379> ttl name2
(integer) 3
127.0.0.1:6379> ttl name2
(integer) -2
127.0.0.1:6379>

【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )_redis_06



2、设置新值并获取旧值



执行

getset key value

命令 , 可以 向 Redis 数据库中设置 key=value 键值对数据 , 并 同时获取 该 键 key 之前的值 ;



代码示例 :

127.0.0.1:6379> get name
"Tom"
127.0.0.1:6379> getset name Jerry
"Tom"
127.0.0.1:6379> get name
"Jerry"
127.0.0.1:6379>

【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )_mget_07






四、简单动态字符



Redis 字符串数据 本质是 简单动态字符串 ;

该 字符串 类似于 List 集合 , 其内存分配机制是 : 预先分配冗余空间 , 减少内存分配的频率 ;

如果 字符串 实际长度为 length , 实际上分配的空间高于实际长度



扩容机制 :

  • 字符串小于 1MB 时 , 每次扩容增加一倍 ;
  • 字符串大于 1MB , 每次扩容会多增加 1MB 空间 ;


标签:127.0,name,0.1,Redis,6379,键值,name1,操作,数据
From: https://blog.51cto.com/u_14202100/6065677

相关文章