自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 springIOC的整体流程

2025-04-06 20:45:35 102

原创 redis内存淘汰策略

volatile-random:对设置了TTL的key ,随机进行淘汰。也就是从db->expires中随机挑选。volatile-ttl: 对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰。allkeys-random:对全体key ,随机进行淘汰。noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。volatile-lru: 对设置了TTL的key,基于LRU算法进行淘汰。allkeys-lru: 对全体key,基于LRU算法进行淘汰。

2024-11-19 15:47:44 181

原创 redis的删除策略

执行频率受server.hz影响,默认为10,即每秒执行10次,每个执行周期100ms。:过期key比例小于10%不执行 ): 执行频率受beforeSleep()调用频率影响,但两次FAST模式间隔不低于2ms 执行清理耗时不超过1ms 逐个遍历db,逐个遍历db中的bucket,抽取20个key判断是否过期 如果没达到时间上限(1ms)并且过期key比例大于10%,再进行一次抽样,否则结束(执行频率不固定):当我们去访问一个key的时候,会判断key是否过期,过期了才会删除这个key。

2024-11-19 15:41:57 451

原创 如何保证redis和数据库消息的一致性

我们可以加上锁来保证数据的一致性,但是加锁操作会影响我们的性能,我们可以使用redisson中的读写锁来优化。当读取数据的时候,上读锁,所有的读操作可以获取锁。1.先删除redis数据的时候,当其他线程来访问数据库,就会将还未修改的数据库的数据读取,并且写入缓存。2.当先删除数据库的时候,有其他线程来读取数据,就会读取到redis中还未删除的数据。:当更改数据时,我们需要修改数据库和删除redis缓存。我们可以采取先删除缓存在写入数据,在删除缓存的删-写-删,方式。:可以保证数据的强一致性。

2024-11-18 13:11:32 305

原创 Redis缓存雪崩

2.建立redis集群,保证redis的高可用性(解决redis宕机)redis宕机,或者大量缓存key同时过期,导致大量请求到达数据库。1.设置随机的ttl(解决key同时过期)4.给业务添加降级限流策略。3.给业务添加多级缓存。

2024-11-05 14:53:41 538

原创 Redis缓存击穿

新增一个逻辑过期的字段,当第一条未命中的数据来时同样获得互斥锁。其他线程在缓存成功前返回的也是过期数据。在缓存成功之后返回的则是更新数据。缓存击穿就是当redis缓存的数据过期的同时产生大量请求。然而缓存的重建是需要花费时间的,这时候大量的请求就是直接打入数据库,然而数据库是无法承载这么大量的并发请求的。当第一条数据未命中redis的时候获取互斥锁,当缓存写入之后释放锁。其他线程在请求的时候无法获取互斥锁,只能等待无法打入数据库。优点:可以保证数据的强一致性。方案一:使用互斥锁(分布式锁)

2024-11-03 18:56:20 236

原创 redis缓存穿透

redis缓存穿透就是当服务器发送大量不存在的查询请求是?redis无法命中,导致大量请求打入数据库,然而数据库无法支持那么高的并发。

2024-11-03 18:26:17 263

原创 redis的三种特殊数据类型

{1,3,5,7,8,7} 的基数就是 {1,3,5,7,8,}。类似于set集合。

2024-11-03 15:07:05 737

原创 Redis为什么快

redis是基于内存操作的,影响redis操作速度的不是cpu。redis是基于单线程的(因为多线程操作cpu上下文切换会耗时,redis基于单线程才是更快的)。内存的速度足够快,多次读写在一个cpu上没有上下文切换的耗时所以单线程redis快。我们都知道速度 cpu>内存>磁盘。

2024-11-02 20:07:40 205

原创 Redis Sentinel 的高可用性(redis哨兵模式)

那么认为该节点主观下线,当半数的sentinel认为节点主观下线则认为该节点客观下线。最后从sentinel中选举一个leader,由leader完成主从节点的重新设置。首先会判断slave节点与master节点断开时间长短,如果超过。值,越小优先级越高,如果是0则永不参与选举(默认都是1)。)机制来监控主从集群监控状态,确保集群的高可用性。sentinel会先让master节点下线。值,越大说明数据越新,优先级越高。一样,则判断slave节点的。最后是判断slave节点的。然后判断slave节点的。

2024-10-31 09:30:27 408

原创 redis主从集群

单节点的redis的并发量是有限的,为了提高redis的并发能力,我们将redis集群分布,实现读写分离。所以我们可以设置两个从节点(slave)同步主节点(master)的数据,当我们执行查询操作时,我们从slave节点。当我们执行写操作时我们操作master节点。然后将数据同步于slave节点保证数据一致性。每一个节点创建的时候都会有自己的rid和offset,当我们进行数据同步的时候master节点会向slave节点发送自己的rid,和offset。将master数据全部复制到slave节点中。

2024-10-31 08:55:47 300

原创 mysql覆盖索引

查询使用到了索引,查询返回的列被包含在索引里,减少使用select *。

2024-10-30 10:57:10 340

原创 idea集成git快速入门

其实操作git还要加上一个远程仓库,也就是我们熟知的GitHub,国内一般用gitee。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。我们点击commit,勾选我们未提交到远程的代码,commit and push,就提交并且上传到远程仓库了,(Amenf相当于注释)git的操作主要也就是上图上的六个操作,我们最终完成的代码要提交到远程仓库。工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

2024-10-29 19:41:41 1064

空空如也

空空如也

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

TA关注的人

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