个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~
redis十大数据类型
- 一、redis字符串(String)
- 二、reids列表(List)
- 三、redis哈希表(Hash)
- 四、redis集合(Set)
- 五、redis有序集合(ZSet)
- 六、redis地理空间(GEO)
- 七、redis基数统计(HyperLoglog)
- 八、redis位图(bitmap)
- 九、redis位域(bitfield)
- 十、redis流(Stream)
一、redis字符串(String)
- String是redis最基本的类型,一个key对应一个value。
- String类型是二进制安全的,可存放任何数据,包括图片、序列化对象等。
- 一个redis中的字符串value值大小最多512M。
二、reids列表(List)
- redis列表是简单的字符串列表,可添加元素至表头或表尾。
- 底层实际是个双端链表,最多可包含2^32-1个元素(4294967295)
三、redis哈希表(Hash)
- redis hash 是一个String类型的field(字段)和value(值)的映射表。
- redis中每个hash可以存储2^32-1个键值对(40多亿)
四、redis集合(Set)
- Redis的Set是String类型的无序不可重复集合,集合对象的编码可以是intset或者hashtable
- Redis中Set集合是通过哈希表实现的,添加、删除、查找的复杂度都是O(1)
- 集合中最多存放2^32-1个元素
五、redis有序集合(ZSet)
- Zset和set一样都是String类型的不可重复集合,但是有序的。
- ZSet集合是通过哈希表实现的,添加、删除、查找的复杂度都是O(1)
- 每个元素都会关联一个double类型的分数,以此为集合成员进行由小到大的排序。
六、redis地理空间(GEO)
- Redis在3.2版本以后增加了地理位置的处理
- Redis GEO主要用于存储地理位置信息,并对存储的选项进行操作:
- 1.添加地理位置的坐标
- 2.获取地理位置的坐标
- 3.计算两个地理位置间的距离
- 4.根据用户给董定的经纬度坐标来获取指定范围内的地理位置集合。
七、redis基数统计(HyperLoglog)
- HyperLoglog 是用来做基数统计的算法,优点在于当输入元素的数量或者体积非常大时,计算基数所需的空间总是固定且很小的。
- Redis中每个HyperLoglog键只需要花费12KB内存,就可以计算接近2^64个不同元素的基数。
- 但,HyperLoglog只会根据输入的元素来计算基数,无法存储输入元素本身,所以无法像集合那样返回输入的各个元素。
八、redis位图(bitmap)
- 由0和1状态表现的二进制位的bit数组
九、redis位域(bitfield)
- 通过bitfield命令可以一次性操作多个bit位域(连续的多个bit位),它会执行一系列操作并返回一个响应数组,这个数组中的元素对应参数列表中的相应操作的执行结果。
十、redis流(Stream)
- Redis Stream 是Redis5.0新增的数据结构
- 主要用于消息队列(MQ:Message Queue),Redis本身是一个Redis发布订阅(pub/sub)来实现消息队列的共嗯,但它有个缺点是消息无法持久化,出现网络断开,Redis宕机时消息会被丢弃。而Redis Stream提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。