注明:《Redis设计与实现》的个人学习总结,这本书对redis的讲解清晰易懂,如果深入学习可以看看这本书。 目录前言第1章:引言第2章 简单动态字符串2.1 SDS的定义2.2 SDS与C字符串的区别2.2.1 常数复杂度获取字符串长度2.2.2 杜绝缓冲区溢出2.2.3 减少修改字符串时带来的内存重分配次数1.空间预分配2.惰性空间释放2.2.4 二进制安全2.2.5 兼容部分C字符串函数2.
转载
2023-08-17 11:03:33
52阅读
Redis核心数据结构和高性能原理Redis安装安装问题处理修改了redis.conf文件关闭防火墙关闭防火墙开放端口redis.conf中绑定多个ip地址用空格进行分隔绑定任意IP设置redis密码(已踩坑)使用telnet测试远程ip的端口Redis基础数据结构字符串常用操作原子计数应用场景分布式锁单值缓存对象缓存计数器web集群session共享分布式系统全局idlist(列表)应用场景模
转载
2024-03-03 09:06:11
7阅读
底层数据结构Redis 解决哈希冲突的方式,就是链式哈希 如果一次性把哈希表 1 中的数据都迁移完,会造成 Redis 线程阻塞,无法服务其他请求。此时,Redis 就无法快速访问数据了。 为了避免这个问题,Redis 采用了渐进式 rehash。 简单来说就是在第二步拷贝数据时,Redis 仍然正常处理客户端请求,每处理一个请求 时,从哈希表 1 中的第一个索引位置开始,顺带着将这个索引位置上的
转载
2023-07-09 20:28:47
35阅读
前言读完《Redis设计与实现》这本书之后,感觉讲得很好很详细,特此进行一些常用点的记录总结,以供之后复习回顾。对象Redis的主要数据结构是简单动态字符串SDS、双端链表、字典、压缩列表、整数集合、跳跃表(分别对应Redis数据类型String、List、Hash、Set和ZSet的底层实现),但是Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建一个对象系统,这个
转载
2024-03-30 22:21:45
54阅读
一.出现的背景:Redis 主从复制模式下一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用这种场景的这种故障处理方式是非常浪费人力的。为了提供Redis主从的高可用性,Redis从2.8版本开始提供Redis Sential(哨兵)架构来解决问题。 二.架构图: 三.Redis Sentinel的高可用方案主要介绍:由
转载
2023-06-07 22:06:16
93阅读
存储结构大家一定对字典类型的数据结构非常熟悉,比如map ,通过key value的方式存储的结构。 redis的全称是remote dictionary server(远程字典服务器),它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。 Redis的安装redis约定次版本号(第一个小数点后的数字)为偶数版本是稳定版,如2.8、3.0,4.0 奇数版本为非稳定版,生产
转载
2023-08-11 20:26:18
79阅读
一、Redis的数据类型1. Redis的数据类型2. Redis键值对数据库及其底层结构3. Redis对象(RedisObject)3.1 概念Redis中的任意数据类型的键和值都会被封装为一个RedisObject,也叫做Redis对象。思考:什么是redisObject:答:从Redis的使用者的角度来看,⼀个Redis节点包含多个database(非cluster模式下默认是16个,cl
转载
2023-12-30 16:16:41
93阅读
redis原理及基本命令redis定义redis安装使用安装启动redis结构字符串字符串定义字符串特点字符串基础命令存储结构应用场景双端队列 (链表)list基础命令应用场景hash基础命令存储结构应用场景SET基础命令存储结构应用场景zset基础命令存储结构应用场景redis抽象概念 redis定义Redis 是 Remote Dictionary Service 的简称,被称为远程字典服务
转载
2023-05-29 09:13:17
38阅读
Redis系列之缓存原理&设计 缓存基本思想 缓存的使用场景 DB缓存,减轻服务器压力 一般情况下数据存在数据库中,应用程序直接操作数据库。当应用程序访问量上万,数据库压力突然增大,如果需要减轻数据库
原创
2022-04-13 11:24:54
62阅读
原理会存在一个问题:redis主节点加锁成功后去处理业务逻辑,后台同步从节点前主节点跪了造成锁丢失底层操作redis的有lettuce、jedis、redission(也可用于分布式)redis之redission的分布式锁,既可用于单体应用,也可用于分布式项目对于分布式锁的操作和在单体应用中使用JUC的锁的操作是一样的redission的可重入锁(Reentrant Lock)有看门狗机制,可解
转载
2023-08-15 13:13:26
139阅读
前言Redis 是如今互联网技术架构中,使用最广泛的缓存。支持复杂的数据结构,支持持久化,支持主从集群,支持高可用,支持较大的value存储...同时, Redis 也是中高级后端工程师技术面试中,面试官最喜欢问的问题之一。特别是那些优秀的、竞争激烈的大厂,通常要求面试者不仅仅掌握 Redis 基础使用,更要求深层理解 Redis 内部实现的细节原理。毫不夸张地说,能把 Redis 的知识点全部吃
转载
2023-08-02 15:36:54
494阅读
什么是秒杀秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。秒杀系统场景特点秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成功
转载
2023-12-15 21:08:26
12阅读
文章目录一,redis的简介二,redis架构三,redis数据持久化两种方式:RDB和AOF 一,redis的简介Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APIredis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链
转载
2023-08-11 10:13:52
147阅读
1.简述redis队列一般用于缓解数据库压力 ,诸如秒杀,邮件群发,消息推送等等redis的加入能很好的 帮助系统中 各个模块解耦。而Redis不仅可作为缓存服务器,还可用作消息队列。它的列表类型天生支持用作消息队列。如下图所示: 对于服务器减少io 压力 有一定的帮助2.秒杀的原理 秒杀基本原理比较简单用户点击抢购按钮 -> 把uid 和时间存入redis的队列中
转载
2023-08-10 13:57:11
201阅读
一、为什么需要搭建主从架构?单机的redis吞吐量不高,几乎不太可能做到QPS超过10万+。在实际开发中,需要主从架构通过读写分离,实现高并发。一般来说,对于缓存,写的请求是比较少的,可能写请求也就一秒钟几千,大量的请求都是读,一秒钟几万次读。二、主从架构的核心原理(1)当启动一个slave node的时候,它会发送一个PSYNC命令给master node。(2)如果这是slave node重新
转载
2023-09-01 23:21:38
70阅读
博主在工作中经常使用分布式缓存,公司的缓存中间件是自研的,但设计上是参考Redis的,研究透了Redis也就能搞懂公司自研的缓存中间件,《Redis设计与实现》是学习Redis的宝典,这本书博主学生时代看过,近期重新翻看,感触良多,感觉有必要把核心要点总结一下。Redis并不是完全单线程Redis的单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键值存
转载
2023-07-08 23:06:51
67阅读
Redis中的每个对象都是由一个RedisObject结构表示,该结构中和保存数据有关的三个属性分别为type属性,encoding属性,以及ptr属性Redis 数据结构(type)有5种,分别为:字符串(String)列表(List)哈希(Hash) 集合(Set)有序集合(ZSet)字符串(String)字符串对象的编码可以是int、raw(SDS)或者embstr(专门保存段字符串的优化编
转载
2023-08-17 10:58:01
42阅读
缓存的使用场景:1. DB缓存,减轻服务器压力 指优先访问缓存, 没有命中找DB2. 提高系统响应 解决频繁IO而无法响应3. 做Session分离, 多个服务器共享Session信息4. 做分布式锁, 控制多个进程并发下产生的问题,以及控制时序性,使用Redis实现的setNX5. 做乐观锁,Redis可以实现乐观锁 watch + incr缓存的读写模式:1.
转载
2023-07-08 23:42:17
126阅读
缓存是什么?
缓存介于应用程序和物理数据源之间。
作用降低应用对物理数据源访问的频次,提高应用的运行性能。
缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。通常直接查询 MySQL,但在高并发下,大量查询 MySQL 数据库会导致数据库性能变慢,解决方案就是在应用层与 MySQL 之间搭建一个 Cache 层,让请求先访问
原创
2021-06-24 14:57:19
771阅读
3.2.2 Redis缓存(最佳)Redis是一个远程内存数据库(非关系型数据库),性能强劲,ng可以是raw或是int,如果是int则
原创
2022-03-14 11:39:28
494阅读