Redis数据类型(5种常用)

redis本身是k-v形式存储数据的,而下文所指的数据类型都是对value进行修饰的。key永远是字符串
在这里插入图片描述
常用的五种value的数据类型

  • string
  • hash
  • list
  • set
  • sorted_set/zset(应用较少)

string类型

在这里插入图片描述

基本操作

在这里插入图片描述
setnx指令的作用有点像一个返回boolean的函数,如果设置成功,如
setnx k4 v4
则会返回1表示设置成功。
反之,返回0就是设置失败,如:
setnx k4 v5,因为k4这个key值已经存在了
在这里插入图片描述
关于append操作,有点像字符串拼接的意思,是直接将新的信息拼接到原始字符串后面。返回更新后value的长度。
如何选择set(单指令)和mset(多指令)?
数据量大的时候应该选择多指令,因为考虑到发送指令到服务器的网络延时。单指令条数过多的时候,受网络延迟的影响也就越大。

扩展操作(主要是对数字)

在这里插入图片描述

注意事项

在这里插入图片描述
格外注意:
6.redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响

key命名约定

习惯上我们用表名+主键名+主键值+字段名 作为key值的命名
在这里插入图片描述

hash类型

hash类型的存储特点

业务场景:有的数据有大量的重复部分,而只有局部的差别
在这里插入图片描述
于是自然想到,能不能把左边完全相同的数据抽取出来成为公共部分呢
于是我们得到了一种新的存储形式
在这里插入图片描述
需要注意的是,hash在这里并不是指的某一条数据,而是指的右边整体的存储空间,这个存储空间的本质是多个键值对数据
(有点像套娃,整体看起来key-hash,而hash内部又是key-value的形式,整体呈现key-filed-value形式的存储结构)
在这里插入图片描述
注意:hash自身实现了存储结构优化
在这里插入图片描述

基本操作

和string类型的操作差别不大,主要是在指令前加了字母 “h”
在这里插入图片描述

扩展操作(主要是对数字)

注意事项

在这里插入图片描述

list类型

存储特点

在这里插入图片描述
总结起来就是:多个数据、数据有序(先后顺序)
list类型的底层是通过双链表实现的——因此增删快,查找慢
整体的结构是key-list形式。list作为value值。list内部又有更多的有序数据

基本操作

在这里插入图片描述
list底层基于双向链表实现,表现为一个队列,因此左右都能操作,且遵循fifo的逻辑。

扩展操作

在这里插入图片描述
字母b代表block,阻塞
blpop和lpop的区别:blpop可以设置等待时间。如果当前list中有指定的数据,则会直接弹出。否则将等待指定的时间,若等待时间到期而未能取出数据,则会返回nil表示取数据失败

注意事项

在这里插入图片描述
第三条较为重要,也更常用。相当于select *的意思。

set类型

存储特点

和Java的set不能说毫不相关吧,起码是一模一样
set用于存储更多的数据,提供更高的查询效率,这也是set类型最显著的特征
在这里插入图片描述
set类型在结构上和hash一模一样(是一种类hash结构),只是在value的存储方式上有所简化。相当于将hash中的value和filed合并为value。
在这里插入图片描述
set另一个显著的特征是不允许有重复的值
在这里插入图片描述

基本操作

在这里插入图片描述
在这里插入图片描述

扩展操作(主要是集合间的基本运算)

在这里插入图片描述

应用场景

黑白名单
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐