自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 neo4j图数据库详细说明

Neo4j是以原生图形数据库为核心,以更自然的连接状态存储和管理数据。

2022-12-05 16:22:18 1686 1

原创 记一次系统因spring-session与Spring-redisson引起cpu波动问题

spring-session与redisson的巧妙碰撞

2022-08-22 18:44:37 759 1

原创 Redis总结(十一) Redis集群-Cluster集群(一)

模式二:Cluster集群由于redis集群的理论还有实践都比较复杂,所以我们将把实操和理论分为两篇文章介绍,这篇文章首先介绍实操环节。Redis3.0之后,节点之间通过去中心化的方式提供了完整的sharding(分片),replication(复制),failover(故障迁移)解决方案,成为redis-clusterRedis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施并且集群特性不支持跨节点的keys命令,并且通过分区来保证当一个节点失效时其他节点可以继续工作。redis集

2020-06-18 16:41:26 431

原创 Redis总结(十)redis集群-哨兵模式

模式二:哨兵模式上一篇问讲述了redis集群的主从模式,这一篇我们讲述哨兵模式。Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。自动故障迁移(Automatic failover

2020-06-01 17:35:10 214

原创 Redis总结(九)redis集群-主从模式

模式一:主从模式实现主从复制(Master-Slave Replication)的工作原理:Slave从节点服务启动并连接到Master之后,它将主动发送一个SYNC命令。Master服务主节点收到同步命令后将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave从节点服务在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master主节点继续将所有已经收集到的修改命令,和新的修改命令依次传送给

2020-05-27 18:08:58 561

原创 Redis总结(八)redis单线程还是多线程问题

redis为什么可以支持高并发和它内部的工作模式有不可分割的关系:绝大部分请求是纯粹的内存操作(非常快速)采用单线程,避免了不必要的上下文切换和竞争条件非阻塞IO - IO多路复用Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有到达服务端的命令都不会立刻执行,所有的命令都会进入一个队列中,然后逐个执行,并且多个客户端发送的命令的执行顺序是不确定的,但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,

2020-05-26 10:03:22 457

原创 Redis总结(七)redis与数据库缓存一致性问题

在互联网行业,使用缓存来提升应用的性能已经是一件非常常见的手段,但是我们在实际使用到redis时总会遇到缓存与数据库数据不一致的情况正常我们使用时:写:删除缓存,将数据写入库中,完成后将数据写入缓存读:先从缓存中读取,缓存中存在则直接返回,缓存中不存在则查询数据库,将结果写入缓存,然后返回上面这种写法在并发不高的情况下,在有并发的情况下就会出现数据不一致的情况,如:线程1写入数据先删除缓存在线程1删除缓存但是还没有写入数据库时,线程2来读取数据,发现缓存中不存在线程2去数据库查询,并将结

2020-05-21 11:36:01 281

原创 Redis总结(六)redis持久化

本文将简单介绍redis持久化的两种方式redis提供了两种不同级别的持久化方式:RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.在简单了解了以上两种持久化方式的不同点后,我们开始一个一个的进行了解。RDB持久化:RDB方式的优缺点:优点:RDB是一

2020-05-12 20:50:50 147

原创 Redis总结(五)redis发布订阅模式

本篇将向大家介绍怎么通过redis来实现订阅和发布功能首先介绍一下实现功能的主要几个命令:SUBSCRIBE 命令,这个命令可以让我们订阅任意数量的频道PUBLISH 命令,此命令是用来发布消息PSUBSCRIBE命令,此命令用来支持模糊订阅的功能在展示具体的demo之前,我们先简单了解下这其中的原理:在redisServer结构中的其中一个属性pubsub_channels是用来...

2020-04-26 18:19:28 1109

原创 Redis总结(四)redis实现异步队列及延迟队列

本文将使用redis实现异步队列以及延迟队列,虽然我们在实际开发中经常会有专业的消息队列中间件,如:rabbitmq等,但是如果系统中没有mq中间件,又懒得维护mq中间件,那么我们可以通过redis来实现因为redis并不是专业实现队列的中间件,因此在实现方式上还是会存在一些问题,还是比不上rabbitmq之类的中间件,那么我为什么还写这篇文章,是因为通过使用redis来实现队列及延迟队列,可以...

2020-04-20 17:37:18 797 1

原创 Redis总结(三)redis分布式锁

本篇文章将对redis的分布式事务进行总结在我们的日常开发中,如果是分布式架构,那么我们经常会遇到分布式锁的问题,我们对于分布式锁通常有三种实现方式:基于数据库实现分布式锁;基于缓存(Redis等)实现分布式锁;基于Zookeeper实现分布式锁;这里主要介绍基于redis的分布式锁这里主要是使用jedis实现,依赖如下: <dependency> ...

2020-04-14 17:08:00 504

原创 Redis总结(二)缓存穿透、缓存击穿、缓存雪崩

本篇文章主要介绍redis的缓存穿透、缓存击穿及缓存雪崩造成的原因及解决方案一、缓存穿透概念:是指查询一个数据库一定不存在的数据解释:客户端请求数据,redis中没有,则去数据库查询发现也没有,如果在用户量大或者有人恶意请求则会一直穿过缓存去请求数据库,对数据库造成很大的压力。解决方式:在接口层根据业务增加一些用户鉴权校验,非法参数请求校验,降低数据库压力,比如id小于0之类的设置空...

2020-04-13 11:50:04 153

原创 Redis总结(一)基础类型总结

一、redis支持的数据结构:最近开始总结redis的相关知识,毕竟今年的行情不好,时刻总结回顾知识点,投资自己哪怕被优化也能时刻上手面试。1、String特点:一个键能储存512MBstring类型是二进制安全的,可以存储任何数据,比如jpg图片或序列化对象;适用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。2、Hash适用场景:比较适合于存储对象3、Li...

2020-04-10 14:16:35 159

原创 quartz(六)定时任务的暂停、关闭等操作说明

定时任务的暂停、关闭等操作说明基于quartz3.0版本总结一些quartz定时任务的暂停、恢复、删除等操作。定时任务的删除等操作主要是基于JobKey或TriggerKey。暂停Job: //通过JobName以及JobGroup获得JobKey JobKey jobKey = JobKey.jobKey("aaaa" + 1, JOB_GROUP_NAME); ...

2020-03-30 14:30:32 7493

原创 quartz(五)结合项目使用

quartz结合项目实际使用示例这篇文章我在项目中实际使用给大家介绍项目中如何使用quartz,前面文章介绍过定时任务的存储方式主要有两种:存储在内存的RAMJobStore和存储在数据库的JobStoreSupport,由于存储在内存中的形式,在清理缓存时会造成数据丢失,并且在做集群的时候也是采取存在数据库中的形式才可以,因此这里主要介绍的是存储在数据库中方式。一、表结构首先介绍的是数据库...

2019-11-14 09:52:58 281

原创 quartz(四)监听类总结

quartz监听类总结本篇文章将对我们使用quartz框架的过程中,主要涉及到的类及类中的方法进行介绍SchedulerListener监听在调度过程中各个环节发生的事SchedulerListener中主要方法介绍jobScheduled()当JobDetail被调度器调用的时候触发这个方法jobUnscheduled()在JobDetail没有被调度器调用的时候触发这个方法tri...

2019-11-12 18:12:00 168

原创 quartz(三)工厂类总结

本篇文章中将会对quartz常用的factory进行总结SchedulerFactory接口为调度器工厂接口 SchedulerFactory中主要方法介绍getScheduler()获取一个可用的调度器getScheduler(String schedName)通过调度器名字得到调度器JobFactory接口负责生成Job的具体实例,如果我们需要Job实例支持bean注入那么我们需要...

2019-11-12 18:11:01 592

原创 quartz(二)核心元素介绍

quartz核心元素及底层原理介绍Quartz的核心元素主要有Scheduler、Trigger、Job、JobDetail。其中Scheduler为调度器负责整个定时系统的调度,内部通过线程池进行调度,下文阐述。Trigger为触发器记录着调度任务的时间规则,主要有四种类型:SimpleTrigger、CronTrigger、DataIntervalTrigger、NthIncluded...

2019-11-12 18:09:09 276

原创 quartz(一)前言

前言quartz是一个用java实现的开源任务调度框架,可以用来创建简单或者复杂的任务调度,并且可以提供许多企业级的功能,比如JTA以及集群等,是当今比较流行的JAVA任务调度框架。之前多呆过的两家公司及目前所在的公司对于quartz的需求及使用都是比较频繁的,自己也是在这个过程中对于quartz由陌生变为熟悉,因此在这里准备写一系列quartz的文章,既是怕自己遗忘也是对自己的心得进行总结。...

2019-11-05 18:05:22 183 2

空空如也

空空如也

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

TA关注的人

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