Redis 数据类型

Posted 晴天彩虹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 数据类型相关的知识,希望对你有一定的参考价值。

参考:

Redis的6种数据类型

Redis有哪几种数据类型

Redis五种数据类型(redis使用命令)

 

Redis 是一种基于内存的数据库,并且提供一定的持久化功能,它是一种键值(key-value)数据库,使用 key 作为索引找到当前缓存的数据,并且返回给程序调用者。

当前的 Redis 支持 6 种数据类型,它们分别是字符串(String)、列表(List)、集合(set)、哈希结构(hash)、有序集合(zset)和基数(HyperLogLog)。

使用 Redis 编程要熟悉这 6 种数据类型,并且了解它们常用的命令。Redis 定义的这 6 种数据类型是十分有用的,它除了提供简单的存储功能,还能对存储的数据进行一些计算。

比如字符串可以支持浮点数的自增、自减、字符求子串,集合求交集、并集,有序集合进行排序等,所以使用它们有利于对一些不太大的数据集合进行快速计算,简化编程,同时它也比数据库要快得多,所以它们对系统性能的提升十分有意义。

 

表 1 列出了关于 Redis 的 6 种数据类型的基本描述。

表 1 Redis的6种数据类型说明
数据类型数据类型存储的值说 明
STRING(字符串) 可以是保存字符串、整数和浮点数 可以对字符串进行操作,比如增加字符或者求子串:如果是整数或者浮点数,可以实现计算,比如自增等
LIST(列表) 是一个链表,它的每一个节点都包含一个字符串 Redis 支持从链表的两端插入或者弹出节点,或者通过偏移对它进行裁剪;还可以读取一个或者多个节点,根据条件删除或者查找节点等
SET(集合) 它是一个收集器,但是是无序的,在它里而每一个元素都是一个字符串,而且是独一无二,各不相同的 可以新增、读取、删除单个元素检测一个元素是否在集合中;计算它和其他集合的交集、并集和差集等;随机从集合中读取元素
HASH(哈希散列表) 
它类似于 Java 语言中的 Map,是一个键值对应的无序列表
可以増、删、査、改单个键值对,也可以获取所有的键值对
ZSET(有序集合) 它是一个有序的集合,可以包含字符 串、整数、浮点数、分值(score),元素 的排序是依据分值的大小来决定的 可以增、删、査、改元素,根据分值的范围或者成员 來获取对应的元索
HyperLogLog(基数) 它的作用是计算重复的值,以确定存储的数量 提供基数的运算,不提供返回的功能

这个表格粗略描述了 Redis 的 6 种数据类型,并简要说明了它们的作用,未来我们还会详细介绍它们的数据结构和常用 Redis 命令。此外,Redis 还支持一些事务、发布订阅消息模式、主从复制、持久化等作为 Java 开发人员需要知道的功能。

 

String(字符串)

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

常用命令:set、get、decr、incr、mget等。

注意:一个键最大能存储512MB。

 

Hash(哈希)

Redis hash 是一个键值(key=>value)对集合;是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

每个 hash 可以存储 232 -1 键值对(40多亿)。

常用命令:hget、hset、hgetall等。

应用场景:存储一些结构化的数据,比如用户的昵称、年龄、性别、积分等,存储一个用户信息对象数据。

 

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

list类型经常会被用于消息队列的服务,以完成多程序之间的消息交换。

常用命令:lpush、rpush、lpop、rpop、lrange等。

列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

 

Set(集合)

Redis的Set是string类型的无序集合。和列表一样,在执行插入和删除和判断是否存在某元素时,效率是很高的。集合最大的优势在于可以进行交集并集差集操作。Set可包含的最大元素数量是4294967295。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

应用场景:

1、利用交集求共同好友。

2、利用唯一性,可以统计访问网站的所有独立IP。

3、好友推荐的时候根据tag求交集,大于某个threshold(临界值的)就可以推荐。

常用命令:sadd、spop、smembers、sunion等。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

 

 

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

sorted set是插入有序的,即自动排序。

常用命令:zadd、zrange、zrem、zcard等。

当你需要一个有序的并且不重复的集合列表时,那么可以选择sorted set数据结构。

应用举例:

(1)例如存储全班同学的成绩,其集合value可以是同学的学号,而score就可以是成绩。
(2)排行榜应用,根据得分列出topN的用户等。

 

 

 

以上是关于Redis 数据类型的主要内容,如果未能解决你的问题,请参考以下文章

redis数据类型和应用场景

Redis的各数据类型的内存占用

redis数据类型是啥?

Redis5数据类型6-Stream

redis基本数据类型

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