redis + AOP + 自定义注解实现接口限流
限流介绍
限流(rate limiting)
? 是指在一定时间内,对某些资源的访问次数进行限制,以避免资源被滥用或过度消耗。限流可以防止服务器崩溃、保证用户体验、提高系统可用性。
限流的方法有很多种,常见的有以下几种:
漏桶算法:
? 漏桶算法通过一个固定大小的漏桶来模...[2024/1/5]
架构与思维:如何应对Redis热Key? - Hello-Brand架构与思维:如何应对Redis热Key? - Hello-Brand
★ Redis系列文章
Redis系列1:深刻理解高性能Redis的本质
Redis系列2:数据持久化提高可用性
Redis系列3:高可用之主从架构
Redis系列4:高可用之Sentinel(哨兵模式)
Redis系列5:深入分析Cluster 集群模式
追求性能极致:Redis6...[2023/12/26]
从Redis读取.NET Core配置
在本文中,我们将创建一个自定义的.NET Core应用配置源和提供程序,用于从Redis中读取配置。在此之前,您需要稍微了解一些.NET Core配置提供程序的工作原理,相关的内容可以在Microsoft开发者官网搜索到。另外您可能还需要了解一些Redis的基础知识,比如Redis的基础数据类型...[2023/12/26]
Redis全文搜索教程之创建索引并关联源数据
Redis 全文搜索是依赖于 Redis 官方提供的 RediSearch 来实现的。RediSearch 提供了一种简单快速的方法对 hash 或者 json 类型数据的任何字段建立二级索引,然后就可以对被索引的 hash 或者 json 类型数据字段进行搜索和聚合操作。
这里我们把被索引的...[2023/12/21]
nginx+lua+redis实现灰度发布
前言:
授人以鱼不如授人以渔.先学会用,在学原理,在学创造,可能一辈子用不到这种能力,但是不能不具备这种能力。这篇文章主要是沉淀使用nginx+lua+redis实现灰度,当我们具备了这种能力,随时可以基于这种能力和思想调整实现方案:比如nginx+lua+(其他数据源)、nginx+(其他脚本...[2023/12/18]
基于Redis的简易延时队列基于Redis的简易延时队列
基于Redis的简易延时队列
一、背景
在实际的业务场景中,经常会遇到需要延时处理的业务,比如订单超时未支付,需要取消订单,或者是用户注册后,需要在一段时间内激活账号,否则账号失效等等。这些业务场景都可以通过延时队列来实现。
最近在实际业务当中就遇到了这样的一个场景,需要实现一个延时队列,用来...[2023/12/11]
.NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试.NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
2023年11月15日,对.net的开发圈是一个重大的日子,.net 8.0正式版发布。
圈内已经预热了有半个月有余,性能不断超越,开发体验越来越完美,早在.net 5.0的时候就各种吹风Aot编译,直到6.0 7.0使用仍然比较麻烦,我个人比较期待本次更新的aot体验。
有的群友几个小时都...[2023/11/17]
基于C# Socket实现的简单的Redis客户端基于C# Socket实现的简单的Redis客户端
前言
Redis是一款强大的高性能键值存储数据库,也是目前NOSQL中最流行比较流行的一款数据库,它在广泛的应用场景中扮演着至关重要的角色,包括但不限于缓存、消息队列、会话存储等。在本文中,我们将介绍如何基于C# Socket来实现一个简单的Red...[2023/11/15]
Redis 哨兵模式的原理及其搭建
1.Redis哨兵
Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。
1.1.哨兵原理
1.1.1.集群结构和作用
哨兵的结构如图:
哨兵的作用如下:
监控:Sentinel 会不断检查您的master和slave是否按预期工作。
自动故障恢复:如果...[2023/11/10]
Redis创始人开源最小聊天服务器,仅200行代码,几天功夫已获2.8K Star!
中午时候,在技术交流群里聊起关于Redis创始人的一些趣事,比如离开Redis之后,去写科幻小说之类的。
因为好奇科幻小说,TJ君就去搜索了一下。结果一搜,发现Redis作者最近居然又搞了个新活儿!
世界上最小的聊天服务器
这次Redis作者的新开源项目名叫:SmallChat。 从关于内容...[2023/11/6]
美团面试:Redis 除了缓存还能做什么?可以做消息队列吗?
这是一道面试中常见的 Redis 基础面试题,主要考察求职者对于 Redis 应用场景的了解。
即使不准备面试也建议看看,实际开发中也能够用到。
内容概览:
Redis 除了做缓存,还能做什么?
分布式锁:通过 Redis 来做分布式锁是一种比较常见的方式。通常情况下,我们都是基于 R...[2023/11/3]
Redis7新特性简介及十大数据类型Redis7新特性简介及十大数据类型
Redis是基于内存的K-V键值对内存数据库
浅谈Redis7新特性
主要是自身底层性能和资源利用率上的提高和优化。
多AOF文件支持
config命令增强
限制客户端内存使用
listpack紧凑列表调整
访问安全性增强
Redis Funct...[2023/11/1]
Redis中的缓存雪崩、缓存击穿、缓存穿透问题
1. 什么是缓存雪崩
当我们提到缓存系统中的问题,缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效,导致瞬间大量的请求直接打到了数据库,可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中,这种情况会导致连锁反应,整个系统可能会崩溃。
1.1 缓存雪崩的成因
大量...[2023/10/19]
分享一个Redis自带的压测工具:redis-benchmark
前言
今天给xdm分享一个Redis自带的压测工具:redis-benchmark。
介绍
redis-benchmark 是一个用于测试 Redis性能的基准测试工具,可以帮助开发人员评估和比较 Redis 在不同配置或负载情况下的吞吐量和延迟。
使用 redis-benchmark 可以...[2023/10/19]
探索Redis与MySQL的双写问题
本文已收录至GitHub,推荐阅读 ?? Java随想录
微信公众号:Java随想录
原创不易,注重版权。转载请注明原作者和原文链接
目录双写一致问题缓存读写策略Cache-Aside Pattern(旁路缓存模式)Read/Write Through Pattern(读写穿透模式)W...[2023/10/13]
4款.NET开源的Redis客户端驱动库
前言
今天给大家推荐4款.NET开源免费的Redis客户端驱动库(以下排名不分先后)。
Redis是什么?
Redis全称是REmote DIctionary Service,即远程字典服务。Redis 是一个使用C语言编写的、开源的(遵守 BSD 协议)、支持网络、可基于内存亦可持久化的日志...[2023/10/13]
Redis最常见的5种应用场景Redis最常见的5种应用场景
Redis作为当今最流行的内存数据库,已经成为服务端加速的必备工具之一。对于Redis为什么那么快?以及Redis采用单线程,但为什么反而获得更高的性能的疑问,在之前的Redis为什么那么快?一文中,已经有所介绍。
今天通过这篇,我们来了解一下Redis最常见的5种应用场景。您可以通过视频来学...[2023/10/9]
RedisStack部署/持久化/安全/与C#项目集成
前言
Redis可好用了,速度快,支持的数据类型又多,最主要的是现在可以用来向量搜索了。
本文记录一下官方提供的 redis-stack 部署和配置过程。
关于 redis-stack
redis-stack installs a Redis server with additional ...[2023/10/9]
Docker 安装 Redis 单机&集群总结
前言
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于 内存 、 分布式 、可选持久性的键值对( Key-Value )存储数据库
redis版本:redis:6.2.13
作者:易墨
安装单机版
安装源:DockerHub
默认配置...[2023/10/9]
【Redis】Redis事务:原子性与回滚的真相揭秘
大家好,我是mep。今天一起来探讨一下Redis缓存的问题,SpringBoot如何集成Redis网上文章很多,基本都是介绍如何配置redisTemplate,如何调用,本文就不过多介绍了。这次我们研究的是:Redis的事务。
首先抛出一个问题,Redis支持事务吗?
&...[2023/9/25]
记一次 Redisson 线上问题 → ERR unknown command 'WAIT' 的排查与分析
开心一刻
昨晚和一个朋友聊天
我:处对象吗,咱俩试试?
朋友:我有对象
我:我不信,有对象不公开?
朋友:不好公开,我当的小三
问题背景
程序在生产环境稳定的跑着
直到有一天,公司执行组件漏洞扫描,有漏洞的 jar 要进行升级修复
...[2023/9/20]
Linux服务器使用Redis作为数据缓存,并用log4j2进行日志记录
前言
个人网站使用Vue作为前端,SpringBoot作为后端,MySQL作为数据库,但前端每次请求都会从MySQL数据库中读取数据,而MySQL数据库的数据是存储于服务器磁盘中,所以响应速度有一定影响。之前了解过一点Redis数据库,该数据库数据存储于内存中(也可以持久化于磁盘中),数据读...[2023/9/20]
SpringBoot + Redis + Token 解决接口幂等性问题
前言
SpringBoot实现接口幂等性的方案有很多,其中最常用的一种就是 token + redis 方式来实现。
下面我就通过一个案例代码,帮大家理解这种实现逻辑。
原理
前端获取服务端getToken() -> 前端发起请求 -> header中带上token -...[2023/9/18]
Redis从入门到放弃(12):pipeline管道技术Redis从入门到放弃(12):pipeline管道技术
1、引言
在现代应用程序中,高性能和低延迟是至关重要的因素。而在处理大规模数据操作时,Redis作为一种快速、可靠的内存数据库,成为了许多开发人员的首选。
在Redis中,每个操作都需要与服务器进行往返通信,存在网络开销损耗,当有批量命令执行时,就会有较大的网络开销损耗。为了解决这个问题,Re...[2023/9/13]
Java开发面试--Redis专区Java开发面试--Redis专区
1、 什么是Redis?它的主要特点是什么?
答:
Redis是一个开源的、基于内存的高性能键值对存储系统。它主要用于缓存、数据存储和消息队列等场景。
高性能:Redis将数据存储在内存中,并采用单线程的方式处理请求,使得其读写速度非常快,能够达到10万+的读写操作每秒。
数据结构丰富...[2023/9/13]
redisredis
博客地址:https: www.cnblogs.com/zylyehuo/
五大数据类型
参考链接:redis学习
string,字符串类型
hash,哈希类型,如同python的dict
set,无序集合
zset,有序集合
list,双向队列,向左插入数据,向右插入数据,向左、右...[2023/9/10]
Redis的三大问题Redis的三大问题
一般我们对缓存读操作的时候有这么一个固定的套路:
如果我们的数据在缓存里边有,那么就直接取缓存的。
如果缓存里没有我们想要的数据,我们会先去查询数据库,然后将数据库查出来的数据写到缓存中。
最后将数据返回给请求
代码例子:
1 @Override
2 public R sel...[2023/9/10]
【后端面经-数据库】Redis数据结构和底层数据类型
目录1. Redis数据类型1.1 基本数据类型1. string2. hash3. list4. set5. sortset/Zset1.2 特殊数据类型1. bitmap2. hyperloglog3. GEO4. stream2. Redis底层数据类型2.1 简介2.2 动态字符串SD...[2023/9/9]
一台服务器上部署 Redis 伪集群一台服务器上部署 Redis 伪集群
哈喽大家好,我是咸鱼
今天这篇文章介绍如何在一台服务器(以 CentOS 7.9 为例)上通过 redis-trib.rb 工具搭建 Redis cluster (三主三从)
redis-trib.rb 是一个基于 Ruby 编写的脚本,其功能涵盖了创建、管理以及维护 Redis 集群的各个...[2023/8/29]
Redis常用命令
目录起因配置bind端口连接开启连接关闭连接命令key相关字符串相关hash相关List相关Set相关SortedSet相关GEO相关服务器命令引用
起因
从标题来看,似乎这篇博文没有看下去的必要了,谁用redis还敲命令行,不都是GUI嘛。
确实,GUI现在特别的好用,直观、高效还美观。...[2023/8/29]
Redis从入门到放弃(11):雪崩、击穿、穿透Redis从入门到放弃(11):雪崩、击穿、穿透
1、前言
Redis作为一款高性能的缓存数据库,为许多应用提供了快速的数据访问和存储能力。然而,在使用Redis时,我们不可避免地会面对一些常见的问题,如缓存雪崩、缓存穿透和缓存击穿。本文将深入探讨这些问题的本质,以及针对这些问题的解决方案。
2、缓存雪崩
2.1、问题描述
在某个时间点,...[2023/8/29]
Redis专题-秒杀
Redis专题-并发/秒杀
开局一张图,内容全靠“编”。
昨天晚上在群友里看到有人在讨论库存并发的问题,看到这里我就决定写一篇关于redis秒杀的文章。
1、理论部分
我们看看一般我们库存是怎么出问题的
其实redis提供了两种解决方案:加锁和原子操作。
1.1、加锁
加锁:...[2023/8/21]
Redis 持久化及集群架构
1 Redis 持久化
1.1 持久化的概念和原因
Redis 持久化是指将 Redis 服务器中的数据保存到磁盘上,以便在服务器重启后可以重新加载数据。持久化是为了解决 Redis 内存数据库的数据丢失问题。
持久化的原因有以下几点:
数据安全:通过将数据保存到磁盘上,即使发生服务器故障或...[2023/8/16]
优化 Redis 集群缓存分配:解决节点间分配不均导致内存溢出问题优化 Redis 集群缓存分配:解决节点间分配不均导致内存溢出问题
一、Redis 集群部署简介
在现代应用程序中,缓存被广泛应用以提高性能和减轻后端数据库的压力。本文将探讨面对 Redis 集群缓存分配不均问题时的解决方法。
我们的 Redis 集群部署包括 3 主 3 从,每个节点分配内存 4G(服务器总内存32G),内存淘汰策略相同:volatile-l...[2023/8/16]
缓存面试解析:穿透、击穿、雪崩,一致性、分布式锁、Redis过期,海量数据查找缓存面试解析:穿透、击穿、雪崩,一致性、分布式锁、Redis过期,海量数据查找
为什么使用缓存
在程序内部使用缓存,比如使用map等数据结构作为内部缓存,可以快速获取对象。通过将经常使用的数据存储在缓存中,可以减少对数据库的频繁访问,从而提高系统的响应速度和性能。缓存可以将数据保存在内存中,读取速度更快,能够大大缩短数据访问的时间,提升用户体验。
在业界中,通常在...[2023/8/9]
Redis从入门到放弃(10):分布式锁
在分布式系统中,实现对共享资源的安全访问是一个关键问题。Redis作为一种高性能的内存数据库,提供了多种方式来实现分布式锁,以解决多个节点之间对共享资源的并发访问问题。
本文将介绍五种Redis分布式锁的解决方案及其原理、应用场景以及Java代码的实现步骤。
1、SETNX
SETNX(SE...[2023/8/9]
Redis从入门到放弃(8):哨兵模式
在前面的文章中介绍了Redis的主从复制,但主从复制存在一定的缺陷。如果Master节点宕机,因为不具备自动恢复功能,需要人工干预,那么在这个干预过程中Redis将不可用。
为了解决这一问题,Redis官方推荐一种高可用方案:哨兵模式(Sentinel)。
1、什么是哨兵模式?
哨兵模式是R...[2023/8/4]
Redis从入门到放弃(7):主从复制Redis从入门到放弃(7):主从复制
目录1、概念2、作用3、配置4、原理4.1、第一阶段:建立链接、协商同步4.2、第二阶段:数据同步4.3、第三阶段:命令传播
1、概念
主从复制是Redis的一项重要特性,用于将一个Redis服务器(Master主节点)的数据复制到其他Redis服务器(Slave从节点),以实现数据的高可用...[2023/8/4]
Redis从入门到放弃(6):持久化Redis从入门到放弃(6):持久化
1、引言
Redis作为一种高性能的内存数据存储系统,常被用作缓存、会话存储、消息队列等多种应用场景。然而,由于其数据存储在内存中,一旦发生意外或服务器重启,数据就会丢失。为了保障数据的持久性和安全性。
Redis提供了多种持久化方案:
RDB(Redis DataBase):按指定的时间间...[2023/8/4]
Redis从入门到放弃(5):事务Redis从入门到放弃(5):事务
1、事务的定义
Redis的事务提供了一种“将多个命令打包, 然后一次性、按顺序地执行”的机制。
redis事务的主要作用就是串联多个命令防止别的命令插队。
但是,事务并不具有传统数据库事务的特性,如回滚。
2、事务命令
Redis中的事务可以通过以下命令来执行:
MULTI:用于开启一...[2023/7/31]
Redis从入门到放弃(3):发布与订阅
1、介绍
Redis是一个快速、开源的内存数据库,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。除了基本的数据存储和检索功能外,Redis还提供了许多高级功能,其中之一就是发布订阅(Pub/Sub)。
发布订阅是一种消息传递模式,它允许消息的发布者(发布者)将消息发送给多个订阅者(...[2023/7/28]
Redis从入门到放弃(1):安装配置
1. 介绍
Redis是一个高性能的开源key-value数据库。它被广泛应用于缓存、会话存储、实时分析、消息队列等场景。Redis具有以下三个主要特点:
数据持久化:Redis支持将内存中的数据保存到磁盘上,确保数据在断电或重启后不丢失。
多样数据结构:除了支持简单的key-value存储,...[2023/7/28]
Redis持久化机制 RDB、AOF、混合持久化详解!如何选择?
本文已经收录进 JavaGuide(「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。)
Redis 持久化机制属于后端面试超高频的面试知识点,老生常谈了,需要重点花时间掌握。即使不是准备面试,日常开发也是需要经常用到的。
最近抽空对之前写的 Redis 持...[2023/7/28]
Redis 主从同步原理
一、什么是主从同步?
主从同步,就是将数据冗余备份,主库(Master)将自己库中的数据,同步给从库(Slave)。
从库可以一个,也可以多个,如图所示:
二、为什么需要主从同步?
Redis 虽然有 RDB 和 AOF 持久化技术,可以在服务器重启的情况下保证内存中的数据不会丢失(但不...[2023/7/28]
微服务探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka
1 安装Redis
1.1创建配置文件redis.conf
切换到自己的目录下如本文是放在/home/ubuntu下
cd /home/ubuntu
vim redis.conf
bind 0.0.0.0
protected-mode yes
port 6379
requirepa qw...[2023/7/24]
Redis解决网络抖动问题
Redis解决网络抖动问题
所谓网络抖动问题, 简单来说就是防止用户短暂的时间内对同一个接口多次点击访问
这里利用的是redis锁的原子性和with Statement上下文管理器实现, 另外该类还支持协程, 可使用async with 调用
1. 源码
FuncDefine.py
def...[2023/7/24]
如何使用C#中的Lambda表达式操作Redis Hash结构,简化缓存中对象属性的读写操作
Redis是一个开源的、高性能的、基于内存的键值数据库,它支持多种数据结构,如字符串、列表、集合、散列、有序集合等。其中,Redis的散列(Hash)结构是一个常用的结构,今天跟大家分享一个我的日常操作,如何使用Redis的散列(Hash)结构来缓存和查询对象的属性值,以及如何用Lambda...[2023/7/17]
2023-06-19:讲一讲Redis分布式锁的实现?
2023-06-19:讲一讲Redis分布式锁的实现?
答案2023-06-19:
Redis分布式锁最简单的实现
要实现分布式锁,确实需要使用具备互斥性的Redis操作。其中一种常用的方式是使用SETNX命令,该命令表示"SET if Not Exists",即只有在key不存在时才设置其...[2023/6/19]
2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?
2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?
答案2023-06-13:
选用方案:HyperLogLog
如果统计 PV (页面浏览量)那非常好办,可以考虑为每个网页创建一个独立的 Redis 计数器,并将日期添加为键(key)的后缀。当网页...[2023/6/14]
通过redis学网络(2)-redis网络模型
本系列主要是为了对redis的网络模型和集群原理进行学习,我会用golang实现一个reactor网络模型,并实现对redis协议的解析。
系列源码已经上传github
https: github.com/HobbyBear/tinyredi tree/chapter2
redis 网...[2023/6/12]