切换语言为:繁体
Redis 6.0 以后为什么使用了多线程?

Redis 6.0 以后为什么使用了多线程?

Redis 所谓的单线程并不是所有工作都是只有一个线程在执行,而是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,Redis 在处理客户端的请求时包括获取 (socket 读)、解析、执行、内容返回 (socket 写...

基于canal与Redis发布订阅构建让应用起飞的多级缓存方案及实践

基于canal与Redis发布订阅构建让应用起...

一、背景 某系统作为公司产品矩阵底座,每天面对数十亿级流量请求。在核心接口全链路压测时发现需多次通过网络请求分布式缓存,影响接口耗时。缓存、熔断、限流作为应对高并发系统的三板斧,其中熔断限流作为系统的自我保护机制,而缓存作...

如何用Redis高效实现点赞功能?用Set?还...

在众多软件应用中,点赞功能几乎成了所有应用中的“标配”。但实现一个高效的点赞功能并不简单,尤其是在面对大规模的用户量和高并发场景时。今天,我们就从实际需求出发,探索如何利用 Redis 的数据结构来设计一个点赞系统,从而理解 Set ...

Nginx想实现动态封禁IP?详细教程来了

Nginx想实现动态封禁IP?详细教程来了

需求为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单。对于黑名单中的 IP ,我们将拒绝提供服务。并且可以设置封禁失效时间环境准备linux version: centos7 / ubuntu 等 r...

基于golang实现IP访问限制及提交次数

  • 2024-10-21

在 Web 应用中,通常会需要对 IP 访问进行限制以及控制提交次数,以防止恶意攻击(例如暴力破解、DoS攻击、API滥用等)。为了实现这一功能,我们可以结合 Golang 的特性,使用中间件或者基于 Redis 这样的缓存服务来实现...

从一个事故中理解Redis(几乎)所有知识点

从一个事故中理解Redis(几乎)所有知识点

简单回顾事故回溯总结一句话:(1)因为大KEY调用量,随着白天自然流量趋势增长而增长,最终在业务高峰最高点期占满带宽使用100%。(2)从而引发redis的内存使用率,在5min之内从0%->100%。(3)最终全面GET SET t...

通过 Socket 以及 Netty 两种方式...

前言实现客户端与服务端间通信,在传输层协议 TCP 或 UDP 的基础上,定义客户端与服务端都能识别信息的一套规则:一方进行编码,另一方进行解码,这便是【协议】。在 Redis 中,定义了简单的 RESP(REdis Serializ...

深入探讨 Redis 内存淘汰机制!

在面试中,经常会遇到 Redis内存满了该如何处理的问题,其本质是内存淘汰策略。在 Redis中,提供了多种内存淘汰策略,用户可以根据具体应用场景和需求选择合适的策略。这些策略主要用于决定在内存达到上限时,哪些数据应该被移除。这篇文章...

Redis大key存在的原因、影响以及解决方案

在Redis中,对于大key并没有标准的定义,更多的是根据业务而定,如果一个key对应的value所占用的内存比较大,那这个key就可以看作是大key。通常对于大key的定义,有如下两种情况:1、String类型的value对内存的占...

Redis 的 Java 客户端有哪些?官方推荐哪个?

Redis 的 Java 客户端有哪些?官方推...

Redis 官网展示的 Java 客户端如下图所示,其中官方推荐的是标星的3个:Jedis、Redisson 和 lettuce。Redis 的 Java 客户端中,Jedis、Lettuce 和 Redisson 是最常用的三种。以...

Redis 实现分布式锁容易忽略的5个问题

一、锁未被释放问题描述:在高并发情况下,如果线程获取到锁后,由于异常或其他原因没有释放锁,会导致其他线程无法获取到锁,从而影响程序的正常运行。解决方案:确保在finally块中释放锁,以保证锁一定会被释放。代码示例:public St...

如何正确理解Redis6中的「多线程」?

Redis 作为 NoSQL 的典型代表,一直是以单线程性能高著称,但是在 Redis 6 中,官方推出了多线程的功能,那么,Redis6 的多线程到底该如何理解?为什么官方要引进多线程呢?这篇文章,我们来聊一聊。引入背景Redis ...