自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

morris

The earliest moment is when you think it's too late.

  • 博客(720)
  • 资源 (30)
  • 收藏
  • 关注

原创 【redis】lettuce客户端的使用

Lettuce是一款高性能的Java Redis客户端,专为高并发和分布式场景设计,已成为Spring Boot默认的Redis驱动框架。通过非阻塞I/O模型和线程安全性,Lettuce在企业级应用中广泛使用。Spring Boot集成Lettuce时,只需在pom.xml中添加相关依赖,并在application.yml中配置Redis参数,支持单机、哨兵和集群模式。Lettuce自动处理集群拓扑变化,并通过本地缓存优化性能。哨兵模式下,可通过自定义配置实现读写分离,提升系统负载能力。Lettuce的智能

2025-05-14 10:10:39 526

原创 【redis】jedis客户端的使用

Jedis是Redis官方推荐的Java客户端库,支持单机、哨兵及集群模式,API设计与Redis命令高度一致,降低了学习成本。通过Maven引入依赖后,开发者可以轻松进行字符串、哈希、列表等数据类型的操作。Jedis连接池优化了性能,通过复用连接减少网络延迟,并解决多线程安全问题。与Spring Boot结合使用时,需配置Redis服务器地址及连接池参数,并自定义RedisTemplate以避免默认的JDK序列化问题。Jedis的高效性和易用性使其成为Java开发中操作Redis的首选工具。

2025-05-14 10:07:44 414

原创 【redis】CacheAside的数据不一致性问题

缓存的使用虽然提升了系统性能,但也带来了缓存与数据库一致性的挑战。文章分析了四种更新策略:先更新数据库后更新缓存、先更新缓存后更新数据库、先删除缓存后更新数据库、先更新数据库后删除缓存,并指出每种策略可能引发的数据不一致问题。特别是并发写冲突和缓存更新失败是常见问题。文章还探讨了延迟双删策略和通过订阅MySQL binlog来处理缓存的方法,以减少不一致的时间窗口。最终,文章强调了在无法实现强一致性的情况下,通过技术手段尽可能缩短不一致时间窗口的重要性。

2025-05-13 11:03:14 1323

原创 【redis】缓存策略

随着应用程序复杂性的增加,缓存管理成为提升性能和用户体验的关键。不同的缓存策略各有优劣,适用于不同的场景。Cache-Aside策略通过应用程序直接管理缓存,适用于读多写少的场景,但存在短暂数据不一致和缓存击穿的风险。Read/Write Through策略通过缓存层管理数据读写,简化应用逻辑并保证强一致性,但写入性能较低且依赖缓存服务稳定性。Write-Back策略通过异步更新数据库,提升写入性能,但存在数据一致性风险。Write-Through-Back策略结合了Write-Through和Write-

2025-05-13 10:59:40 910

原创 【redis】集群模式

Redis Cluster是Redis官方推出的分布式解决方案,旨在通过数据分片、高可用和动态扩展能力满足大规模数据存储与高并发访问的需求。其核心机制基于,将16384个哈希槽均匀分配给集群中的主节点,每个键通过CRC16哈希算法映射到特定槽位,实现数据的分布式存储与负载均衡。

2025-05-08 15:28:55 6250

原创 【redis】分片方案

Redis分片(Sharding)是解决单机性能瓶颈的核心技术,其本质是将数据分散存储到多个Redis节点(实例)中,每个实例将只是所有键的一个子集,通过水平扩展提升系统容量和性能。

2025-05-08 15:27:17 7363

原创 【redis】哨兵模式

Redis主从模式虽然支持数据备份与读写分离,但存在三大核心缺陷:**1. 故障切换依赖人工**(主节点宕机需手动提升从节点);**2. 监控能力缺失**(无法自动检测节点异常);**3. 脑裂风险**(网络分区可能导致双主数据冲突)。这些缺陷使得系统可用性难以保障,尤其在分布式场景下隐患显著。

2025-04-23 13:54:13 14111

原创 【redis】主从复制

Redis的单机模式仅部署单个实例,一旦节点宕机或网络故障,所有依赖Redis的服务将不可用,这就是所谓的单点故障问题。单节点需承担全部读写请求,并发量高时可能成为性能瓶颈。单节点受限于物理内存容量,无法突破内存物理上限存储海量数据。所有请求都怼到一个实例,磁盘IO、网络IO、带宽、CPU等资源都会成为瓶颈。注意:读写分离并不是Redis自带,需要客户端手动实现。

2025-04-23 13:52:27 16321

原创 【redis】redis实现红锁

红锁通过多节点投票机制,显著提升了分布式锁的可靠性,但需权衡其实现复杂度与运维成本。建议在以下场景选择红锁:• 需要跨机房/地域部署• 业务对数据一致性要求极高• 已具备独立Redis节点运维能力对于大多数场景,可优先使用Redisson等成熟框架,避免重复造轮子。若对一致性有极致要求,可考虑ZooKeeper/etcd等基于共识算法的方案。

2025-04-02 16:25:26 48820

原创 【redis】redis实现分布式锁

在分布式系统中,协调多个节点对共享资源的访问是一个经典难题。分布式锁作为解决这类问题的关键组件,需要满足**互斥性**、**容错性**、**超时释放**等核心特性。本文基于Redis的原子操作特性,详细讲解如何用Java实现企业级分布式锁。

2025-04-02 16:20:48 51428

原创 【redis】持久化之RDB与AOF

在数字世界的脉搏中,数据是流淌的血液,而持久化则是保障系统生命力的核心机制。作为内存数据库的标杆,Redis凭借其高性能特性成为互联网架构的基石,但其「易失性」的天然属性也催生了关键命题:如何在服务重启或故障时保障数据安全?从RDB快照的瞬时记忆到AOF日志的精准回放,再到混合持久化的智慧融合,Redis用三种递进式的方案回答了这一问题。RDB以二进制快照实现高效备份,AOF以日志追加构筑数据保险,而混合模式则通过「全量快照+增量日志」的架构,在恢复效率与数据安全之间找到黄金平衡点。

2025-03-27 09:48:13 45640

原创 【redis】数据类型之Stream

Redis Stream是Redis 5.0版本引入的一种新的数据类型,它提供了一种持久化的、可查询的、可扩展的消息队列服务。与传统的PUB/SUB模式相比,Stream提供了消息持久化和可靠性投递机制;与专业消息中间件(如Kafka)相比,它更加轻量且完全兼容Redis生态系统。

2025-03-27 09:46:26 30255

原创 【redis】发布订阅

Redis的发布订阅(Pub/Sub)是一种基于的通信机制,它允许消息的**发布者(Publisher)订阅者(Subscriber)**通过订阅频道或模式来接收消息。:无需额外组件,直接通过Redis服务实现:消息即时推送,无轮询延迟:一个消息可被多个订阅者同时接收:不存储历史消息,订阅者只能接收订阅后的消息。

2025-03-13 17:38:08 17020

原创 【redis】lua脚本

在分布式系统与高并发架构的战场中,开发者们始终在与两个永恒的命题博弈:**数据一致性**与**系统性能**。当我们试图用Redis构建高速缓存、实现分布式锁或设计秒杀系统时,往往会陷入这样的困境——如何在保证原子性的同时,避免网络往返带来的性能损耗?如何让复杂的多命令操作像单一指令般高效执行?这正是**Redis Lua脚本**闪耀的舞台。作为Redis的"核武器级"特性,Lua脚本不仅实现了**原子性、隔离性**的操作保障,更能将复杂的业务逻辑压缩成服务端的高性能执行单元。

2025-03-13 17:37:12 12059

原创 【redis】pipeline管道

Redis Pipeline(管道)是一种将多个命令批量发送到服务器的技术。与逐个发送命令的传统方式不同,Pipeline允许客户端一次性打包多条命令,通过完成批量操作。

2025-03-10 15:53:16 40864

原创 【redis】事务

简单地说,事务表示一组动作,要么全部执行,要么全部不执行。Redis事务是一组命令的集合,通过MULTIEXEC等命令实现批量操作的原子性执行。

2025-03-10 15:51:50 44330

原创 【redis】慢查询分析与优化

指在Redis中执行时间超过预设阈值的命令,其日志记录是排查性能瓶颈的核心工具。Redis采用单线程模型,任何耗时操作都可能阻塞后续请求,导致整体性能下降。

2025-03-09 12:29:54 39772

原创 【redis】数据类型之geo

Redis的GEO数据类型用于存储地理位置信息(如经纬度),并提供高效的地理位置查询功能(如计算两地距离、搜索附近地点等)。其底层基于Sorted Set(有序集合)实现,通过Geohash编码将经纬度转换为分数(score)进行存储。有关hyperloglog类型的命令可以通过help @geo命令来查看。有关命令的使用可以通过help 命令来查看,例如。

2025-03-09 12:28:53 18431

原创 【redis】布隆过滤器的Java实现

在Java中,要实现布隆过滤器(Bloom Filter)的方式有很多种,除了上一节中通过jedis包调用安装了布隆过滤器的redis外,还有以下几种常见的实现方式:手写布隆过滤器基于guava包实现通过redis的bitmaps实现基于redisson包实现。

2025-03-08 18:50:31 10811

原创 【redis】数据类型之布隆过滤器

布隆过滤器(Bloom Filter)的算法是由Burton Howard Bloom(伯顿·霍华德·布隆)在1970年提出的。它是一种空间效率很高的概率型数据结构,通常用于判断一个元素是否在集合中。这种数据结构的核心思想是通过一个很长的二进制向量(位数组)和一系列哈希函数来实现快速且近似的存在性查询。

2025-03-08 18:48:16 13944

原创 【python】PyMuPDF操作pdf

PyMuPDF,也被称为fitz(这是其导入时的常用别名),是一个功能强大的Python库,用于处理PDF和其他文档格式。与 PyPDF2相比,PyMuPDF提供了更多的功能和更好的性能,特别是在处理复杂的PDF文件时。

2025-02-28 09:36:14 14269

原创 【python】PyPDF2操作pdf

PyPDF2是一个用于处理PDF文件的Python库,可以读取、合并、拆分、裁剪和修改PDF文件。以下是一些使用PyPDF2的基本示例,包括如何安装该库以及执行一些常见的PDF操作。

2025-02-28 09:30:18 11528

原创 【redis】数据类型之hyperloglog

Redis的HyperLogLog(HLL)是一种高效的概率数据结构,也是一种基于字符串的数据结构,用于估计大数据集的唯一元素数量(基数统计)。它通过极低的内存占用(约 12KB)实现接近线性的时间复杂度,适用于海量数据去重计数场景(如统计独立访客数),但需容忍约0.81%的标准误差。有关hyperloglog类型的命令可以通过命令来查看。有关命令的使用可以通过help 命令来查看,例如help pfadd。

2025-02-25 16:10:46 9362

原创 【redis】数据类型之Bitfields

Redis的Bitfields(位域)与Bitmaps一样,在Redis中并不是一种独立的数据类型,而是一种基于字符串的数据结构,用于处理位级别的操作。允许用户将一个Redis字符串视作由一系列二进制位组成的数组,并对这些位进行高效的访问和操作。通过Bitfield,开发者可以将多个小的整数存储到一个较大的位图中,或者将一个庞大的键分割为多个较小的键进行存储,从而极大地提高了内存的使用效率。

2025-02-25 15:59:44 9453

原创 【redis】数据类型之bitmaps

Redis的Bitmaps是一种基于字符串的数据结构,用于处理位级别的操作。虽然Bitmaps在Redis中并不是一种独立的数据类型,而是基于字符串实现的,但它们提供了高效的位操作功能,适用于需要处理大量布尔值或二进制数据的场景。

2025-02-13 10:17:04 12842

原创 【redis】数据类型之sorted_set

sorted_set:有序集合,在set的基础上增加score属性用来排序,在redis中,数据类型对应的命令一般以数据类型的首字母开头,但是单词s已经被string类型使用了,所以sorted_set类型的相关命令只能使用26个英文字母中的最后一个字母z来开头,所以有些人也把sorted_set称为zset。有关sorted_set类型的命令可以通过命令来查看。有关命令的使用可以通过help 命令来查看,例如help zadd。

2025-02-13 10:15:24 8473

原创 【redis】数据类型之set

Redis中的SET数据类型是一种无序的集合,它允许你存储不重复的元素。SET类型提供了许多有用的操作,比如添加元素、删除元素、检查元素是否存在、计算集合的交集、并集和差集等。set(集合):其实就是数学中的集合,集合中元素要具备三个特性:确定性、无序性、互异性。确定性:一个元素要么属于集合,要么不属于集合。无序性:集合中每个元素的地位相当,没有顺序。互异性:集合中的元素都是不同,也就是一个元素在一个集合中只能出现一次。有关set类型的命令可以通过help @set命令来查看。

2025-02-08 15:08:32 10253

原创 【redis】数据类型之hash

Redis中的Hash数据类型是一种用于存储键值对集合的数据结构。与Redis的String类型不同,Hash类型允许你将多个字段(field)和值(value)存储在一个单独的key下,从而避免了将多个相关数据存储为多个独立的key。这样做的好处是减少了key的数量,使得数据的管理和操作更加高效。hash这个数据类型类似java中的HashMap,都由key-value键值对组成。有关hash类型的命令可以通过help @hash命令来查看。有关命令的使用可以通过help 命令来查看,例如。

2025-02-08 15:06:56 8685

原创 【redis】数据类型之list

Redis的List数据类型是一个双向链表,支持在链表的头部(left)和尾部(right)进行元素的插入(push)和弹出(pop)操作。这使得List既可以用作栈(stack),也可以用作队列(queue)。有关list类型的命令可以通过help @list命令来查看。有关命令的使用可以通过help 命令来查看,例如help lpush。

2025-02-06 16:08:52 19101

原创 【redis】数据类型之string

字符串类型是Redis最基础的数据结构。首先key都是字符串类型,而且其他几种数据结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习打下基础。字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。有关string类型的命令可以通过命令来查看。有关命令的使用可以通过help 命令来查看,例如help set。

2025-02-06 16:06:37 10088

原创 【redis】键的全局命令

Redis提供了一系列用于管理和操作键的全局命令。这些命令允许你查看、删除、迁移键,以及执行其他与键相关的操作。

2025-01-15 10:33:54 9997

原创 【redis】redis-cli命令行工具的使用

redis-cli命令行工具是一个功能强大的Redis客户端,它允许用户与Redis数据库进行交互和管理。

2025-01-15 10:32:19 14827

原创 【redis】ubuntu18安装redis7

在Ubuntu 18下安装Redis7可以通过以下两种方法实现:手动编译安装和使用APT进行安装。

2025-01-10 15:54:48 27547

原创 【redis】centos7下安装redis7

在CentOS 7下安装Redis7可以通过以下两种方法实现:手动编译安装和使用YUM进行安装。

2025-01-10 15:49:27 34719

原创 【python】requests库发起HTTP请求

requests是Python中一个非常流行的用于发送HTTP请求的第三方库。它提供了简洁的API,使得发送各种HTTP请求(如GET、POST、PUT、DELETE等)变得非常容易。

2025-01-03 16:43:24 9923

原创 【python】json库处理JSON数据

Python的json库用于处理JSON(JavaScript Object Notation)数据格式。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python的json库提供了函数来编码(将Python对象转换为JSON字符串)和解码(将JSON 字符串转换为Python对象)JSON数据。

2025-01-03 15:58:30 3744

原创 【python】命名空间与作用域

在Python中,命名空间和作用域是两个密切相关的概念,它们帮助Python解释器管理变量、函数和其他对象的可见性和生命周期。理解这些概念对于编写清晰、可维护的Python代码至关重要。

2024-12-31 10:48:03 10381

原创 【python】错误与异常

Python允许你定义自己的异常类,通过继承内置的BaseException类来实现。try:raise CustomException("这是一个自定义异常!")print(e)这是一个自定义异常!

2024-12-31 10:46:35 12901

原创 【python】面向对象

在Python中,类的定义是通过使用class关键字来实现的。类是一个模板,它定义了对象的属性和方法(即函数)。通过类,我们可以创建具有相同属性和方法的对象(实例)。class Dog:# 类属性(通常是静态的,不依赖于任何实例)# 初始化方法(构造器),在创建实例时自动调用self.name = name # 实例属性,每个实例都有自己的值self.age = age # 实例属性# 实例方法,可以访问实例属性和其他实例方法return f"

2024-12-30 10:24:08 11330

原创 【python】模块与包

你可以创建一个Python文件,并在其中定义函数、类和变量,然后将其作为一个模块导入到其他Python脚本中。在另一个新的.py文件中通过模块名访问上面自定义模块my_module.py包含的函数、类和变量。

2024-12-30 10:22:26 8540

老K说中台_技术领导力_老K(全网200w+阅读量文章合集).pdf

老K说中台_技术领导力_老K(全网200w+阅读量文章合集)

2021-02-26

安全认证框架-Apache_Shiro研究心得

安全认证框架-Apache_Shiro研究心得

2015-03-06

Apache_Shiro_使用手册(一)Shiro架构介绍

Apache_Shiro_使用手册(一)Shiro架构介绍

2015-03-06

Apache_Shiro_使用手册(四)Realm_实现

Apache_Shiro_使用手册(四)Realm_实现

2015-03-06

Apache_Shiro中文帮助文档

Apache_Shiro中文帮助文档

2015-03-06

使用jackson完成json与java对象的互相转换实例

使用jackson完成json与java对象的互相转换实例

2015-02-01

java map实例,排序

java map排序,hashmap,linkedmap,treemap,hashtable

2015-01-31

对Map的key和value进行排序

对Map的key和value进行排序

2015-01-31

HashMap,HashTable,LinkedHashMap,TreeMap的区别

HashMap,HashTable,LinkedHashMap,TreeMap的区别

2015-01-31

java操作json实例

java操作json实例,java对象与json对象的互相转换

2015-01-27

json-lib.jar

json-lib.jar java 操作json的jar包

2015-01-27

js操作json

js操作json

2015-01-27

java利用json-lib操作json

java利用json-lib操作json

2015-01-27

java对properties配置文件的读和写

java对properties配置文件的读和写

2015-01-27

bootstrap日期插件datetimepicker的使用

bootstrap日期插件datetimepicker的使用

2015-01-26

jpa对表的crud操作

jpa对表的crud操作

2015-01-16

jpa查询详解

jpa查询 jpql 本地查询 命名查询

2015-01-16

Spring集成Hessian案例

Spring集成Hessian案例

2014-12-29

Hessian入门案例源代码

Hessian入门案例源代码

2014-12-29

mybatis入门案例

mybatis入门案例 内附详细教程 jar包

2014-12-23

mybatis-3.2.7

mybatis-3.2.7

2014-12-23

spring与hibernate的整合

spring与hibernate的整合 spring事务的配置

2014-11-07

Hibernate的配置

hibernate.cfg.xml的配置

2014-11-05

调用QQ webservice查看QQ在线状态源代码

调用QQ webservice查看QQ在线状态 java源代码

2014-11-03

调用QQ webservice查看QQ在线状态

调用QQ webservice查看QQ在线状态

2014-11-03

spring入门案例

spring开发入门案例,非常适合初学者,注释很详细

2014-11-03

spring简介

spring简介,aop,ioc,spring入门

2014-11-03

hibernate入门案例

hibernate入门案例,使用orm实现代码生成数据库中的表

2014-11-03

hibernate简介

hibernate简介,hibernate能干什么,为什么要用hibernate,怎么使用

2014-11-03

空空如也

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

TA关注的人

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