【Redis】Redis 字符串数据操作 ② ( 多个数据操作 | 值的范围操作 | 值的时间操作 | 简单动态字符 )
文章目录
一、多个数据操作
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>
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>
3、当键不存在时设置多个键值对
执行
msetnx key1 value1 key2 value2 ...
命令 , 可以 在 对应的 键 key 不存在时 , 向 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>
二、值的范围操作
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>
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>
三、值的时间操作
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>
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 字符串数据 本质是 简单动态字符串 ;
该 字符串 类似于 List 集合 , 其内存分配机制是 : 预先分配冗余空间 , 减少内存分配的频率 ;
如果 字符串 实际长度为 length , 实际上分配的空间高于实际长度 ;
扩容机制 :
- 字符串小于 1MB 时 , 每次扩容增加一倍 ;
- 字符串大于 1MB , 每次扩容会多增加 1MB 空间 ;
相关文章
- 深入浅出:Redis的持久化策略(redis的持久化策略)
- 型深入浅出Redis:熟悉不同缓存类型的功能和实现(redis缓存类)
- Java 连接 Redis:实现数据快速传输(java连redis)
- 卸载Redis终端在Mac上的方法(redis卸载mac)
- 检验Redis连接是否已断开(检验redis断开)
- 使用Redis轻松查询存储的数据(查询redis存的数据)
- 探索Redis存储的极限大数据的命题(查询redis存储上限)
- 查询Redis从存储的数据中寻找答案(查询redis上的数据)
- 快速清空Redis数据的小技巧(清空redis数据命令)
- 华为引领利用大数据集群Redis推动云计算发展(华为大数据集群redis)
- 给Redis存入数据,空间压缩高效(存入redis数据 压缩)
- 如何快速获取Redis中的数据(如何获取redis的数据)
- 使用Redis技术实现数据排重的好处(利用redis 数据排重)
- 处理利用Redis实现高并发实时数据处理(redis高并发实时数据)
- 重新定义Redis集群迁移数据之路(redis集群迁移数据)
- 借助Redis镜像实现高效部署(redis镜像设置)
- 中文数据在Redis中的记录(中文存入redis)
- Redis 从池中返回(redis释放返回到池)
- Redis提升数据缓存效率,让你畅享快乐(redis进行数据缓存)
- Redis极大提升数据读写速率(redis 读写速率)
- Redis集群单数台式部署研究(redis集群单数台)
- Redis实现安全设置密码的简易教程(redis设置密码教程)
- 权限管理基于Redis实现角色资源权限管理(redis 角色资源)