Redis五种常用数据类型有哪些?对应的数据存储空间又是怎样的?带你从零开始学习

Posted 我是一棵卷心菜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis五种常用数据类型有哪些?对应的数据存储空间又是怎样的?带你从零开始学习相关的知识,希望对你有一定的参考价值。


大家好,我是卷心菜。本篇主要讲解Redis数据库的五种常用数据类型及其数据存储空间的简单介绍,如果您看完文章有所收获,可以三连支持博主哦~,嘻嘻。


文章目录

一、什么是Redis?

  • REmote DIctionary Server(Redis) 是一个key-value存储系统。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
  • 本篇文章所要介绍的数据类型,是针对值(value)的,而不是key。

二、客户端连接Redis

  • 本篇文章的所有操作都是在Linux系统下进行的
  • 使用Redis的客户端操作Redis数据库,首先要开启Redis的服务端,然后在使用如下命令行连接Redis服务器:
[root@shtlinux redis-6.2.6]# cd /usr/local/bin/
[root@shtlinux bin]# redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> ping
PONG

三、Redis数据存储格式

  • redis 自身是一个 Map,其中所有的数据都是采用 key-value 的形式存储
  • 数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串

四、字符串(String)

  • Redis 字符串数据类型的相关命令用于管理 redis 字符串值
  • 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
  • 存储数据的格式:一个存储空间保存一个数据
  • 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用

下图列出了redis字符串的常用命令:


注意:这些指令一定要亲自敲一遍,熟能生巧。对于不会的指令操作,可以看官方文档。


五、哈希(hash)

  • 对于前面讲到的字符串类型,如果存储的是对象类数据,具有较频繁的更新需求操作会显得很麻烦,所有就有了哈希数据结构。
  • 新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息。
  • 需要的存储结构:一个存储空间保存多个键值对数据。
  • hash类型:底层使用哈希表结构实现数据存储。

hash类型数据操作的注意事项:

  • hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到,对应的值为(nil)
  • 每个 hash 可以存储 232 - 1个键值对
  • hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用
  • hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数据访问瓶颈

下图列出了redis哈希的常用指令:



六、列表(list)

  • 数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分。
  • 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序。
  • list类型:保存多个数据,底层使用双向链表存储结构实现。


list类型数据操作注意事项:

  • list中保存的数据都是string类型的,数据总容量是有限的,最多232-1个。
  • list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作。
  • 获取全部数据操作结束索引设置为-1
  • list可以对数据进行分页操作,通常第一页的信息来自于list,第二页及更多的信息通过数据库的形式加载。

下图列出了redis列表的常用指令:



七、集合(Set)

  • 新的存储需求:存储大量的数据,在查询方面提供更高的效率。
  • 需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询。
  • set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的。


set类型数据操作的注意事项:

  • set类型不允许数据重复,如果添加的数据在set中已经存在,将只保留一份。
  • set虽然与hash的存储结构相同,但是无法启用hash中存储值的空间。

下图列出了redis集合set的常用指令:



八、有序集合(sorted set)

  • 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式。
  • 需要的存储结构:新的存储模型,可以保存可排序的数据。
  • sorted_set类型:在set的存储结构基础上添加可排序字段。


sorted_set类型数据操作的注意事项:

  • score保存的数据整数范围是:-9007199254740992~9007199254740992
  • score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重
  • sorted_set 底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果

下图列出了redis有序集合的常用指令:



感谢阅读,一起进步,嘻嘻~

redis基本数据类型

参考技术A 在Redis中,所有的 key 都是字符串(java中操作的key会被序列化,在redis中都是字符串形式)。不同的key对应的value则具备不同的数据结构,所说的五种不同的数据类型,指的是value的数据类型不同。

Redis 中的字符串是动态字符串,内部是可以修改的,像 Java 中的 StringBuffer,它采用分配冗余空间
的方式来减少内存的频繁分配。在 Redis 内部结构中,一般实际分配的内存会大于需要的内存,当字符
串小于 1M 的时候,扩容都是在现有的空间基础上加倍,扩容每次扩 1M 空间,最大 512M。

Redis 字符串常用指令:

在Redis中,字符串都是以二进制的方式存储的。例如:

set k1 a, a对应ASCII码是97 ,97转为二进制是 01100001, BIT相关的命令就是对二进制进行操作的。

bit的一个运用:统计个数。

下表列出了常用的 redis 字符串命令:

在hash结构中,key是一个字符串,value则是一个 key/value 的键值对。

Redis hash 命令

下表列出了 redis hash 基本的相关命令:

Redis 列表命令

下表列出了列表相关的基本命令:

set 集合内的元素是不重复的。

Redis 集合命令

下表列出了 Redis 集合基本命令:

有序集合

Redis 有序集合命令

下表列出了 redis 有序集合的基本命令:

以上都是对于value的操作,下面是对key的操作。

1、 四种数据类型(list/set/zset/hash),在第一次使用时,如果容器不存在,就自动创建一个

2、 四种数据类型(list/set/zset/hash),如果里边没有元素了,那么立即删除容器,释放内存。

以上是关于Redis五种常用数据类型有哪些?对应的数据存储空间又是怎样的?带你从零开始学习的主要内容,如果未能解决你的问题,请参考以下文章

redis支持的数据类型都有哪些

3. Redis有哪些数据类型?

redis数据类型和应用场景

Redis 数据库下载与安装,五种数据类型及常用命令详细介绍

Redis 数据库下载与安装,五种数据类型及常用命令详细介绍

Redis数据库适合使用于哪些应用场景