Redis6入门到实战------ 三、常用五大数据类型(字符串 String)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。

1、 Redis键(key)

1.1 查看所有key

keys *查看当前库所有key

在这里插入图片描述


1.2 判断某个key是否存在

exists key判断某个key是否存在

在这里插入图片描述


1.3 查看key是什么类型

type key 查看你的key是什么类型

在这里插入图片描述


1.4 删除指定key

del key       删除指定的key数据
unlink key   根据value选择非阻塞删除
仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。

在这里插入图片描述


1.5 设置key过期时间

expire key 10   10秒钟:为给定的key设置过期时间
ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期

在这里插入图片描述


1.6 切换数据库

select命令切换数据库

选择0 。默认操作的库

在这里插入图片描述


1.7 查看当前数据库key数量

dbsize查看当前数据库的key的数量

在这里插入图片描述


1.8 清空数据库

flushdb清空当前库
flushall通杀全部库

在这里插入图片描述

2、Redis字符串(String)

2.1 简介

  • String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
  • String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
  • String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M

2.2 常用命令

set   <key><value>添加键值对

在这里插入图片描述

在这里插入图片描述
*NX:当数据库中key不存在时,可以将key-value添加数据库
*XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
*EX:key的超时秒数
*PX:key的超时毫秒数,与EX互斥


get   <key>查询对应键值

在这里插入图片描述


append  <key><value>将给定的<value> 追加到原值的末尾

在这里插入图片描述


strlen  <key>获得值的长度

在这里插入图片描述


setnx  <key><value>只有在 key 不存在时    设置 key 的值

如果设置已经存在的key、会设置失败

在这里插入图片描述


incr  <key>
将 key 中储存的数字值增1
只能对数字值操作,如果为空,新增值为1

decr  <key>
将 key 中储存的数字值减1
只能对数字值操作,如果为空,新增值为-1

在这里插入图片描述

所谓原子操作是指不会被线程调度机制打断的操作;
这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。
(1)在单线程中, 能够在单条指令中完成的操作都可以认为是"原子操作",因为中断只能发生于指令之间。
(2)在多线程中,不能被其它进程(线程)打断的操作就叫原子操作。
Redis单命令的原子性主要得益于Redis的单线程。


mset  <key1><value1><key2><value2>  ..... 
同时设置一个或多个 key-value对  

mget  <key1><key2><key3> .....
同时获取一个或多个 value

在这里插入图片描述

msetnx <key1><value1><key2><value2>  ..... 
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
原子性,有一个失败则都失败

在这里插入图片描述


getrange  <key><起始位置><结束位置>
获得值的范围,类似java中的substring,前包,后包

在这里插入图片描述


setrange  <key><起始位置><value>
用 <value>  覆写<key>所储存的字符串值,从<起始位置>开始(索引从0开始)。

在这里插入图片描述


setex  <key><过期时间><value>
设置键值的同时,设置过期时间,单位秒。

在这里插入图片描述


getset <key><value>
以新换旧,设置了新值同时获得旧值。

在这里插入图片描述

2.3 数据结构

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

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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
消息中间件 缓存 NoSQL
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
92 32
|
3月前
|
数据处理
鸿蒙开发:ArkTs字符串string
字符串类型是开发中非常重要的一个数据类型,除了上述的方法概述之外,还有String对象,正则等其他的用处,我们放到以后得篇章中讲述。
158 19
|
3月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
|
3月前
|
Java 程序员
课时16:String字符串
课时16介绍了Java中的String字符串。在Java中,字符串使用`String`类表示,并用双引号定义。例如:`String str = &quot;Hello world!&quot;;`。字符串支持使用“+”进行连接操作,如`str += &quot;world&quot;;`。需要注意的是,当“+”用于字符串与其他数据类型时,其他类型会先转换为字符串再进行连接。此外,字符串中可以使用转义字符(如`\t`、`\n`)进行特殊字符的处理。掌握这些基本概念对Java编程至关重要。
|
7月前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
267 7
|
7月前
|
存储 Java 对象存储
String 属于基础的数据类型吗
String 在多数编程语言中被视为一种基础数据类型,但实际上它是由字符组成的序列。在一些语言中,如 Java 和 Python,String 被设计为不可变的对象,以简化编程和提高安全性。
121 6
|
7月前
|
索引 Python
String(字符串)
String(字符串)。
145 3
|
8月前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
93 4
|
12天前
|
存储 编译器 C语言
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
|
3月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
97 11

热门文章

最新文章