Redis基础

 一、什么是Redis

     Redis是一个基于内存的 key-value 键值存储的、可持久化的数据库,并且提供了非常丰富的数据结构,包括string字符串、list(链表)、set(集合)和zset(有序集合)。每种数据结构都是为了解决特定问题而设计的,适用不同的场景。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。同时还支持非常丰富的功能特性。

二、Redis支持的数据结构

1、字符串(Strings)

     字符串存储字符串类型的值,它可以存储任意类型的数据,包括数字、文本、序列化的对象等。Redis中的字符串最大可以存储512MB的数据。存储格式为:key:value键值对。字符串的使用场景包括:缓存、计数器、限流、分布式锁、会话管理。

2、哈希表(Hashes)

   哈希表存储字段和对应值的映射,应用场景如存储对象。Redis哈希类型的内部编码有两种:

  1. ziplist(压缩列表)2、hashtable(字典)

3、列表(Lists):存储有序的字符串列表。

    Redis List类型是一个有序的字符串列表,支持在列表的头部或尾部添加元素,也支持在列表任意位置插入或删除元素。非常适合以下场景:消息队列、时间序列、排行榜、计数器、最近访问记录。Redis List类型内部编码有两种,分别是ziplist和linkedlist。

4、集合(Sets):存储不重复的字符串集合。

   Redis Set(集合)是一个无序的字符串集合,其中每个元素都是唯一的,不允许重复。Redis Set类型的使用场景包括:标签系统、好友关系、共同好友、订阅关系。Redis Set类型的内部编码有:intset(整数集合)、hashtable(字典)。


5、有序集合(Sorted Sets):

   类似集合,但每个元素都关联一个分数,可以按分数排序。Redis中的Zset(有序集合)是一个键值对集合,其中每个元素都关联一个分值(score),通过分值进行排序,可以看作是一个字典(dict)和一个跳跃列表(skip list)的混合体,它可以存储多个相同的元素,但每个元素必须有一个唯一的score值。Redis Zset是一种有序集合,其使用场景主要包括以下几个方面:排行榜、最近访问记录、计数器。Redis Zset的内部编码有 ziplist编码、skiplist编码。

6. Geo(地理位置)

Redis Geo(地理位置)是一个键值对集合,其中每个元素都包含一个经度和纬度,可以用于存储地理位置信息并支持基于位置的搜索。Redis Geo类型的使用场景如下:位置服务、车辆监控、物流配送、电商推荐、游戏地图、社交应用。 Redis Geo类型内部使用zset来存储地理位置信息,其中元素的score值为经度,member值为经纬度组合的字符串。在使用GEORADIUS和GEORADIUSBYMEMBER命令搜索元素时,Redis会构建一个跳跃表,以实现高效的搜索。

7. HyperLogLog(基数统计)

Redis HyperLogLog(基数统计)是一种基于概率统计的数据结构,用于估计大型数据集合的基数(不重复元素的数量),以及对多个集合进行并、交运算等。HyperLogLog的优点是可以使用极少的内存空间,同时可以保证较高的准确性。每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。HyperLogLog的使用场景包括以下几个方面:用户去重、网站UV统计、广告点击统计、数据库查询优化;。 Redis HyperLogLog类型的内部编码使用的"稀疏矩阵"和”稠密矩阵“。

8. Bitmaps(位图)

  Redis Bitmaps(位图)是一种紧凑的数据结构,可以用于表示一个只有0和1的数组。位图可以用于高效地存储大规模的布尔值,以及进行位运算、位图图形化等操作。Redis Bitmaps适用于需要高效地存储大规模的布尔值,并进行位运算、统计等操作的场景。 Redis Bitmaps类型的内部编码使用了一种称为“压缩位图”的数据结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值