数据结构论坛

首页 » 分类 » 问答 » Redis数据类型大全5种基础数据类
TUhjnbcbe - 2023/6/1 21:41:00

一、“5种基础”数据类型

Redis有望所有的key(键)都是字符串。我们在谈基础数据结构时,讨论的是存储值的数据类型,主要包括常见的5种数据类型,分别是:String、List、Set、Zset、Hash

1.1Redis数据结构简介

Redis基础文章非常多,关于基础数据结构类型,我推荐你先看下官方网站内容(opensnewwindow),然后再看下面的小结

首先对redis来说,所有的key(键)都是字符串。我们在谈基础数据结构时,讨论的是存储值的数据类型,主要包括常见的5种数据类型,分别是:String、List、Set、Zset、Hash。

1.2基础数据结构详解

内容其实比较简单,我觉得理解的重点在于这个结构怎么用,能够用来做什么?所以我在梳理时,围绕图例,命令,执行和场景来阐述

1.2.1String字符串

String是redis中最基本的数据类型,一个key对应一个value。

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

图例

下图是一个String类型的实例,其中键为hello,值为world

命令使用

命令执行

.0.0.1:sethelloworldOK.0.0.1:gethello"world".0.0.1:delhello(integer)1.0.0.1:gethello(nil).0.0.1:getcounter"2".0.0.1:incrcounter(integer)3.0.0.1:getcounter"3".0.0.1:incrbycounter(integer).0.0.1:getcounter"".0.0.1:decrcounter(integer).0.0.1:getcounter""

实战场景

缓存:经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,redis作为缓存层,mysql做持久化层,降低mysql的读写压力。

计数器:redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源。

session:常见方案springsession+redis实现session共享

1.2.2List列表

Redis中的List其实就是链表(Redis用双端链表实现List)。

使用List结构,我们可以轻松地实现最新消息排队功能(比如新浪微博的TimeLine)。List的另一个应用就是消息队列,可以利用List的PUSH操作,将任务存放在List中,然后工作线程再用POP操作将任务取出进行执行。

图例

命令使用

使用列表的技巧

lpush+lpop=Stack(栈)

lpush+rpop=Queue(队列)

lpush+ltrim=CappedCollection(有限集合)

lpush+brpop=MessageQueue(消息队列)

命令执行

.0.0.1:lpushmylist12lllsmem(integer)5.0.0.1:lrangemylist0-11)"mem"2)"ls"3)"ll"4)5)"1".0.0.1:lindexmylist-1.0.0.1:lindexmylist10#index不在mylist的区间范围内(nil)

实战场景微博

TimeLine:有人发布微博,用lpush加入时间轴,展示新的列表信息。

消息队列

1.2.3Set集合

Redis的Set是String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

图例

命令使用

命令执行

.0.0.1:saddmysethaohao1xiaohaohao(integer)3.0.0.1:smembermyset1)"xiaohao"2)"hao1"3)"hao".0.0.1:sismembermysethao(integer)1

实战场景

标签(tag),给用户添加标签,或者用户给消息添加标签,这样有同一标签或者类似标签的可以给推荐

1
查看完整版本: Redis数据类型大全5种基础数据类