自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 问答 (1)
  • 收藏
  • 关注

原创 尚硅谷redis7 99 springboot整合redis之连接集群

但是在springboot中却没有动态感知道redisCluster的最新集群消息,所以找不到我们要检索的数据。原因是:SpringBoot 2.X版本,Redis默认的连接池采用 Lettuce,当Redis集群节点发生变化后,Letture默认是不会动态地刷新节点拓扑。#支持集群拓扑动态感应刷新,自适应拓扑刷新是否使用所有可用的更新,默认false关闭。1排除lettuce采用jedis(不推荐)2重写连接工厂实例(极度不推荐)3 刷新节点集群拓扑动态感应。

2025-05-31 20:25:07 406

原创 尚硅谷redis7 93-97 springboot整合reids之总体概述

jedis和Lettuce都是Redis的客户端,它们都可以连接Redis服务器,但是在SpringBoot2.0之后默认都是使用的Lettuce这个客户端连控Redis服务器。// redisTemplate.opsForValue() 获取操作 Redis 字符串(String)类型数据的操作接口。// 有两个一个是系统默认的,一个是在Config中手动配置的,在这里由于@Resouce所以使用手动配置的。// 确保 RedisTemplate 的所有配置都已经设置完成,并进行必要的初始化。

2025-05-31 15:42:45 1260

原创 尚硅谷redis7 90-92 redis集群分片之集群扩容

不在同一个slot槽位下的多键操作支持不好,通识占位符登场mget k1 k2 k3 //在集群环境下报错不在同一个slot槽位下的键值无法使用mset,mget等多建操作可以通过{}来定义同一组的概念,使Key中{}内相同内容的键值对放到一个slot槽位去。将3个k整体打包到同一个组z存放到8157这一个槽位上。Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽。集群的每个节点负责一部分hash槽CRC16是由C语言源码编辑的。

2025-05-30 22:14:46 1341

原创 尚硅谷redis7 86 redis集群分片之3主3从集群搭建

Redis集群不保证强一致性,这意味着在特定的条件下,Redis集群可能会丢掉一些被系统收到的写入请求命令。cluster-config-file nodes-6381.conf //声明集群配置文件。此时在6381连接的redis中set k1 v1会重定向到6385连接的redis。集群联通成功后会产生nodes-6381.conf和nodes-6382.conf。cluster-node-timeout 5000 //集群之间的超时时间5s。重新连接,记得加-c,-c的含义:开启客户端的。

2025-05-29 17:06:50 1122

原创 尚硅谷redis7 74-85 redis集群分片之集群是什么

为了在节点数目发生改变时尽可能少的迁移数据将所有的存储节点排列在收尾相接的Hash环上,每个key在计算Hash后会顺时针找到临近的存储节点存放。而当有节点加入或退出时仅影响该节点在Hash环上顺时针相邻的后续节点。优点加入和删除节点只影响哈希环中顺时针方向的相邻的节点,对其他节点无影响。缺点数据的分布和节点的位置有关,因为这些节点不是均匀的分布在哈希环上的,所以数据在进行存储时达不到均匀分布的效果。哈希槽实质就是一个数组,数组[0,2^14-1]形成hash slot空间。

2025-05-29 15:07:28 915

原创 尚硅谷redis7 73 redis哨兵监控之哨兵使用建议

如果新的主节点没有原主节点的最新数据,那么它就会缺失这部分数据。切换过程中,哨兵无法确认所有从节点数据是否和原主节点完全一致。哨兵切换也需要时间,若在这切换的时间中写入数据,则数据丢失。

2025-05-28 22:24:56 228

原创 尚硅谷redis7 70-72 redis哨兵监控之案例实操7

问题:若3个哨兵都宕机了,那谁做转换?这种情况很少出现,因为哨兵的任务就是监控,不存在高并发数据的读取,运行压力不大。实际生产都是不同机房不同服务,很少会出现三个哨兵全挂掉的情况。哨兵可以同时监控多个master,一行一个。在配置文件中,你可以添加多个指令,例如:每个 master 节点都可以是一个独立的 Redis 主从结构,哨兵会分别对它们进行:存活检查故障判断主从切换(failover)

2025-05-28 19:23:45 1180

原创 尚硅谷redis7 63-69 redis哨兵监控之理论简介

master挂了如何办?从机原地待命。此时数据只能读取不能更新。因此需要:吹哨人巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,

2025-05-28 17:05:36 1190

原创 尚硅谷redis7 58-62 主从复制之一主二仆

slave启动成功连接到master后会发送一个sync命令slave首次全新连接master,一次完全同步(全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清除。

2025-05-28 14:02:07 742

原创 尚硅谷redis7 55-57 redis主从复制之理论简介

Redis 主从复制(Master-Slave Replication)是 Redis 提供的一种,可以让一个 Redis 主节点的数据复制到一个或多个从节点,实现等功能。支持读写操作。会将写操作传播到所有从节点。只能读,默认不支持写(除非配置为可写)。会从主节点同步数据,保持一致。主从复制,master以写为主,Slave以读为主.当master数据变化的时候,自动将新的数据异步同步到其它slave数据库。

2025-05-27 16:46:52 1006

原创 尚硅谷redis7 52-54 redis发布订阅之理论简介

订阅:是一种消息通信模式:发送者(PUBLISH)发送消息,订阅者(SUBSCRIBE)接收消息,可以实现进程间的消息传递能干嘛:redis客户端可以订阅任意数量的评到,类似我们微信关注多个公众号。当有新消息通过publish命令发送给频道时,订阅了公众号的人都能收到消息。按照模式批量订阅,订阅一个或多个符合给定模式【指定*号?号之类的】的频道查看订阅与发布系统状态。由活跃频道组成的列表某个频道有几个订阅者1) "news"news有 3 个订阅者,sports。

2025-05-27 15:21:57 373

原创 尚硅谷redis7 49-51 redis管道之理论简介

redis每秒可以承受8万的写操作和接近10万次以上的读操作。每条命令都发送、处理、返回,能不能批处理一次性搞定呢?管道就是把所有命令排成一行,像流水线一样处理。Pipeline是为了解决RTT往返回时,仅仅是将命令打包一次性发送,对整个Redis的执行不造成其它任何影响原生批量命令是原子性(例如:mset,mget),pipeline是非原子性原生批量命令一次只能执行一种命令,pipeline支持批量执行不同命令原生批命令是服务端实现,而pipeline需要服务端与客户端共同完成。

2025-05-27 14:30:48 991

原创 尚硅谷redis7 47-48 redis事务之理论简介

可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入。

2025-05-27 13:49:47 704

原创 尚硅谷redis7 41-46 redis持久化之AOF异常恢复演示

1.使用AOF Redis更加持久:您可以有不同的fsync【写回】策略:根本不fsync、每秒fsync、每次查询时fsync。使用每秒fsync的默认策略。写入性能仍然很棒。fsync是使用后台线程执行的,当没有fsync正在进行时,主线程将努力执行写入,因此您只能丢失一秒钟的写入【最差的情况就是丢失1秒】。2.AOF日志是一个仅附加日志,因此不会出现寻道问题,也不会在断电时出现损坏问题。

2025-05-27 13:04:38 1260

原创 尚硅谷redis7 37-39 redis持久化之AOF简介

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作默认情况下,redis是没有开启AOF(append only file)的。开启AOF功能需要设置配置:appendonly yes当appendonly设置为yes,每当 Redis 收到一个修改数据集的命令(比如 ),它就会将该命令追加到 AOF 文件中

2025-05-26 17:01:41 890

原创 尚硅谷redis7 33-36 redis持久化之RDB优缺点及数据丢失案例

dump.rdb文件在写入和迁移的过程中可能会出现文件破损。首先cd /usr/local/bin 目录中存在redis-check-rdb对于稍微破损的rdb文件,可以用redis-check-rdb修复。

2025-05-26 15:25:30 913

原创 尚硅谷redis7 28-32 redis持久化之理论介绍

RDB(Redis数据库):RDB持久性以指定的时间间隔执行数据集的时间点快照。实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照。这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证。这个快照文件就称为RDB文件(dump.rdb),其中,RDB就是Redis DataBase的缩写。如果服务器挂了,redis缓存数据在重启的时候将会通过硬盘里存储的rgb文件加载回来。

2025-05-26 14:27:09 872

原创 尚硅谷redis7 27-redis10大类型之bitfield

BITFIELD 命令可以将,并对。可以使用该命令对一个有符号的5位整型数的第1234位设置指定值,也可以对一个3f位无符号整型数的第4567位进行取值。类似地,本命令可以对指定的整数进行自增和自减操作,可配置的上溢和下溢处理操作。BITFIELD命令可以在一次调用中同时对多个位范围进行操作;

2025-05-26 09:42:40 1171

原创 尚硅谷redi7 24-26 redis10大类型值Stream

redis5.0之前的痛点。redis消息队列的两种方案:list实现消息队列:List实现方式其实就是点对点的模式。一进一出,不支持一对多模式pub/sub:生产者发布一个消息过来,多个消费者可以处理。例如:公众号,发布者发布一个消息,订阅公众号的人都可以收到。Redis发布订阅(pub/sub)有个缺点就是消息无法持久化。如果出现网络断开、Redis宕机等,消息就会被丢弃。而且也没有Ack机制来保证数据的可靠性,假设一个消费者都没有,那消息就直接被丢弃了。

2025-05-25 00:05:54 702

原创 尚硅谷redis7 23-redis10大类型之GEO

移动互联网时代LBS应用越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、高德地图附近的核酸检查点等等,那这种附近各种形形色色的XXX地址位置选择是如何实现的?地球上的地理位置是使用二维的经纬度表示,经度范围(-180,180],纬度范围(-90,90],只要我们确定一个点的经纬度就可以名取得他在地球的位置。

2025-05-24 20:59:02 830

原创 尚硅谷redis7 22-redis10大类型之hperloglog

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的,并且是很小的。在Redis里面,每个HyperLogLog健只需要花善12KB内存,就可以计算接近2^64个不同元素的基数。但是,因为HyperLogLog只会根据输入元素来计算基数,而不会储存输入元素本身,所以HyperLogLog不能像集合那样,返回输入的各个元素.基数统计:用于统计一个集合中不重复的元素个数,就是对集合去重复后剩余元素的计算。

2025-05-24 20:28:54 336

原创 尚硅谷redis7 20-redis10大类型之bitmap

由0和1状态表现得二进制位的bit数组说明:用String类型作为底层数据结构实现的一种统计二值状态的数据类型位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们称之为一个索引)。Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32=4294967296)

2025-05-24 20:17:03 740

原创 尚硅谷redis7 20-redis10大类型之zset

zset是redis中的有序集合【sorted set】zset就是在set基础上,每个val值前加一个score分数值。之前set是k1 v1 v2 v3现在zset是k1 score1 v1 score2 v2。

2025-05-24 19:46:11 796

原创 尚硅谷redis7 19-redis10大类型之set

set类型:单值多value,且无重复。

2025-05-23 22:37:07 846

原创 尚硅谷redis7 18redis10大类型之hash

hash:KV模式不变,但V是一个键值对。类似于java中的。

2025-05-23 22:03:19 874

原创 尚硅谷redis7 17redis10大类型之list

底层数据结构:一个取端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

2025-05-23 21:40:58 1246

原创 尚硅谷redis7 15-16redis10大类型之string

在官方提供的相关命令文档中 中括号[]中的内容可选,可省略。

2025-05-23 21:12:01 972

原创 尚硅谷redis7 13-14redis10大类型之key操作命令

查看当前库所有的key。类似于mysql中 select * from db_table。

2025-05-23 19:49:17 510

原创 黑马redis-实验篇2报错汇总

1.Incompatible types. Found: 'java.lang.Long', required: 'java.lang.Integer' 将Integer count = query().eq("user_id", userId).eq("follow_user_id", followUserId).count();1.将所有的import javax.servlet.http.HttpServletRequest;不需要特意的找这些包,运行的时候看哪个报错就改哪个就行。

2025-05-23 19:22:04 577

原创 尚硅谷redis7-11-redis10大类型之总体概述

前提:我们说的数据类型一般是value的数据类型,key的类型都是字符串。

2025-05-22 20:00:04 902

原创 尚硅谷redis7 03-05 redis能干嘛

1.硬件:mysql的存储空间在硬盘,为了提高查询效率,redis的存储空间位于内存。2.查询:mysql的查询通过检索关键字进行条件过滤,因此redis应用key-value结构存储【这样查的快】。3.关系的处理:mysql查得慢也许是因为主键和外键的约束,因此redis没有这些约束。此后的查询中,在查询mysql之前,先访问redis。若在redis中访问不到,再去访问mysql,然后再把mysql中查询的数据写入redis。

2025-05-22 17:11:46 756

原创 单链表的一些疑惑

作为自己的笔记记录一下单链表的建立typedef struct Node{ ElemType data; struct Node *next;}Node;typedef struct Node *LinkList;Status InitList(LinkList *L){ *L=(LinkList)malloc(sizeof(Node)); /* 产生头结点,并使L指向此头结点 */ if(!(*L)) /* 存储分配失败 */...

2021-09-14 16:43:18 240

原创 指针基基础

指针&取地址符:取变量占据的内存地址 *指针运算符:取出指针指向的地址存储的内容定义一个指针: int *p;指针的赋值:指针运用的前提是给指针赋值,指针存储的是其要指向的地址。&p:指针的地址P:指针要指向变量的地址*p:指针指向变量的存储空间指针有两种赋值方法:int *p; p=&a;2. 在初始化创建指针时就赋值 int *p=&a;PS:只有先给指针赋值地址 才能进行后面的操作 例如:*p=3; i...

2021-09-13 21:51:16 442

原创 原子哥 OLED显示实验笔记2

原子哥讲解的有1206 1608 2412三种字体意思是:例如1206用12行6列的12*6个方格显示字体以1206的字符%为例 在OLED显示字符%{0x18,0x00,0x24,0xC0,0x1B,0x00,0x0D,0x80,0x32,0x40,0x01,0x80},/*"%",5*/这里可以看到1206占用12个字节,这个12字节是如何体现出了的呢,第一列前八个点占一字节,紧接着一字节高四位占余下4个点(也就是四位),剩余低4位舍弃不用,后面几列同理。应用到的函数如下...

2021-08-26 21:08:39 4653

原创 原子哥 OLED显示实验笔记

本人小白 有什么错误多多指教OLED 8080 并行接口信号线说明片选信号就是选用一个或某一个集成电路芯片时使用的信号。有很多芯片挂在同一总线上(像电脑里很多外设都是挂在总线上),但我们有时候需要对其中特定的某个芯片进行数据、地址或命令的独立传输,此时,我们需要有一个信号来告诉挂在总线上的芯片们,这些数据、地址是传给哪个芯片的。这样,其他芯片就会对这些信号没有反应,而目标芯片就知道这些数据是传给自己的从而做出反应。这个信号就叫做片选信号CS向OLED写数据用WR 向OLED读数据用RD.

2021-08-26 20:25:10 8183

原创 原子哥 串口通信代码笔记2

本人小白 有什么错误多多指教串口收发状态的函数USART_GetFlagStatus和USART_GetFlagStatus函数USART_GetITStatus与USART_GetFlagStatus的区别是:该函数不仅会判断标志位是否置1,同时还会判断是否使能了相应的中断。通常在中断函数中使用USART_GetFlagStatus(USART1, USART_FLAG_TC);当其置1 标志着串口1发送完成USART_GetFlagStatus(USART1, USART_FLAG_R.

2021-08-25 23:05:03 1601

原创 原子哥 串口通信代码笔记1

本人小白自学 想通过记笔记加深自己的记忆 有什么错误欢迎大家指点首先UART是异步通信 没有时钟控制 所以要自行设置波特率TXD是发送引脚 单片机发送数据 RXD是接收引脚 单片机接收数据以串口1为例 PA9为发送引脚 PA10为接收引脚首先要配置引脚 PA9 PA101.打开串口1和引脚A的时钟2.PA.9为复用推挽输出 PA.10为浮空输入 GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphCloc...

2021-08-25 21:58:18 1625

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除