目录
Redis的基础数据类型
Redis的基础类型有五种。
-
String
Redis的String(字符串)是最常用的数据类型,可以用来存储如字符串、整数、浮点数、图片(图片的base64编码或图片的路径)、序列化后的对象等。底层是用C语言自定义的SDS。
-
List
List是一个有序的字符串集合,可以从两端压入和弹出数据。列表最多可存储2^32 - 1个元素。底层实现是由双向链表 + ZipList(压缩列表)实现的。
-
Set
Set是一个无序集合并且里面的数据不能重复,适合去重和集合运算,Set的查找,插入和删除都是O(1)复杂度。
-
Zset
Zset也是一个不能有重复元素的集合,但每个元素会关联一个score(分数),通过分数可以进行排序,Zset多应用于排行榜。底层使用跳跃表和哈希表实现的。
-
Hash
Redis中的Hash是一种有哈希表和ZipList实现的,他的存储方式是field和value。类似于Java中的Map<String, Object>。Hash特别适合用于存储对象,如用户信息、商品详情等。
Redis的高级数据类型
bitmaps
bitmaps的值是和二进制一样的,就是只有0和1,可以把他想象成一排的开关。比如
key:zihen value:00011100000111,类似于这种。可以用于签到场景。
命令:SETBIT zihenzzz 4 1 代表着把第四位变成 1。
geo
Geo数据指的是与地理位置相关的数据。简单来说,就是关于“东西在哪里”的数据。它可以描述物体的位置、形状和关系,比如城市的坐标、商店的位置、路线的路径等等。
有主要的三个要素,经度,纬度,和位置名称。
GEOADD zihen 16.85118(经度) 27.1444(维度) zihen(位置名称)
stream(不常用)
这个不太常用,我也不太了解哈,直接用比较官方的话来说了,Redis 的 Stream 是一种强大的数据结构,用于实现消息队列和日志系统等功能。它在 Redis 5.0 中被引入,是一种持久化的消息传递系统,支持多个消费者和消费者组,能够高效地处理消息的发布、订阅和持久化。
hyperloglog
hyperloglog是一个可以用于检查一个数据集里面有多少不重复的数据。比如
- PFADD zihen(key) aaa(value1) aab(value2) 。这是添加命令。
- PFCOUNT zihen ,返回的就是2。
Redis为什么那么快?
纯内存操作
Redis的数据都是存储于内存当中,相比于存储于磁盘当中,访问速度能更快。内存的读写速度远超过磁盘I/O。
特别的数据结构
Redis的底层实现的数据结构都是为了快速读写而生的,比如SDS、跳跃表、ZipList等。保持大部分都能达到O(1)复杂度。
单线程
Redis几乎所有的操作都是单线程,避免多线程带来的上下文切换。单线程模型使得Redis不需要考虑各种锁的问题,减少了性能消耗。但是持久化,异步删除等等是异步线程处理,但这不影响性能。
IO多路复用
Redis 是一个高性能的内存数据库,其高性能的关键之一就是使用了 I/O 多路复用 技术。I/O 多路复用允许 Redis 同时处理多个客户端连接,而无需为每个连接创建一个独立的线程或进程,从而大大提高了系统的并发能力和资源利用率。
Redis如何持久化?
RDB
AOF
本文相关图片资源来自于网络中,如有侵权请联系删除!