【Redis】Redis 字符串数据操作 ① ( 访问字符串值数据 | 操作数据库中的字符串数据 | 数字数据操作 | 原子操作 )
文章目录
一、Redis 中的 String 字符串类型
在 Redis 数据库 中 , String 字符串 类型 是 二进制安全 的 , 可以将 图片 , 视频 序列化为 字符串数据存储 , 然后取出时再反序列化为 原数据类型 ;
在 Redis 中 , 键 Key 对应的 字符串 类型的 值 Value 最高 可存储 512 MB ;
二、访问字符串值数据
1、设置字符串值数据
执行
set key value
命令 , 可以 向 当前 数据库中 添加数据 , 其中 key 是 键 , value 是对应的值 , 键值对为 key = value ;
如果 多次 向 相同的 key 中存储数据 , 后者会将前者覆盖 ;
代码示例 :
127.0.0.1:6379>
127.0.0.1:6379> set name Tom
OK
127.0.0.1:6379> get name
"Tom"
127.0.0.1:6379> set name Jerry
OK
127.0.0.1:6379> get name
"Jerry"
127.0.0.1:6379>
2、读取字符串值数据
执行
get key
命令 , 可以 读取当前 数据库 中 键 key 对应的数据 ;
3、键不存在时设置字符串值数据
执行
setnx key value
命令 , 可以 向 当前 数据库中 添加数据 , 只有当该 键 不存在时 , 才能设置成功 , 否则无法设置 ;
代码示例 : name 原来的值为 Tom , 调用 setnx 命令设置 name 值设置失败 , 如果设置 name1 值 , 则设置成功 ;
127.0.0.1:6379> get name
"Tom"
127.0.0.1:6379> setnx name Jerry
(integer) 0
127.0.0.1:6379> get name
"Tom"
127.0.0.1:6379> setnx name1 Jerry
(integer) 1
127.0.0.1:6379> get name1
"Jerry"
127.0.0.1:6379>
三、操作数据库中的字符串数据
1、追加字符串值
执行
append key value
命令 , 可以 向 key 键对应的 value 值 字符串 数据 后 , 追加一个字符串 , 追加的内容自动添加的原字符串的末尾 ;
代码示例 : 原来 name 键存储的值为 Jerry , 在后面追加一个 Cruise ;
127.0.0.1:6379> get name
"Jerry"
127.0.0.1:6379>
127.0.0.1:6379> append name Cruise
(integer) 11
127.0.0.1:6379> get name
"JerryCruise"
127.0.0.1:6379>
2、获取字符串值长度
执行
strlen key value
命令 , 可以 获取 key 键对应的 Value 字符串值 的 字符串长度 ;
代码示例 : 原来 name 键存储的值为 Tom , 长度为 3 ;
四、数字数据操作
1、数字自增 1
执行
incr key
命令 , 可以 将 键 key 中存储的 数值 自增 1 , 如果 没有该 key 键 , 则插入数据 , 值 Value 为 1 ;
该操作 只能 针对 数字 操作 , 对其它类型数据操作 无效 , 会报如下错误 :
(error) ERR value is not an integer or out of range
代码示例 :
- 对
age=18
的数据执行自增操作 , 存储的数据变为 19 ; - 对
name=Tom
数据执行自增操作 , 直接报错(error) ERR value is not an integer or out of range
- 数据库中没有 age2 键 , 对 age2 进行自增操作 , 会插入 age2=1 数据 ;
127.0.0.1:6379> get age
"18"
127.0.0.1:6379>
127.0.0.1:6379> incr age
(integer) 19
127.0.0.1:6379>
127.0.0.1:6379> get age
"19"
127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
127.0.0.1:6379> incr age2
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> get age2
"1"
127.0.0.1:6379>
2、数字自减 1
执行
decr key
命令 , 可以 将 键 key 中存储的 数值 自减 1 , 如果 没有该 key 键 , 则插入数据 , 值 Value 为 -1 ;
该操作 只能 针对 数字 操作 , 对其它类型数据操作 无效 , 会报如下错误 :
(error) ERR value is not an integer or out of range
代码示例 :
- 对
age=19
的数据执自减操作 , 存储的数据变为 18 ; - 对
name=Tom
数据执行自增操作 , 直接报错(error) ERR value is not an integer or out of range
- 数据库中没有 age3 键 , 对 age3 进行自减操作 , 会插入 age3=-1 数据 ;
127.0.0.1:6379> decr age
(integer) 18
127.0.0.1:6379> decr name
(error) ERR value is not an integer or out of range
127.0.0.1:6379> decr age3
(integer) -1
127.0.0.1:6379> get age3
"-1"
127.0.0.1:6379>
3、数字增加指定步长
执行
incrby key 10
命令 , 步长值为 10 , 可以 将 键 key 中存储的 数值 增加 10 , 如果 没有该 key 键 , 则插入数据 , 值 Value 为 10 ;
该操作 只能 针对 数字 操作 , 对其它类型数据操作 无效 , 会报如下错误 :
(error) ERR value is not an integer or out of range
代码示例 :
127.0.0.1:6379> incrby age 20
(integer) 38
127.0.0.1:6379>
4、数字减少指定步长
执行
decrby key 10
命令 , 步长值为 10 , 可以 将 键 key 中存储的 数值 减少 10 , 如果 没有该 key 键 , 则插入数据 , 值 Value 为 -10 ;
该操作 只能 针对 数字 操作 , 对其它类型数据操作 无效 , 会报如下错误 :
(error) ERR value is not an integer or out of range
代码示例 :
127.0.0.1:6379> decrby age 18
(integer) 20
127.0.0.1:6379>
127.0.0.1:6379> decrby age4 10
(integer) -10
127.0.0.1:6379>
五、原子操作
以上 数值操作 incr , decr , incrby , decrby 操作 , 都是原子操作 ;
原子操作 不会被 线程调度 打断 , 如果在执行 原子操作 过程中 , 进行线程调度 , 需要等待 原子操作执行完毕后 , 才能开始进行调度 ;
在 Redis 中的 自增 , 自减 , 是原子操作 , 执行过程不可打断 ;
但是 在 Java 中 , 自增操作 不是原子操作 , 如 i++ 操作 , 由如下原子操作组成 :
- 第一步 : 取值
- 第二步 : 自增 +1 操作
- 第三步 : 赋值
如果线程调度时 , 正好卡在中间步骤 , 那么 Java 自增操作就会被打断 ;
相关文章
- 解锁Redis的数量上限(redis数量上限)
- Redis:让内存数据库更灵活(redis内存数据库)
- 搭建 Redis: 快速、简单、轻松(redis怎么搭建)
- 探秘:如何利用Cacti监控Redis数据库?(cactiredis)
- 把流数据存储到Redis中的方法(怎么把流存入redis)
- 腾讯云Redis实现快速序列化(腾讯 redis 序列化)
- 多线程操作Redis营造数据并达安全(线程调用redis)
- 简易玩转Redis 简单方法掌握NoSQL技术(简单的redis方法)
- 查询Redis从存储的数据中寻找答案(查询redis上的数据)
- 深入分析当前Redis连接状况(查看当前redis连接数)
- 精准营销利用Redis存储客户数据(数据存到redis)
- 解决Redis存储中的乱码问题(存储redis中乱码)
- 玩转Redis实现高效缓存(如何用redis做缓存)
- 如何快速开启Redis数据库(如何打开redis数据库)
- 利用Redis实现高效数据排序(如何利用redis做排序)
- 从零开始使用Redis数据库(使用redis数据库)
- 处理利用Redis实现高并发实时数据处理(redis高并发实时数据)
- 玩转Redis集群IP配置技巧(redis集群配置IP)
- 使用Redis集群三种实现方式(redis集群的三种方式)
- 突破极限,Redis集群玩转大数据(redis集群怎么样)
- Redis利用集合运算实现高效率计算(redis集合运算效率)
- 红色的惊喜Redis中的随机数据结构(redis随机数据结构)
- 从Redis中随机取出n条数据(redis随机取n条数据)
- Redis以键空间拓展数据存储空间(redis 键空间)
- 为何Redis才能成就面试成功(为什么用redis面试)
- Redis部署模式的优势分析(redis部署模式优点)
- Redis集群凭单数台令服务更佳(redis集群单数台)
- 警惕由Redis缓存引发的性能问题(redis缓存过多)