Redis 10大数据类型(入门篇)

本文详细介绍了Redis中的各种数据类型,如字符串、列表、哈希、集合、有序集合、地理位置、基数统计、位图和位域,以及它们的应用场景和性能特性。特别提到了Redis的命令使用注意事项和新加入的流数据结构在消息队列中的应用。
摘要由CSDN通过智能技术生成

官方Link :Understand Redis data types | Redis

这里所说的类型都是value,key的类型都是字符串。

Redis 命令大全(英文):Commands | Redis

Redis命令大全(中文):Redis 命令参考 — Redis 命令参考

命令不区分大小写,但是key是区分大小写的。

1. redis字符串(String)

string是redis最基本的类型,一个key对应一个value。

string类型是二进制安全的,意思是redis的string可以包含任何数据,比如序列化的对象。

最多可以是512M。

del key     是阻塞的。

unlink key 非阻塞的。

del bigkey 的时候,当这个key很大,在它没有删除干净的时候这个del不会返回,一直阻塞。如果并发很大的话,就会阻塞,性能急剧下降。

适用场景:点赞。

2. List

是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)

它的底层实际是个双端列表,最多可以包含2^32-1个元素(支持这么多,但不建议在内存中保存这么多)

3. Hash

hash是一个string类型的    field(字段)和value(值)  的映射表,特别适合存储对象。

redis中每个hash可以存储2^32-1键值对(40多亿)

4.Set

是string类型的无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是intset或者是hashtable。

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

集合中最大的成员是为2^32-1。

5. redis有序集合 zset(sorted set)

和set一样,也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行排序的。

zset的成员是唯一的,但是分数(score)确实可以重复的。

zset集合是通过哈希表实现的,所以添加 删除 查找的复杂度都是O(1)。最大成员数是2^32-1。

6.redis地理空间(GEO)

主要用于存储地理位置信息,并对存储的信息进行操作,包括:

  • 添加地理位置的坐标
  • 获取地理位置的坐标
  • 计算俩个位置之间的距离
  • 根据用户给定的经纬度坐标来获取指定范围内的地理位置集合

是zset的子类

 7.  redis基数统计(HyperLogLog)

是用来做基数(不重复的数据)统计的算法,HyperLogLog的有点是,在输入元素的数量或者体积非常大时,计算基数所需的空间总是固定且是很小的。

在redis里面每个hyperLogLog键只需要花费12KB内存,就可以计算2^64个不同元素的基数,这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为HyperLogLog只会根据输入元素来计算基数,而不会存储输入元素本身,所以HyperLogLog 不能像集合那样,返回输入的各个元素。

有0.81的误差。

8.redis位图(bitmap)

由0和1状态表现的二进制位的bit数组。

一个字节(一个byte)=8位

上图由许多小格子组成,每一个格子里面只能放1或者是0,每一个小格子就是一个bit。

9.redis位域(bitfield)

通过bitfield命令可以一次性操作多个比特位(连续的多个比特位),它会执行一些列操作并返回一个响应数组,这个数组中的元素对应参数列表中的相应操作的执行结果。

10.redis流(Stream)

Strem是Redis5.0版本新增加的数据结构。

主要用于消息队列(MQ 、Message Queue),Redis本身是有一个发布订阅(pub/sub)来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis宕机等,消息就会被丢弃。

简单来说发布订阅可以分发消息,但无法记录历史消息。而redis stream提供了消息的持久化和主备赋值功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,环能保证消息不丢失。但是在实际工作中,我认为专业的事交给专业的消息中间件去做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值