作为一个长期和关系型数据库(RDBMS)打交道的开发者,初次查阅 Redis 文档时,看到 MULTI、EXEC、DISCARD 这些指令,心中难免涌起一股由于熟悉而带来的安全感。
我们的大脑会自动建立映射:MULTI 就是 BEGIN,EXEC 就是 COMMIT,DISCARD 就是 ROLLB... ...
很多时候,我们从简单方案过渡到复杂方案,并不是因为想炫技,而是在无数次"掉坑"之后,对代码、对线上的敬畏。但同样,在面对过度设计时,也要有敢于说"不"的底气:如果单实例够用,就别搞集群;如果 Redis 够用,就别上 Redlock。 ...
适用场景:生产环境搭建高可用 MongoDB 副本集,确保数据冗余与自动故障转移 MongoDB 版本:7.0.28(社区版) 操作系统:CentOS 7.9 架构:1 主(Primary) + 2 从(Secondary),共 3 个数据承载节点(P-S-S) 文件系统:XFS(推荐 XFS) 一 ...
背景 之前分享个 case(Redis 内存突增时,如何定量分析其内存使用情况),一个 Redis 实例的内存突增,used_memory最大时达到了 78.9G,而该实例的maxmemory配置却只有 16G,最终导致实例中的数据被大量驱逐。 导致这个问题的一个常见原因是客户端占用的内存过多。 R ...
如果有人问我:"ES 怎么才能用得更好?"我的回答是:"先理解业务场景,再选择技术方案。技术的价值不在于多复杂,而在于能否优雅地解决实际问题。与大家共勉。" ...
曾以为掌握了Elasticsearch的match查询就征服了搜索世界——直到产品经理轻叩桌面,抛出一个看似简单的要求:"我们需要像MySQL的LIKE '%关键词%'那样前后通配的模糊搜索。" ...
在之前的文章中,我们介绍了如何使用索引生命周期策略来管理索引。如果要求索引根据其生命周期阶段自动在不同的节点之间迁移,还需要用到冷热架构。我们来看看具体如何实现。 冷热架构 冷热架构其实就是在 Easyearch 集群中定义不同属性的节点,这些节点共同组成冷热架构。比如给所有热节点一个 hot 属性 ...
在集群下的并发问题: 业务流程: 具体实现: ILock 点击查看代码 package com.hmdp.utils; public interface ILock { // 获取锁 boolean tryLock(long timeoutSec); // 释放锁 void unlock(); } ...
Redis内存管理 Redis的内存用完了会怎样? 如果达到设置的上限,Redis的写命令会返回错误信息(但是读命令还可以正常返回)。 也可以配置内存淘汰机制,当Redis达到内存上限时会冲刷掉旧的内容。 Redis如何做内存优化? 可以好好利用Hash,list,sorted set,set等集合 ...
计算Redis容量,并不只是仅仅计算key占多少字节,value占多少字节,因为Redis为了维护自身的数据结构,也会占用部分内存,本文章简单介绍每种数据类型(String、Hash、Set、ZSet、List)占用内存量,供做Redis容量评估时使用。当然,大多数情况下,key和value就是主要 ...
将验证码 (session.setAttribute("code", code));用户信息 (session.setAttribute("user", userDTO))改为存入redis中 将随机生成的token作为登录凭证,放在请求头中的authorization字段 并设置两层拦截器,解决状 ...
一、Redis简介: Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。 Redis通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(H ...
过期删除策略的深度剖析 Redis 可以对 key 设置过期时间的,为了防止过期的key长期占用内存,需要相应的过期删除策略将过期的key删除 基础操作 Redis设置过期时间 setex key1 5 value1:创建记录的时候指定过期时间,设置key1在5秒后过期 其实Redis这是一种基于创 ...
Redis有哪些部署方案? *单机版**:单机部署,单机redis能够承载的 QPS 大概就在上万到几万不等。这种部署方式很少使用。存在的问题:1、内存容量有限 2、处理能力有限 3、无法高可用。 主从模式:一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部 ...
Redis 支持事务吗?与关系型数据库事务的区别? Redis 支持事务,但它的事务与 MSQL中的事务有所不同,MSOL中的事务主要支持 ACID 的特性,而 Redis中的事务主要保证的是多个命令执行的原子性,即所有的命令在一个原子操作中执行,不会被打断。还有一个很重要的点,就是 MySQL 中 ...
Redis 数据类型有哪些? 详细可以查看:数据类型及其应用场景 基本数据类型: String:最常用的一种数据类型,String类型的值可以是字符串、数字或者二进制,但值最大不能超过512MB。一般用于 缓存和计数器 Hash:Hash 是一个键值对集合。存储商品的各个属性 Set:无序去重的集合 ...
Redis 的原子性是指 Redis 在执行命令时能够保证操作的完整性,即在执行过程中不会被其他操作打断。 Redis 的原子性体现在以下几个方面: 1. 单个命令的原子性 Redis 的每个命令都是原子性的,这意味着当一个命令在执行时,它不会被其他命令中断。例如,当你执行一个 INCR 命令时,R ...
概述 Redis 的主从复制(Master-Slave Replication)是实现数据备份、读写分离和水平扩展的核心机制之一。通过主从复制,一个主节点(Master)可以将数据同步到多个从节点(Slave),从节点还可以级联创建自己的从节点,从而形成树状结构。 注意,Redis的主从复制是实现高 ...
高并发下 Redis 事务的原子性分析 1. 代码结构分析 redisTemplate.execute(new SessionCallback<Object>() { @Override public <String, Long> Object execute(RedisOperations<Str ...
概述 Redis是基于内存的nosql数据库,数据一般是存储于内存中,想让内存数据保存到磁盘中,我们需要利用Redis的持久化机制。 Redis的持久化机制用于将内存中的数据保存到磁盘,以便在重启后恢复数据。 Redis 提供了两种主要的持久化方式: RDB(Redis Database)快照 AO ...