
Redis
文章平均质量分 89
Redis类博客
FYHannnnnn
知道的越多,不知道的也就越多
展开
-
Redis SDS 原理
本文转载自Redis SDS 原理_m0_57015193的博客-优快云博客redis 使用 c 语言开发,但它没有复用 c 原生字符串实现,自己构建了一种新的字符串实现:SDS(simple dynamic String),SDS 是 redis默认字符串实现SDS 原理:struct sdshdr { // 记录buf数组中已使用字节的数量,也就是已用字符串的长度 int len; // 记录buf数组中未使用字节的数量 int free; //转载 2022-02-13 20:09:25 · 747 阅读 · 0 评论 -
Redis集群与分区
分区是将数据分布在多个Redis实例(Redis主机)上,以至于每个实例只包含一部分数据。分区的意义:1,性能的提升,单机Redis的网络I/O能力和计算资源是有限的,将请求分散到多台机器,充分利用多台机器的计算能力可网络带宽,有助于提高Redis总体的服务能力。2,存储能力的横向扩展,即使Redis的服务能力能够满足应用需求,但是随着存储数据的增加,单台机器受限于机器本身的存储 容量,将数据分散到多台机器上存储使得Redis服务可以横向扩展。一,范围分区根据id数字的范围比如1--10原创 2021-11-20 16:45:15 · 1186 阅读 · 0 评论 -
Redis哨兵模式
哨兵(sentinel)是Redis的高可用性(High Availability)的解决方案: 由一个或多个sentinel实例组成sentinel集群可以监视一个或多个主服务器和多个从服务器。 当主服务器进入下线状态时,sentinel可以将该主服务器下的某一从服务器升级为主服务器继续提供服务,从而保证redis的高可用性。哨兵模式部署方案:一,哨兵模式执行流程1,启动并完成Sentinel初始化Sentinel是一个特殊的Redis服务器,不会进行持久化,Sentinel实例启动.原创 2021-11-20 15:13:15 · 772 阅读 · 1 评论 -
Redis主从模式
一,Redis主从配置Redis高可用集群中,主节点的无需做什么集群配置,只需在从节点中开启主节点配置replicaof ip port如同传统的数据库集群一样,Redis集群一样采用了主写从读的结构,从而达到读写分离的作用<一主多从,主从同步,主负责写,从负责读,提升Redis的性能和吞吐量,主从的数据一致性问题>因为Redis是内存数据库,主从架构还能有效的防止容灾的发生:从机是主机的备份,主机宕机,从机可读不可写,默认情况下主机宕机后,从机不可为主机,利用哨兵可以实现原创 2021-11-20 14:41:36 · 1037 阅读 · 0 评论 -
Redis拓展功能
一,发布与订阅Redis提供了发布订阅功能,可以用于消息的传输Redis的发布订阅机制包括三个部分,publisher(发布),subscriber(订阅)和Channel(发布的频道)发布订阅的机制Redisson是一个分布式锁框架,在Redisson分布式锁释放的时候,是使用发布与订阅的方式通知的使用场景:哨兵模式,Redisson框架使用在Redis哨兵模式中,哨兵通过发布与订阅的方式与Redis主服务器和Redis从服务器进行通信。Redisson是一个分布...原创 2021-11-18 22:02:44 · 787 阅读 · 0 评论 -
Redis持久化
为什么要持久化?Redis是内存数据库,宕机后数据会消失。 Redis重启后快速恢复数据,要提供持久化机制。Redis持久化方式Redis支持RDB与AOF两种持久化方式。关于持久化的配置信息查看可通过info命令查看一,RDBRDB(Redis DataBase),是redis默认的存储方式,RDB方式是通过快照( snapshotting )完成 的。 这一刻的数据不关注过程。触发RDB的方式:符合自定义配置的快照规则 执行save或者bgsave命令 执行.原创 2021-11-18 21:12:16 · 112 阅读 · 0 评论 -
Redis通信协议与事件处理
一,Redis通信协议Redis是单进程单线程的。 应用系统和Redis通过Redis协议(RESP)进行交互。Redis协议位于TCP层之上,即客户端和Redis实例保持双工的连接。串行的请求响应模式串行化是最简单模式,客户端与服务器端建立长连接 连接通过心跳机制检测(ping-pong) ack应答 客户端发送请求,服务端响应,客户端收到响应后,再发起第二个请求,服务器端再响应。这种模式下,消耗在网络协议的连接上,有问有答,性能很低。双工的请求响应模式该模式下批量请求,平凉反应.原创 2021-11-18 16:35:37 · 647 阅读 · 0 评论 -
Redis底层结构与缓存原理
Redis是一个Key-Value的存储系统,使用ANSI C语言编写。key的类型是字符串。value的数据类型有: 常用的:string字符串类型、list列表类型、set集合类型、sortedset(zset)有序集合类型、hash类型。不常见的:bitmap位图类型、geo地理位置类型。一,Redis key的设计将一个表,例如User表存入Redis中做缓存时,进行Key值的设计通常需要注意以下四个步骤:用:分割 把表名转换为key前缀, 比如: user: 第原创 2021-11-17 23:39:48 · 1290 阅读 · 0 评论 -
Redis学习,Jedis的使用
这里就不介绍redis的安装与环境变量的配置了,直接进入操作干货部分。一,Redis现支持的5中数据类型:String类型(字符串) Set(无序集合) Sorted Set(有序集合) List(列表) HashMap(字典) 二,Jedis在常见命令中,使用各种Redis自带客户端的命令行方式访问Redis服务。 而在实际工作中却需要用到Java代码才能访问,使用第三...原创 2019-02-20 14:51:12 · 312 阅读 · 0 评论 -
不使用redis-trib搭建Redis集群
一,官方的文档搭建方式:通过Redis-cli 脚手架指定集群内的所有的机器。redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 \127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \--cluster-replicas 1既然是集群,那么肯定需要区分主节点和子节点的。这里Redis给你封装了一个指定主节点、子节点的工具------redis-trib。工具操原创 2020-05-28 10:26:49 · 334 阅读 · 0 评论 -
Redis是单线程,高性能详解
一、Redis为什么是单线程注意:redis 单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求,其他模块仍用了多个线程。因为CPU不是Redis的瓶颈。Redis的瓶颈最有可能是机器内存或者网络带宽,既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。关于redis的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求。二、Redis为什么这么快1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,Has转载 2020-08-03 17:00:39 · 314 阅读 · 0 评论 -
Redis虚拟内存详解
redis虚拟内存在2.6后,移除了对外的虚拟内存开关配置,虚拟内存为Redis内部功能实现,由Redis本身去调度判断使用虚拟内存简述Redis遵循一种Key-Value键值模型。你可以将键与一些值关联起来。通常情况下,Redis把键和相关联的值都存储在内存中,但有时候这未必是最佳选择。为了确保能够快速查找,键必须存储在内存中,但是可以把一些很少使用的值交换至磁盘中。在实践过程中,如果你的内存中存有10w个键的数据集,但是只有10%的键是经常使用的,那么开启了虚拟内存机制的Redis就会把这些转载 2020-08-03 17:13:32 · 980 阅读 · 0 评论 -
Redis分布式锁的实现
前言本篇文章主要介绍基于Redis的分布式锁实现到底是怎么一回事,其中参考了许多大佬写的文章,算是对分布式锁做一个总结分布式锁概览在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?实际上,对于分布式场景,我们可以使用分布式锁,它是控制分布式系统之间互斥访问共享资源的一种方式。比如说转载 2020-08-03 17:18:13 · 279 阅读 · 0 评论 -
Redis读写分离
概述: 为什么要用redis读写分离:单机情况下redis能承受大约2万的QPS(具体数据因机器配置与业务场景而异),如果想要承接更高数值的QPS(10万以上),则需要用到读写分离的redis集群。 读写分离的原理:对于缓存而言,读的需求量是远大于写的需求量的,而读写分离的机制就是在主机上执行写操作,然后异步地将数据复制到从机上,而从机只负责读操作,假设一台从机具有2万QPS,当业务场景需要10万的QPS时,只需要横向扩展5台redis从机即可(可支持水平扩展的读高并发架构): 如果采用了主..转载 2020-08-03 17:20:44 · 5928 阅读 · 0 评论 -
Redis数据分片详解
Redis 集群简介Redis Cluster 是 Redis 的分布式解决方案,在 3.0 版本正式推出,有效地解决了 Redis 分布式方面的需求。Redis Cluster 一般由多个节点组成,节点数量至少为 6 个才能保证组成完整高可用的集群,其中三个为主节点,三个为从节点。三个主节点会分配槽,处理客户端的命令请求,而从节点可用在主节点故障后,顶替主节点。图片来源 redislabs如上图所示,该集群中包含 6 个 Redis 节点,3主3...转载 2020-08-03 17:23:37 · 2278 阅读 · 0 评论 -
Redis回收策略
Redis会因为内存不足而产生错误,也会因为回收过久而导致系统长期的停顿,因此了解掌握Redis的回收策略十分重要。当Redis的内存达到规定的最大值时,可以进行配置进行淘汰键值,并且将一些键值对进行回收。我们打开Redis安装目录下的redis.conf文件。配置文件中有这么一段话# Set a memory usage limit to the specified amount of bytes.# When the memory limit is reached Redis will tr转载 2020-08-03 17:25:29 · 430 阅读 · 0 评论 -
Redis常见性能问题、几种数据类型及应用场景
性能问题Redis 常见的性能问题都有哪些?如何解决?Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。 Master AOF持久化,如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是AOF文件会不断增大,AOF文件过大会影响Master重启的恢复速度。Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化,如果数据比较关键转载 2020-08-03 17:30:18 · 1160 阅读 · 0 评论