标签:Redis

如何在上亿级别用户中检查用户名是否存在?

本文主要讲解关于在面试过程中被面试官问,如何在上亿级别用户中检查用户名是否存在相关内容,如此大的数据量确实是非常有挑战性的一个 面试题,让我们来一起看下该使用什么解决方案吧! 前言 不知道大家有没有留意过,在使用一些app或者网站注册的时候,提示你用户名已经被占用了,需要更换一个,而且响应速度很快,这是如何实现的呢?你可能想这不是很简单吗,去数据库里查一下有……

深入理解Redis哨兵模式

本文主要讲解关于深入理解Redis哨兵模式相关内容,让我们来一起学习下吧! 哨兵模式介绍 在深入理解Redis主从架构中Redis 的主从架构中,由于主从模式是读写分离的,如果主节点(master)挂了,那么将没有主节点来服务客户端的写操作请求,也没有主节点给从节点(slave)进行数据同步了。 在实际生产环境中,服务器难免会遇到一些突发状况:服务器宕机,停……

3种redis 过期策略详解

本文主要讲解关于3种redis 过期策略详解相关内容,让我们来一起学习下吧! 过期策略 1、常用方式 Redis提供了四个命令来设置过期时间(生存时间)。 ①、EXPIRE :表示将键 key 的生存时间设置为 ttl 秒。 ②、PEXPIRE :表示将键 key 的生存时间设置为 ttl 毫秒。 ③、EXPIREAT :表示将键 key 的生存时间设置为 ……

Java接口如何使用注解方式防止重复提交

本文主要讲解关于Java接口如何使用注解方式防止重复提交相关内容,让我们来一起学习下吧! 在一些新增的场景下,往往都会采取各种方式去防止重复提交。否则当新增逻辑执行较慢时,用户多次点击提交按钮,就会导致数据库中出现多条重复数据或者后端执行出错。 那么防止重复提交最简单的方式就是从前端出发,让前端设置按钮为只可以点击一次,但是前端是可以被跳过的。要想根治还得需……

Java项目中时间窗口及其应用场景

本文主要讲解关于Java项目中时间窗口及其应用场景相关内容,让我们来一起学习下吧! 一. 前言 时间窗口在限流 ,分布式 ID 的生成方面都有很多应用,这一篇主要目的是弄清楚怎么最好的实现这个功能。 时间窗口的应用很多 : 可以用于统计和监控,也可以用于限流和流量控制,或者在指定窗口里面做实时计算,ID 生成等业务处理等 二. 原理 时间窗口其实由 窗口 和……

Java并发工具类ThreadLocal、ConcurrentHashMap和CopyOnWrite的正确用法

本文主要讲解关于Java并发工具类的正确用法相关内容,涉及ThreadLocal、ConcurrentHashMap和CopyOnWriteArrayList的正确用法,让我们来一起学习下吧! 我们来看看在使用并发工具时,最常遇到哪些坑,以及如何解决、避免这些坑吧。 线程重用导致用户信息错乱 之前在生产上遇到一个诡异的bug,埋点数据的用户信息错乱,有时候获……

如何分析并解决Redis缓存穿透问题

本文主要讲解关于如何分析并解决Redis缓存穿透问题相关内容,让我们来一起学习下吧! 什么是缓存穿透? 缓存穿透: 缓存穿透是指在使用缓存系统时,恶意或者异常的请求导致缓存无法命中,从而每次请求都需要访问数据库,引发数据库负载过高。简单易懂地说:客户端请求的数据在缓存和数据库中都不存在,缓存永远不生效,所有请求都打到数据库上。 缓存穿透的详细解释: 缓存命中……

如何设计Redis缓存以及优化性能

本文主要讲解关于如何设计Redis缓存以及优化性能相关内容,让我们来一起学习下吧! 缓存设计 缓存穿透 缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。 造成缓存穿透的基本原因有两个: 第一,……

实现Redis分布式锁的Lua脚本

本文主要讲解关于实现Redis分布式锁的Lua脚本相关内容,让我们来一起学习下吧! 以下代码示例在并发情况下存在超卖情况: @RestController public class OverSell { @Autowired private RedisTemplate redisTemplate; @GetMappin……

Java中布隆过滤器原理及简单应用

本文主要讲解关于Java中布隆过滤器原理及简单应用相关内容,让我们来一起学习下吧! 前言 本篇文章将深入探讨Java中的布隆过滤器的底层思想,包括它的工作原理、优缺点等。同时,我们将结合一个小实际案例,来给大家展示布隆过滤器在解决实际问题中的应用。 布隆过滤器简单介绍 在数据处理领域,我们经常需要判断一个元素是否在一个集合中。传统的数据结构如哈希表、树等可以……

Redis6.0如何配置ACL权限

本文主要讲解关于Redis6.0如何配置ACL权限相关内容,让我们来一起学习下吧! 前言 在Rdis6.0版本以下,只能使用requirepass参数给default用户配置登录密码,Redis6.x版本以上,提供了配置acl权限模式,以及用户名,让可以配置用户名,并且给每个用户名并且给每个用户单独设置命令权限和数据权限 redis官网 https://re……

SpringBoot中如何自定义starter及其使用

本文主要讲解关于SpringBoot中如何自定义starter及其使用相关内容,让我们来一起学习下吧! 下面以创建一个连接redis的插件为例: 1.创建自动配置类RedissonAutoConfiguration 创建自动配置类,在类中配置一个需要用到的bean:RedissonClient,将该对象注入到容器中  package com.bobo.red……