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 数据库下载与安装,五种数据类型及常用命令详细介绍