当前位置: 首页 > news >正文

Redis知识点汇总

Redis快速回忆

核心数据结构

1653819943577-be84da5a-cc06-4787-a49c-93cbe5b714f6.png

字符串

小于1M,成倍扩容,大于1M,就每次扩容1M,最大512M。

1653819956792-4e08345e-75f4-40d2-a546-3040d959bb44.png

1653834428287-1b1842a9-e5ef-45d9-8583-47f30955718a.png

1653834914489-e6461ab8-5b43-4d21-b268-9fdb7c4d6544.png

哈希

1653835342785-b4a0e539-fc73-4e02-b778-0b79f889da51.png

1653835529234-2197c052-0332-4c60-8f62-098ea4f87ade.png

1653835542377-bb0c6118-e82d-4d8a-9055-c6ec390ecea9.png

购物车

1653835979517-48136e0a-cc7e-45a1-a883-dc030f3ac29f.png

1653836084527-8521b7b0-4fb8-409a-9976-e22efaad57d8.png

列表

1653836223018-e9125b14-d202-4e4a-af02-63022ae7ea82.png

1653836376114-891e0c8c-5e5e-4112-a944-d5aa2f31f26a.png

1653836455552-52980928-d077-4c9b-974b-734c762f6598.png

集合

1653836552854-4d249a73-6313-465d-aaee-45df6b4c7b51.png

1653836664882-24e8c0c7-cec6-4a3a-b608-1fb85cf21edf.png

1653836755436-54b0994e-6e9b-4b5c-9109-f22dfbe3880e.png

1653836955935-7836b042-641f-4092-a2e5-fe3d5a398fc6.png

有序集合

1653837057243-5e468dbe-2c78-4eff-8f46-9202df400d5e.png

1653837085249-3223505d-b932-479d-8f62-348f09323af6.png

1653837247894-4b78032f-7894-4c4a-957e-cc113f783681.png

位图 Bitmap

虽然基于String类型,但是可以直接操作位

1653837330153-34ab6b3b-b844-47eb-9fcb-54cb20901c16.png

1653837422872-5de77adf-1f72-425c-a0ac-eb6773e43c38.png

一个字节8位表示一个用户是数据

1653837679535-1bfb8d09-9bae-4fa0-bca5-eb05268a1177.png

使用的时候把握住偏移量即可

1653837803286-891d6970-7d03-48d2-ac6b-ce93df1adb08.png

集成springboot

1653838883573-5c68975d-c40d-4910-89dc-c1d362d3e189.png

一般都会自定义,JDK的序列化方式存的数据不能直接查看

1653838866381-780b1a73-e8f6-4511-b65e-8857bb6a5b0a.png

1653838558249-8c984322-4ed7-4123-ae18-09a5c04528c8.png

1653838651602-bdd7d5fe-e058-400c-8f06-c194f50bcbd1.png

1653838606990-6c4d3b33-ca98-4e6d-a46f-6f8ecf42d0f4.png

1653838598152-df8886b2-3f0f-4337-806d-036f081f1297.png

1653838566572-916adb55-0a2e-4be6-90c3-364a29d91c12.png

核心原理

持久化机制

持久化命令

bgsave 是异步的

save 是同步的

1653839740073-db190f96-5ec1-48d1-8f25-aa024b5de8ea.png

RDB

1653839289599-7462314c-7216-4064-a30d-0187faa300e0.png

1653839429593-61b6a4cf-789f-4321-826e-e7affe3f8fc5.png

1653839835160-82e62077-b8ef-4684-948b-ec316563b876.png

AOF

1653839866836-2664222a-653a-4d49-b3f3-eb1c996bf91a.png

1653840157491-568c761f-1fe8-4bb6-aacb-ec478ecb9096.png

1653840199779-a5c1293f-cd45-4720-8307-52771dabad0a.png

1653840328495-1ac5b6ba-a098-4e3e-98d6-3e060ae4d6aa.png

1653840365723-00ff7089-0032-4b39-a961-11793cbed3e1.png

1653840675446-13578eca-6794-4aa6-89cc-8aa82ce72dc1.png

1653840699166-459a87c3-f32b-4e0a-9ac2-083b0dcbebe3.png

1653840749335-2d69cd92-e0cd-4cdd-a2c8-1929f377af27.png

混合模式

1653840761040-a08bf111-0121-4ebe-8ee1-349ca91459bc.png

快照的时候,增量的数据使用AOF的方式

1653840926810-c78b9327-38fd-4664-9f9f-0bed55a1d8af.png

1653840996746-7f8767be-dfbd-4134-a65c-e02391a948b5.png

分布式锁

演进过程

本地锁和分布式锁

减库存的时候多线程

1653841121380-3e466c09-1f6d-447e-b00d-58381c9c6b40.png

1653841179765-da8da396-d5dd-4e4e-9446-50a807713528.png

无法释放锁的情况处理

出现异常的话,就无法释放锁

1653841217906-925bb0fa-73aa-4bd1-8190-f42bfa2c540f.png

服务器断了,下面的锁还是无法释放

1653841270243-6509888f-0fef-44fe-8fdc-044c664aa245.png

设置超时时间,但是不能不是原子性操作

1653841293582-26485053-1228-4349-888c-c2045a102b15.png

合并为原子性操作,但是自己的锁可能被别人释放,因为别人的锁可能过期没了

1653841329041-2310b7cb-f154-4703-b2b1-55f26e8363de.png

自己的锁被别人删除怎么办

解决办法一:值相同的时候才可以删除掉

1653841562984-6c4f744a-e355-433b-ae68-e470080f014e.png

解决办法二:给锁续命,防止线程还在执行的时候锁就失效

1653841856591-7ac611bf-7250-4fa1-9e46-c55157151625.png1653841880298-d4dbd3e4-a292-4658-8c25-aabd726fc617.png

redission

1653842026038-1bb36cd7-11c3-4e64-b038-1af950442fa4.png

看门狗机制

1653842054020-018f0b14-f368-4fe6-974d-7f40a1c482bb.png

看门狗作用:每隔十秒检测,如果锁还有说明没有手动释放,说明线程还没有执行完成,就给锁自动续命三十秒。

redission极端情况下的锁丢失

分布式锁的丢失:Redis 是一个AP模型,主从数据一定会有不一致的情况。主库崩了,从库的锁还没有同步的时候,这个时候锁就丢失了。

解决方案:ZK就是CP模型,创建一个锁的话一定是不会丢失的。

http://www.hskmm.com/?act=detail&tid=29713

相关文章:

  • 乐理 -05 乐音 乐级
  • Redis实现分布式锁以及Redis客户端比较
  • 一致性哈希原理
  • 缓存和数据库数据的一致性
  • Redis不同数据类型代码场景实践
  • 布隆过滤器
  • Redis持久化
  • 上下文与this指向
  • [数据库] Microsoft SQL Server 数据库
  • 02 | 在环境中使用Airsim插件
  • 01 | UE5.3+Airsim+VS2022+Windows10(无人机仿真环境)
  • 对于使用ant design组件库的疑问
  • 阅读《构建之法》提出的5个问题
  • 提示工程介绍
  • DshanPI-A1 RK3576 gstreamer播放16路视频与硬件加速
  • freertos的调度过程
  • 「2025 高一上学期笔记 / 日记」
  • 「2025 暑假日记 / 笔记」
  • 2025羊城杯初赛Misc-writeup
  • 将 GPU 级性能带到企业级 Java:CUDA 集成实用指南
  • 我的个人空间
  • 2025.10.12总结
  • Windows 文件管理器中重复的 OneDrive 图标原因与解决方案
  • 10.12总结
  • 【Python】pandas的向量化操作
  • docker部署doris
  • ES客户端8版本与ES服务端7版本的兼容问题
  • 使用Sender和io_uring改造Webserver
  • 乐理 -04 打拍子
  • 1012