多个项目共用同一个redis_【进阶之路】Redis基础知识一篇就满足

本文介绍了Redis的基础知识,包括String、Hash、List、Set、Zset等五种数据结构及其适用场景。此外,还讨论了Redis的分布式锁实现、集群、持久化策略(RDB与AOF)以及数据删除策略。最后提到了Redis在实现分布式锁时的不足及RedLock的解决方案。
摘要由CSDN通过智能技术生成

导言

大家好,我是练习java两年半时间的南橘,下面是我的微信,需要之前的导图或者想互相交流经验的小伙伴可以一起互相交流哦。

这篇文章的出现,首先要感谢一个人三太子敖丙 ,就是他的文章让我发现,原来Redis的知识如此的多姿多彩。恩恩,他的文章,我是期期都看

这是这篇文章的思维导图,因为用的是免费版的软件,所以有不少水印,需要原版的可以问我要

55ff8cffa00b09c562953121400e9a40.png

Redis篇,因为时间和篇幅的原因,并没有一次性写完,于是乎,分成了上下两篇,没有看过上半部分的小伙伴可以去看一下~

一、Redis基础知识

要学习Redis基础知识,首先要知道Redis的五种基础数据结构,我们先从这五种数据结构的使用场景和一些工作中(面试中)容易出现的点来介绍

1、String 字符串类型

是redis中最基本的数据类型,一个key对应一个value

适用情况:

1、缓存:经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,redis作为缓存层,mysql做持久化层,降低mysql的读写压力。

2.计数器:redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源。

3.session:通过redis实现session共享

2 、Hash (哈希)

对于Java中的HashMap,本身是一种KV对结构,如 value={ {field1,value1},......fieldN,valueN}},非常好理解

适用情况:

HashMap作为缓存,相比于string更节省空间的维护缓存信息,适合存储如用户信息,视频信息等

底层用字典dict实现

3 、List (链表)

Redis 的链表相当于 Java 语言里面的 LinkedList

适用情况:

1、List在Redis中既可以做队列也可以做栈使用,它的插入和删除操作非常快,时间复杂度为 0(1),但是索引定位很慢,时间 复杂度为 O(n)。

2、可以作为微博的时间轴,有人发布微博,用lpush加入时间轴,展示新的列表信息。

3、可以实现阻塞队列,左进右出的队列组完成设计

list底层使用quickList(快速链表)实现

在早期的设计中, 当列表对象中元素的长度比较小或者数量比较少的时候,采用ziplist来存储,当列表对象中元素的长度比较大或者数量比较多的时候,则会转而使用双向列表linkedlist来存储。

这两种存储方式都各有优缺点

  • 双向链表linkedlist便于在表的两端进行push和pop操作,在插入节点上复杂度很低,但是它的内存开销比较大。首先,它在每个节点上除了要保存数据之外,还要额外保存两个指针;其次,双向链表的各个节点是单独的内存块,地址不连续,节点
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值