什么是Redis

Redis是基于C语言开发的NoSQL数据库,它是一种存储KV键值对数据的内存数据库,因此读写速度非常快,被广泛应用于分布式缓存方向。

Redis内置了多种数据类型实现:

  • 5种基础数据类型
    1. String
    2. List
    3. Set
    4. Hash
    5. Zset (有序集合)
  • 3种特殊数据类型
    1. HyperLogLog(基数统计)
    2. Bitmap(位图)
    3. Geospatial (地理位置)

Reids还支持事务、持久化(将内存数据保存在磁盘中,重启时可以再次加载使用)、Lua脚本、多种开箱即用的集群方案(Redis Sentinel、Redis Cluster)。

阅读全文 »

简介

Spring Boot让您可以轻松地创建独立的、生产级别的Spring应用程序,并“直接运行”这些应用程序。SpringBoot为大量的第三方库添加了支持,能够做到开箱即用,简化大量繁琐配置,用最少的配置快速构建你想要的项目。

SpringBoot功能有:

  • 能够创建独立的Spring应用程序
  • 内嵌Tomcat、Jetty或Undertow服务器(无需单独部署WAR包,打包成Jar本身就是一个可以运行的应用程序)
  • 提供一站式的“starter”依赖项,以简化Maven配置(需要整合什么框架,直接导对应框架的starter依赖)
  • 尽可能自动配置Spring和第三方库(除非特殊情况,否则几乎不需要进行任何配置)
  • 提供生产环境下相关功能,如指标、运行状况检查和外部化配置
  • 没有任何代码生成,也不需要任何XML配置
阅读全文 »

概述

jmap命令是一个可以输出所有内存中对象的工具,甚至可以将JVM中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的所有对象的情况(如:产生哪些对象,及其数量)。

阅读全文 »

OOM的原因

一次性申请过多的对象

更改申请对象的数量。(分页)


内存资源耗尽 未释放

找到未释放的对象进行释放。


本身资源不够

查看堆信息:

JDK 8: jmap -heap [pid]

JDK 11往后:jhsdb jmap --heap --pid [pid]

image-20231024141116327
阅读全文 »

简介

消息队列提供一个异步通信机制,消息的发送者不必一直等待到消息被成功处理才返回,而是立即返回。消息中间件负责处理网络通信,如果网络连接不可用,消息被暂存于队列当中,当网络畅通时,将消息转发给相应的应用程序或者服务。

如果在商品服务和订单服务之间使用消息中间件,既可以提高并发量,又降低服务之间的耦合度。

RabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据

阅读全文 »

背景

以往的 Java Web 开发中,异常处理通常是通过 try-catch 语句块来实现。这种方法在应用程序规模较小的情况下还可以,但是在大型应用中,可能存在大量的代码重复和不一致问题。此外,在抛出未处理的异常时,用户会看到系统生成的默认错误页面,用户体验差。

阅读全文 »

优化慢 SQL

慢查询日志记录了执行时间超过 long_query_time(默认 10s通常设置为 1s)的所有查询语句,在解决 SQL 慢查询问题时经常会用到。

  • 查询慢查询日志是否开启 (默认关闭)

    show variables like "slow_query_log;

    开启慢查询日志

    SET GLOBAL slow_query_log=ON;
  • 查看慢查询的 超时时间

    show variables like "%long_query_time%";

    修改 long_query_time 参数:

    SET GLOBAL long_query_time=1;
  • 查询当前 慢查询语句的个数

    show global status like "%Slow_queries%";
  • 查询慢查询日志存放位置

    SHOW VARIABLES LIKE "slow_query_log_file";
  • 无论是否超时,未被索引的记录也被记录

    SET GLOBAL log_queries_not_using_indexes = "ON";
  • 慢查询仅记录扫描 行数 > 此参数 的 SQL

    SET SESSION min_examined_row_limit = 100;

设置完成后,可以用 SHOW VARIABLES LIKE "slow%"; 命令查看。

阅读全文 »

概述

MySQL支持多种存储引擎,可以通过SHOW ENGINES命令查看MySQL所支持的所有存储引擎。

MySQL 当前默认的存储引擎是 InnoDB。并且,所有的存储引擎中只有 InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务

MySQL 5.5.5 之前MyISAM 是 MySQL 的默认存储引擎。5.5.5 版本之后,InnoDB 是 MySQL 的默认存储引擎。

阅读全文 »

概述

MySQL中常见的日志类型主要有下面几类(针对InnoDB存储引擎):

  1. 慢查询日志 (slow query log)
  2. 二进制日志 (binlog)
  3. 事务日志
    • 重做日志 (redo log)
    • 撤销日志 (undo log)
阅读全文 »
0%