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

简介: 这篇文章深入探讨了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。

相关文章
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
654 100
|
开发者 Python
Python中的f-string:高效字符串格式化的利器
Python中的f-string:高效字符串格式化的利器
743 99
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
|
开发者 Python
Python f-string:高效字符串格式化的艺术
Python f-string:高效字符串格式化的艺术
|
Python
Python中的f-string:更简洁的字符串格式化
Python中的f-string:更简洁的字符串格式化
643 92
|
存储 NoSQL 前端开发
Redis专题-实战篇一-基于Session和Redis实现登录业务
本项目基于SpringBoot实现黑马点评系统,涵盖Session与Redis两种登录方案。通过验证码登录、用户信息存储、拦截器校验等流程,解决集群环境下Session不共享问题,采用Redis替代Session实现数据共享与自动续期,提升系统可扩展性与安全性。
728 3
Redis专题-实战篇一-基于Session和Redis实现登录业务
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
523 1
Redis专题-实战篇二-商户查询缓存
|
存储 缓存 NoSQL
见微知著 —— Redis 字符串内部结构源码分析
本篇我们开始讲字典 key 的内部结构,也就是 sds 字符串。首先它不是普通字符串,而是 sds 字符串,这个 sds 的意思是「Simple Dynamic String」,它的结构很简单,它是动态的,意味着可以支持修改。
1787 0