2023-06-07:Redis 持久化方式有哪些?以及有什么区别?
2023-06-07:Redis 持久化方式有哪些?以及有什么区别?
答案2023-06-07:
Redis提供了两种持久化机制:RDB和AOF。
RDB
RDB持久化是将Redis当前进程中的数据生成快照并保存到硬盘的过程。快照指的是Redis在某一时刻的内存状态的记录,类似于拍照一...[2023/6/8]
通过redis学网络(1)-用go基于epoll实现最简单网络通信框架
本系列主要是为了对redis的网络模型进行学习,我会用golang实现一个reactor网络模型,并实现对redis协议的解析。
系列源码已经上传github
https: github.com/HobbyBear/tinyredi tree/chapter1
redis的网络模...[2023/6/7]
k8s实战案例之部署redis单机和redis cluster - Linux-1874
1、在k8s上部署redis单机
1.1、redis简介
redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009年发布,使用C语言编写;redis是基于内存存储,而且是目前比较流行的键值数据库(key-val...[2023/6/7]
Redis系列14:使用List实现消息队列 - Hello-Brand
Redis系列1:深刻理解高性能Redis的本质
Redis系列2:数据持久化提高可用性
Redis系列3:高可用之主从架构
Redis系列4:高可用之Sentinel(哨兵模式)
Redis系列5:深入分析Cluster 集群模式
追求性能极致:Redis6.0的多线程模型
追求...[2023/6/5]
redis.conf 7.0 配置和原理全解,生产王者必备
5.5 redis.conf 配置详解
我是 Redis, 当程序员用指令 ./redis-server /path/to/redis.conf 把我启动的时候,第一个参数必须是redis.conf 文件的路径。
这个文件很重要,就好像是你们的 DNA,它能控制我的运行情况,不同的配置会有不同...[2023/5/30]
Redis系列13:分布式锁实现 - Hello-Brand
Redis系列1:深刻理解高性能Redis的本质
Redis系列2:数据持久化提高可用性
Redis系列3:高可用之主从架构
Redis系列4:高可用之Sentinel(哨兵模式)
Redis系列5:深入分析Cluster 集群模式
追求性能极致:Redis6.0的多线程模型
追求...[2023/5/30]
Redis内存兜底策略——内存淘汰及回收机制
Redis内存兜底策略——内存淘汰及回收机制
Redis内存淘汰及回收策略都是Redis内存优化兜底的策略,那它们是如何进行兜底的呢?先来说明一下什么是内存淘汰和内存回收策略:
Redis内存淘汰:当Redis的内存使用超过配置的限制时,根据一定的策略删除一些键,以释放内存空间
Redis内存...[2023/5/25]
2023-05-24:为什么要使用Redis做缓存?
2023-05-24:为什么要使用Redis做缓存?
答案2023-05-24:
缓存的好处
买啤酒和喝啤酒的例子可以帮助我们理解缓存的好处。
假设你在超市里买了一箱啤酒,如果你需要每次想喝啤酒就去超市购买,无疑会浪费很多时间和精力。而如果你将一部分啤酒放在家中的冰箱里,每次想喝啤酒时就...[2023/5/25]
一次redis主从切换导致的数据丢失与陷入只读状态故障
背景
最近一组业务redis数据不断增长需要扩容内存,而扩容内存则需要重启云主机,在按计划扩容升级执行主从切换时意外发生了数据丢失与master进入只读状态的故障,这里记录分享一下。
业务redis高可用架构
该组业务redis使用的是一主一从,通过sentinel集群实现故障时的自动主从切换...[2023/5/22]
Redis 高级特性 Redis Stream使用Redis 高级特性 Redis Stream使用
Redis Stream 简介
Redis Stream 是 Redis 5.0 版本新增加的数据结构。
Stream从字面上看是流类型,但其实从功能上看,应该是Redis对消息队列(MQ,Me age Queue)的完善实现。下文称Stream为队列
Stream 出现原因:
Str...[2023/5/19]
Redis基础命令汇总,看这篇就够了
本文首发于公众号:Hunter后端
原文链:Redis基础命令汇总,看这篇就够了
本篇笔记将汇总 Redis 基础命令,包括几个常用的通用命令,和各个类型的数据的操作,包括字符串、哈希、列表、集合、有序集合等在内的基本操作。
以下是本篇笔记目录:
通用命令
字符串命令
哈希命令
列表...[2023/5/15]
Redis数据结构一之对象的介绍及各版本对应实现Redis数据结构一之对象的介绍及各版本对应实现
本文首发于公众号:Hunter后端
原文链接:Redis数据结构一之对象的介绍及各版本对应实现
本篇笔记开始介绍 Redis 数据结构的底层实现。
当我们被问到 Redis 中有什么数据结构,或者说数据类型,我们可能会说有字符串、列表、哈希、集合、有序集合。
其实这几种数据类型在 R...[2023/5/15]
聊一聊redis十种数据类型及底层原理聊一聊redis十种数据类型及底层原理
概述
Redis 是一个开源的高性能键值数据库,它支持多种数据类型,可以满足不同的业务需求。本文将介绍 Redis 的10种数据类型,分别是
string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(有序集合)
stream(流)
geospatial(地理)
bi...[2023/5/10]
知乎问题:如何说服技术老大用 Redis ?
这个问题很微妙,可能这位同学内心深处,觉得 Redis 是所有应用缓存的标配。
缓存的世界很广阔,对于应用系统来讲,我们经常将缓存划分为本地缓存和分布式缓存。
本地缓存 :应用中的缓存组件,缓存组件和应用在同一进程中,缓存的读写非常快,没有网络开销。但各应用或集群的各节点都需要维护自己的...[2023/5/8]
【Redis】常用命令介绍【Redis】常用命令介绍
一、Redis常用基本命令
官方文档:https: redis.io/command
参考文档:http: redisdoc.com/
#可以使用help命令查看各redis命令用法 [root@Client-Ubuntu-1804-250:~]# redis-cli -a redi...[2023/5/8]
这可能是最全面的Redis面试八股文了这可能是最全面的Redis面试八股文了
Redis连环40问,绝对够全!
Redis是什么?
Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库。与传统数据库不同的是,Redis 的数据是存在内存中的,所以读写速度非常快,被广泛应用于缓存方向。Redis可以将数据写...[2023/4/26]
在Linux上安装redis7
1.检测虚拟机环境
1.1 bit检测命令:getconf LONG_BIT(建议使用64bit做开发)
1.2 gcc环境检测:gcc -v
如果不具备gcc环境,则使用yum -y install gcc- c++命令进行c++环境的安装
2.开始安装
2.1 下载redis:
进...[2023/4/26]
详解Redis三大集群模式,轻松实现高可用!
1. Redis集群简介
1.1 什么是Redis集群
Redis集群是一种通过将多个Redis节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许Redis在不同节点上同时提供服务,提高整体性能和可靠性。根据搭建的方式和集群的特性,Redis集群主要有三种模式:主从复制模式(Ma...[2023/4/24]
Redis - 数据类型映射底层结构
简介
从数据类型上体现就是,同一个数据类型,在不同的情况下会使用不同的编码类型,底层所使用的的数据结构也不相同。
字符串对象
字符串对象的编码可以是 int、raw 和 embstr 三者之一。
embstr 编码是专门用于保存简短字符串的一种优化编码方式,与 raw 编码会调用两次内存...[2023/4/21]
彻底搞懂Redis持久化机制,轻松应对工作面试
1. 为什么要持久化
Redis是基于内存存储的数据库,如果遇到服务重启或者崩溃,内存中的数据将会被清空。所以为了确保数据安全性和可靠性,我们需要将内存中的数据持久化到磁盘上。
持久化不仅可以防止由于系统故障、重启或者其他原因导致的数据丢失。还可以用于备份、数据恢复和迁移等操作。
2. R...[2023/4/21]
微服务 - Redis缓存 · 数据结构 · 持久化 · 分布式 · 高并发
本篇内容基于 Redis v7.0 的阐述;官网:https: redis.io/
本篇计划用 Docker 容器辅助部署,所以需要了解点 Docker 知识;官网:https: www.docker.com
系列目录:
微服务 - 概念 · 应用 · 通讯 · 授权 · 跨域 · 限流
...[2023/4/19]
Redis性能瓶颈揭秘:如何优化大key问题?
1. 什么是Redis大key问题
Redis大key问题指的是某个key对应的value值所占的内存空间比较大,导致Redis的性能下降、内存不足、数据不均衡以及主从同步延迟等问题。
到底多大的数据量才算是大key?
没有固定的判别标准,通常认为字符串类型的key对应的value值占用...[2023/4/19]
Redis分布式锁这样用,有坑?
背景
在微服务项目中,大家都会去使用到分布式锁,一般也是使用Redis去实现,使用RedisTemplate、Redi on、RedisLockRegistry都行,公司的项目中,使用的是Redi on,一般你会怎么用?看看下面的代码,是不是就是你的写法
String lockKey...[2023/4/17]
聊聊Redis sentinel 机制
Redis 的哨兵机制自动完成了以下三大功能,从而实现了主从库的自动切换,可以降低 Redis 集群的运维开销:
监控主库运行状态,并判断主库是否客观下线;
在主库客观下线后,选取新主库;
选出新主库后,通知从库和客户端。
一、为什么需要哨兵
主从模式下,如果主库发生故障了...[2023/4/17]
深入理解 Redis 新特性:Stream
该数据结构需要 Redis 5.0.0 + 版本才可用使用
概述
Redis stream 是 Redis 5 引入的一种新的数据结构,它是一个高性能、高可靠性的消息队列,主要用于异步消息处理和流式数据处理。在此之前,想要使用 Redis 实现消息队列,通常可以使用例如:列表,有序集合、发...[2023/4/17]
Redis为什么能抗住10万并发?揭秘性能优越的背后原因
1. Redis简介
Redis是一个开源的,基于内存的,高性能的键值型数据库。它支持多种数据结构,包含五种基本类型 String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),和三种特殊类型 Geo(地理位置)、HyperLogLog(基数统计)、Bi...[2023/4/14]
太坑了吧!一次某某云上的redis读超时排查经历
一次排查某某云上的redis读超时经历
性能排查,服务监控方面的知识往往涉及量广且比较零散,如何较为系统化的分析和解决问题,建立其对性能排查,性能优化的思路,我将在这个系列里给出我的答案。
问题背景
最近一两天线上老是偶现的redis读超时报警,并且是业务低峰期间,甚是不解,于是开始着手排...[2023/4/12]
深度剖析Redis九种数据结构实现原理,建议收藏
1. Redis介绍
Redis 是一个高性能的键值存储系统,支持多种数据结构。
包含五种基本类型 String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),和三种特殊类型 Geo(地理位置)、HyperLogLog(基数统计)、Bitmaps(位图)。...[2023/4/12]
Redis源码之SDS简单动态字符串
Redis 是内存数据库,高效使用内存对 Redis 的实现来说非常重要。
看一下,Redis 中针对字符串结构针对内存使用效率做的设计优化。
一、SDS的结构
c语言没有string类型,本质是char[]数组;而且c语言数组...[2023/4/12]
Redis - 底层数据结构
简介
Redis 的底层数据结构主要以下几种:
SDS(Simple Dynamic String, 简单动态字符串)
ZipList(压缩列表)
QuickList(快表)
Dict(字典)
IntSet(整数集合)
ZSkipList(跳跃表)
简单动态字符串
在 Redis 中,并不...[2023/4/12]
三天吃透Redis八股文
Redis连环40问,绝对够全!
Redis是什么?
Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库。与传统数据库不同的是,Redis 的数据是存在内存中的,所以读写速度非常快,被广泛应用于缓存方向。Redis可以将数据写...[2023/4/10]
一文讲透 Redis 事务 (事务模式 VS Lua 脚本)
准确的讲,Redis 事务包含两种模式 : 事务模式 和 Lua 脚本。
先说结论:
Redis 的事务模式具备如下特点:
保证隔离性;
无法保证持久性;
具备了一定的原子性,但不支持回滚;
一致性的概念有分歧,假设在一致性的核心是约束的语意下,Redis 的事务可以保证一致性。
但 ...[2023/4/10]
Redis系列12:Redis 的事务机制 - Hello-Brand
Redis系列1:深刻理解高性能Redis的本质
Redis系列2:数据持久化提高可用性
Redis系列3:高可用之主从架构
Redis系列4:高可用之Sentinel(哨兵模式)
Redis系列5:深入分析Cluster 集群模式
追求性能极致:Redis6.0的多线程模型
追求...[2023/4/6]
Redis分布式Session和普通的cookie session有什么区别?
Redis 是一种高性能的缓存和 key-value 存储系统,常被用来实现分布式 Se ion 的方案。在这种方案中,用户的登录信息存储在 Redis 中,而不是存储在本地的 cookie 或 se ion 中。
当用户在集群中的不同节点之间切换时,通过读取 Redis 中的登录信息,各个节...[2023/3/31]
Redis高频40问
Redis连环40问,绝对够全!
Redis是什么?
Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库。与传统数据库不同的是,Redis 的数据是存在内存中的,所以读写速度非常快,被广泛应用于缓存方向。Redis可以将数据写...[2023/3/29]
GO实现Redis:GO实现Redis集群(5)
采用一致性hash算法将key分散到不同的节点,客户端可以连接到集群中任意一个节点
https: github.com/csgopher/go-redis
本文涉及以下文件:
consistenthash:实现添加和选择节点方法
standalone_database:单机databas...[2023/3/27]
Redis - 对象结构Redis - 对象结构
简介
Redis 使用对象存储数据库中的键和值,每当在 Redis 中创建一个新的键值对时,都会创建两个对象:一个是键对象,另一个是值对象。
其中,Redis 的每种对象都由对象结构和对应编码的数据结构组合而成,而每种对象类型对应若干编码方式,不同编码方式对应的底层数据结构也会有所不同。
...[2023/3/27]
GO实现Redis:GO实现TCP服务器(1)
本文实现一个Echo TCP Server
完整代码:https: github.com/csgopher/go-redis
interface/tcp/Handler.go
type Handler interface {
Handle(ctx context.Context...[2023/3/24]
Redis批量删除key的命令详解Redis批量删除key的命令详解
redis中没有直接根据正则表达式删除key的命令,只有del key1 key2...命令
但是redis中有通过正则表达式获取key的命令:keys "正则表达式"
可以借助于xargs命令实现批量删除key,把查出来的key值当做参数传给del
redis-c...[2023/3/24]
Redis - 基础数据类型
简介
根据 官网文档 的解释,可以了解 Redis 基础数据类型的一些基本信息:
对于 Redis 来说,存储的 key 值都是字符串类型,讨论数据类型的时候,指的都是存储的 value 值。这里主要是包括 5 种数据类型:String、List、Set、Hash、SortedSet。
...[2023/3/22]
ASP.NET Core使用filter和redis实现接口防重
背景
日常开发中,经常需要对一些响应不是很快的关键业务接口增加防重功能,即短时间内收到的多个相同的请求,只处理一个,其余不处理,避免产生脏数据。这和幂等性(idempotency)稍微有点区别,幂等性要求的是对重复请求有相同的效果和结果,通常需要在接口内部执行业务操作前检查状态;而防重可以认为是...[2023/3/17]
Redis使用ZSET实现消息队列使用总结二Redis使用ZSET实现消息队列使用总结二
转载请注明出处:
目录
1.redis 用zset做消息队列如何处理消息积压
2.redis分片并使用zset做消息队列
3. redis如何分片
4. redis使用java发送消息到zset队列并对消息进行分片处理
5. redis使用zset做消息队列时,...[2023/3/17]
【Redis场景5】集群秒杀优化-分布式锁
集群环境下的秒杀问题
前序
【Redis场景1】用户登录注册
【Redis场景2】缓存更新策略(双写一致)
【Redis场景3】缓存穿透、击穿问题
【Redis场景拓展】秒杀问题-全局唯一ID生成策略
【Redis场景4】单机环境下秒杀问题
在单机环境下的并发问题,我们可以使用相关锁...[2023/3/6]
深入理解跳表及其在Redis中的应用
前言
跳表可以达到和红黑树一样的时间复杂度 O(logN),且实现简单,Redis 中的有序集合对象的底层数据结构就使用了跳表。其作者威廉·普评价:跳跃链表是在很多应用中有可能替代平衡树的一种数据结构。本篇文章将对跳表的实现及在Redis中的应用进行学习。**
一. 跳表的基础概念
跳表,即跳...[2023/2/24]
Spring中RedisTemplate的基本使用浅析
目录spring-data-redis项目使用步骤 spring-data-redis项目
spring-data-redis提供了在Spring应用中通过简单的配置访问redis服务,封装了 RedisTemplate 对象来对Redis进行各种操作、异常处理及序列化,...[2023/2/22]
用Redis实现延迟队列,我研究了两种方案,发现并不简单
大家好,我是三友~~
背景
前段时间有个小项目需要使用延迟任务,谈到延迟任务,我脑子第一时间一闪而过的就是使用消息队列来做,比如RabbitMQ的死信队列又或者RocketMQ的延迟队列,但是奈何这是一个小项目,并没有引入MQ,我也不太想因为一个延迟任务就引入MQ,增加系统复杂度,所以这个方...[2023/2/15]
redis实现分布式锁(包含代码以及分析利弊)
redis实现分布式锁(基础版)
使用redis实现分布式锁的方法有多种,基础版本是基于setnx命令,即如果不存在则设置。这个命令可以保证只有一个客户端能够成功设置一个key,从而获得锁。设置key的时候需要设置一个过期时间,以防止死锁。释放锁的时候需要删除key,或者使用lua脚本来保证原子...[2023/2/13]
Redisson分布式闭锁RCountDownLatch的使用详细讲解Redisson分布式闭锁RCountDownLatch的使用详细讲解
目录一、RCountDownLatch的使用二、trySetCount()设置计数器三、countDown()源码四、await()源码 本篇文章基于redi on-3.17.6版本源码进行分析
一、RCountDownLatch的使用
RCountDownLatch的功能跟CountDow...[2023/2/13]
Redisson分布式信号量RSemaphore的使用超详细讲解
目录一、RSemaphore的使用二、RSemaphore设置许可数量三、RSemaphore的加锁流程四、RSemaphore的解锁流程 本篇文章基于redi on-3.17.6版本源码进行分析
一、RSemaphore的使用
@Test
public void testRSemapho...[2023/2/13]
Redisson RedLock红锁加锁实现过程及原理
目录一、主从redis架构中分布式锁存在的问题二、红锁算法原理三、红锁算法的使用四、红锁加锁流程五、RedLock算法问题六、总结 本篇文章基于redi on-3.17.6版本源码进行分析
一、主从redis架构中分布式锁存在的问题
1、线程A从主redis中请求一个分布式锁,获取锁成功;
...[2023/2/13]