天增的博客
首页
博客
  • 分布式解决方案
  • Java并发工具包
  • redis
  • LeetCode
  • 系统设计
  • JVM体系
Github (opens new window)
Rss (opens new window)
  • zh-CN
  • en-US
首页
博客
  • 分布式解决方案
  • Java并发工具包
  • redis
  • LeetCode
  • 系统设计
  • JVM体系
Github (opens new window)
Rss (opens new window)
  • zh-CN
  • en-US
  • redis
  • Redis为什么这么快
    • redis单线程的问题
  • Redis基本数据结构
    • String的底层实现
    • List的底层实现
    • Hash的底层实现
    • Set的底层实现
    • ZSet的底层实现
  • Redis分布式缓存
    • 缓存击穿
    • 缓存穿透
    • 缓存雪崩
    • 缓存预热
  • Redis的分布式锁
    • 看门狗模式
    • Redlock
  • Redis集群
    • Redis数据淘汰策略
    • redis持久化
    • Redis数据删除策略
  • topic
  • redis
  • Redis基本数据结构
2022-04-28
目录

Redis基本数据结构

# Redis基本数据结构

redis提供了5种常用的数据结构。

# 常用的

已经涵盖了开发过程中的绝大多数情况

下面列举的应用场景是包括但不限于

# string

字符串是最基本的Redis值。Redis字符串是二进制安全的,这意味着Redis字符串可以包含任何类型的数据,例如JPEG图像或序列化的Ruby对象。 字符串的长度最大为512兆字节。

内部的实现是通过 SDS(Simple Dynamic String )来存储的。SDS 类似于 Java 中的 ArrayList,可以通过预分配冗余空间的方式来减少内存的频繁分配。

应用场景:

  • 分布式锁

  • 缓存功能

  • 利用自增的API作为原子计数器,统计阅读量,点赞数

  • Web集群的session

  • 分布式系统全局序列号

# hash

类似Map的一种结构.场景单一 应用场景:

  • 电商购物车

# list

有序列表。存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的东西。

应用场景:

  • 微博和公众号的消息流
  • 商品评论,文章列表或者数据分页展示的应用。
  • 消息队列:Redis的链表结构,可以轻松实现阻塞队列,可以使用左进右出的命令组成来完成队列的设计。比如:数据的生产者可以通过Lpush命令从左边插入数据,多个数据消费者,可以使用BRpop命令阻塞的“抢”列表尾部的数据。

# set

会自动去重的无序集合。

应用场景:

  • 抽奖(从集合中随机弹出一个元素,元素出一个删一个)
  • 微信朋友圈点赞、收藏、标签
  • 微信微博关注模型

# zset

会自动去重的有序集合。

应用场景:

  • 抖音微博热搜
  • 商品销售榜,根据销售量进行排行
  • 用Sorted Sets来做带权重的队列

基于上面的五种结构,还提供了几种基于上面结构的扩展。

# 扩展结构

# bitmap

基于String类型扩展出来的数据结构,按照Bit位来存储信息

应用场景:

  • 布隆过滤器

# hyperloglog

提供不精确的去重计数功能,适合大规模数据的去重统计

应用场景:

  • 亿级别的UV统计

# GEO

用于保存地理位置信息,并提供了位置距离计算或者根据半径计算的API。

还有不常用的扩展功能

# 扩展功能

# pub/sub

提供了简单的消息队列,不常用,用的最多的还是mq

# pipeline

像是Linux的管道

# Lua 脚本

特点是能够原子性执行

# 事务

Redis 提供的不是严格的事务,Redis 只保证串行执行命令,并且能保证全部执行,但是执行命令失败时并不会回滚,而是会继续执行下去。

‍

最近更新
01
以 root 身份启动 transmission-daemon
12-13
02
Debian系统安装qbittorrent-nox
12-09
03
LXC Debain12安装zerotier并实现局域网自动nat转发
07-29
更多文章>
Theme by Vdoing | Copyright © 2015-2024 天增 | 苏ICP备16037388号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式