Redis数据类型详解
admin
2024-01-22 01:00:56
0

官方文档

https://redis.io/docs/data-types/

五种基础数据类型

String

简介

Redis 字符串存储字节序列,包括文本、序列化对象和二进制数组。因此,字符串是最基本的 Redis 数据类型。它们通常用于缓存,但它们支持额外的功能,使您也可以实现计数器和执行按位运算。

结构存储的值

可以是字符串、整数或浮点数

结构的读写能力

对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作;

参考命令

https://redis.io/commands/?group=string

实战场景

1.缓存

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

2.计数器

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

3.分布式锁

setNX命令实现

Lists

简介

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

参考命令

https://redis.io/commands/?group=list

实战场景

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

sets

简介

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

参考命令

https://redis.io/commands/?group=set

应用场景

1.跟踪唯一项目(例如,跟踪访问给定博客文章的所有唯一 IP 地址)。
2.表示关系(例如,具有给定角色的所有用户的集合)。
3.执行常见的集合运算,例如交集、并集和差集。
4.标签(tag),给用户添加标签,或者用户给消息添加标签,这样有同一标签或者类似标签的可以给推荐关注的事或者关注的人。
5.点赞,或点踩,收藏等,可以放到set中实现

hashes

简介

Redis 哈希是结构化为字段值对集合的记录类型。您可以使用散列来表示基本对象并存储计数器分组等。

参考命令

https://redis.io/commands/?group=hash

使用场景

缓存: 能直观,相比string更节省空间,的维护缓存信息,如用户信息,视频信息等

sorted sets(ZSet)

简介

Redis 有序集合和集合一样也是。string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合实现的方式

1.压缩链表

ziplist是为了提高存储效率而设计的一种特殊编码的双向链表。它可以存储字符串或者整数,存储整数时是采用整数的二进制而不是字符串形式存储。它能在O(1)的时间复杂度下完成list两端的push和pop操作。但是因为每次操作都需要重新分配ziplist的内存,所以实际复杂度和ziplist的内存使用量相关

2.跳跃表(zSkiplist)

跳跃表的性能可以保证在查找,删除,添加等操作的时候在对数期望时间内完成,这个性能是可以和平衡树来相比较的,而且在实现方面比平衡树要优雅,这是采用跳跃表的主要原因。跳跃表的复杂度是O(log(n))。

参考命令

https://redis.io/commands/?group=sorted-set

应用场景

1.排行榜。例如,您可以使用排序集轻松维护大型在线游戏中最高分的有序列表。
2.速率限制器。特别是,您可以使用排序集来构建滑动窗口速率限制器,以防止过多的 API 请求。

Streams

Redis Streams(Redis5.0之后新增)

参考命令

https://redis.io/commands/?group=streams

特殊类型

geospatial

简介

这个功能可以推算地理位置的信息: 两地之间的距离, 方圆几里的人

参考命令

https://redis.io/commands/?group=geo

应用场景

Redis 地理空间索引让您可以存储坐标并进行搜索。此数据结构可用于查找给定半径或边界框内的附近点。

bitmaps(位图)

简介

Redis 位图是字符串数据类型的扩展,可让您将字符串视为位向量。您还可以对一个或多个字符串执行按位运算

参考命令

https://redis.io/commands/?group=bitmap

应用场景

比如:统计用户信息,活跃,不活跃! 登录,未登录! 打卡,不打卡! 两个状态的,都可以使用 Bitmaps!
如果存储一年的打卡状态需要多少内存呢? 365 天 = 365 bit 1字节 = 8bit 46 个字节左右!

bitfields(Redis 位域)

简介

有效地将多个计数器编码为字符串值。位域提供原子获取、设置和递增操作,并支持不同的溢出策略

参考命令

https://redis.io/commands/bitfield/

应用场景

附近的人 ==> 获得所有附近的人的地址, 定位, 通过半径来查询

HyperLogLog(基数统计)

简介

数据结构提供了对大集合的基数(即元素的数量)的概率估计。有关详细信息

参考命令

https://redis.io/commands/?group=hyperloglog

应用场景

这个结构可以非常省内存的去统计各种计数,比如注册 IP 数、每日访问 IP 数、页面实时UV、在线用户数,共同好友数等。

相关内容

热门资讯

电视安卓系统哪个品牌好,哪家品... 你有没有想过,家里的电视是不是该升级换代了呢?现在市面上电视品牌琳琅满目,各种操作系统也是让人眼花缭...
安卓会员管理系统怎么用,提升服... 你有没有想过,手机里那些你爱不释手的APP,背后其实有个强大的会员管理系统在默默支持呢?没错,就是那...
安卓系统软件使用技巧,解锁软件... 你有没有发现,用安卓手机的时候,总有一些小技巧能让你玩得更溜?别小看了这些小细节,它们可是能让你的手...
安卓系统提示音替换 你知道吗?手机里那个时不时响起的提示音,有时候真的能让人心情大好,有时候又让人抓狂不已。今天,就让我...
安卓开机不了系统更新 手机突然开不了机,系统更新还卡在那里,这可真是让人头疼的问题啊!你是不是也遇到了这种情况?别急,今天...
安卓系统中微信视频,安卓系统下... 你有没有发现,现在用手机聊天,视频通话简直成了标配!尤其是咱们安卓系统的小伙伴们,微信视频功能更是用...
安卓系统是服务器,服务器端的智... 你知道吗?在科技的世界里,安卓系统可是个超级明星呢!它不仅仅是个手机操作系统,竟然还能成为服务器的得...
pc电脑安卓系统下载软件,轻松... 你有没有想过,你的PC电脑上安装了安卓系统,是不是瞬间觉得世界都大不一样了呢?没错,就是那种“一机在...
电影院购票系统安卓,便捷观影新... 你有没有想过,在繁忙的生活中,一部好电影就像是一剂强心针,能瞬间让你放松心情?而我今天要和你分享的,...
安卓系统可以写程序? 你有没有想过,安卓系统竟然也能写程序呢?没错,你没听错!这个我们日常使用的智能手机操作系统,竟然有着...
安卓系统架构书籍推荐,权威书籍... 你有没有想过,想要深入了解安卓系统架构,却不知道从何下手?别急,今天我就要给你推荐几本超级实用的书籍...
安卓系统看到的炸弹,技术解析与... 安卓系统看到的炸弹——揭秘手机中的隐形威胁在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。...
鸿蒙系统有安卓文件,畅享多平台... 你知道吗?最近在科技圈里,有个大新闻可是闹得沸沸扬扬的,那就是鸿蒙系统竟然有了安卓文件!是不是觉得有...
宝马安卓车机系统切换,驾驭未来... 你有没有发现,现在的汽车越来越智能了?尤其是那些豪华品牌,比如宝马,它们的内饰里那个大屏幕,简直就像...
p30退回安卓系统 你有没有听说最近P30的用户们都在忙活一件大事?没错,就是他们的手机要退回安卓系统啦!这可不是一个简...
oppoa57安卓原生系统,原... 你有没有发现,最近OPPO A57这款手机在安卓原生系统上的表现真是让人眼前一亮呢?今天,就让我带你...
安卓系统输入法联想,安卓系统输... 你有没有发现,手机上的输入法真的是个神奇的小助手呢?尤其是安卓系统的输入法,简直就是智能生活的点睛之...
怎么进入安卓刷机系统,安卓刷机... 亲爱的手机控们,你是否曾对安卓手机的刷机系统充满好奇?想要解锁手机潜能,体验全新的系统魅力?别急,今...
安卓系统程序有病毒 你知道吗?在这个数字化时代,手机已经成了我们生活中不可或缺的好伙伴。但是,你知道吗?即使是安卓系统,...
奥迪中控安卓系统下载,畅享智能... 你有没有发现,现在汽车的中控系统越来越智能了?尤其是奥迪这种豪华品牌,他们的中控系统简直就是科技与艺...