- 博客(11)
- 收藏
- 关注
原创 redis扩展
再谈分布式锁在集群中,如果一个客户端申请了一把锁,然后主节点挂了,从节点还未来得及同步的时候,另一个客户端取得了锁,这就相当于两个客户端拿到了一把锁,这样不安全。redlock算法加锁时会向过半节点发送set指令,只要过半节点成功,就加锁成功,释放锁时向所有节点发送del指令。redlock会导致性能下降。过期策略redis将设置了过期时间的key单独放在一个集合里,定时遍历删除,除此之外,还会使用惰性策略删除,即当访问的时候检查一下这个key。定时扫描策略redis默认每秒进行十次扫描,扫
2021-06-03 15:14:02 131
原创 redis源码
字符串redis的字符串结构是SDS,是一个自带长度信息的字节数组struct SDS<T> { T capacity; //数组容量 1byte T len; //数组长度 1byte byte flags; //特殊标志位 1byte byte[] content; //数组内容}SDS使用的泛型T,是为了根据属性的大小来判断使用什么类型,redis对内存做了极致的优化。字符串长度不得超过512Membstr与raw
2021-06-03 15:13:26 148
原创 redis集群
主从同步当主节点挂掉之后,从节点过来接管。CAP原理:当网络分区发生时,一致性与可用性两难全一致性、可用性、分区容忍性网络分区:分布式系统的节点发生网络断开的情况最终一致redis主从数据是异步同步的,并不满足一致性,但满足可用性,即使网络分区,主节点也会支持修改。redis保证最终一致性,即从节点会努力追赶主节点,使数据保持一致。主从同步与从从同步从从同步是为了减轻主节点的压力。增量同步redis的同步是指令流,主节点会把对自己状态产生影响的指令记录到本地的内存buf
2021-06-03 15:12:15 101
原创 redis原理
Redis的单线程依赖于多路复用,即事件轮询以达到并发。非阻塞IO事件轮询在执行某条指令时,若这段时间内没有事件到来,处于阻塞状态,最多等待timeout事件,就立即返回,若有事件到来,挨个处理相应事件。处理完了继续返回轮询指令队列与响应队列定时任务redis的定时任务会记录在一个被称为“最小堆”的数据结构中,,最快要执行的任务放在最上面,每个事件轮询周期,将到时间点的任务进行处理,然后记录距离最近的任务的时间间隔,这个就是未来的timeout。通信协议------使用了文本协议RESP—r
2021-06-03 15:10:24 73
原创 redis基础
五大基础结构Stringredis的字符串是动态字符串,是可以修改的,类似于ArrayList,采用预分配冗余空间的方式减少内存的频繁分配。小于1M扩容加倍,大于则是多扩1M知识点:键值对、批量键值对、过期与set扩展、计数list链表而非数组,列表弹出最后一个元素,内存被回收。知识点:队列(lpop)、栈(rpop)、lindex、ltrim、快速列表(ziplist组成quicklist)hash无序字典,与HashMap类似,数组加链表。rehash采用渐进式rehash策
2021-06-03 15:09:41 107
原创 Mybatis中的动态sql与常用的语法
动态sql动态sql常用的主要有以下几种:1、if动态SQL语句使用if动态语句进行空值判断,可以应用于多条件查询,不确定会有哪些查询条件的时候。 <if test="isCheck != null"> isCheck = #{isCheck}, </if>2、foreach动态SQL语句主要用于当要查询...
2019-09-20 16:38:39 562
原创 xxl-job新增执行器
上篇文章大体介绍了如何将xxl-job在自己的电脑上部署好,这篇用来介绍如何去新增一个执行器,也就是将spring项目整合,可以使用xxl-job进行执行。一、新建一个springboot项目。新建一个项目。选中spring web、Mysql Driver、JDBC API、Mybatis Framework等依赖,后面就是点击确定,然后成功创建项目。配置项目首先引入xxl依赖。...
2019-09-20 13:57:07 14106 1
原创 xxl-job配置安装
第一步、首先将大佬的代码从git上拉下来git地址第二步、将工程拉进IDEA部署好。第三步、将代码中的sql语句执行一遍,会生成七张表如下。啊,对了SQL语句在这里第四步、将工程中xxl-job-admin下的配置文件中的数据库地址、用户名、密码修改为你自己的。其他的可以不用动,这样就可以将这个xxl-job启动起来了。第六步、首先启动xxl-job-admin下的启动文件Xx...
2019-09-20 10:53:05 1976
原创 new String与toString的区别(踩过的大坑)
在见到他们两个之后我一度以为他们两个是一样的,但是果真掉进了大坑。区别如下:toString是调用的对象本身的,也就是继承或者重写的object.toString()方法,如果是byte[] b,那么返回的是b的内存地址。new String()是使用虚拟机默认的编码base返回对应的字符。...
2019-09-17 11:11:00 1252
原创 有关MySQL的一些整理
MySQL的一些常用操作在日常的使用中我经常的会忘记一些SQL语句的使用方法,这里就整理了一下,方便以后使用。创建表create table person(id bigint(8) not null AUTO_INCREMENT comment '主键id',person_name varchar(32) not null comment '姓名',person_age int(4)...
2019-09-04 14:52:00 103
转载 cron表达式及其验证方法
一、表达式组成Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:都使用数字,但还可以出现如下特殊字符,它们的含义是:(1) :表示匹配该域的任意值,假如在Minutes域使用, 即表示每分钟都会触发事件。(2) ? :只能用在DayofMonth和DayofWeek两个域。因为DayofMonth和 DayofWeek...
2019-09-01 11:50:42 3858
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人