Redis
文章平均质量分 91
Redis
猎户星座。
花有重开日,人无再少年。
展开
-
防重复提交
配合使用的防重复提交的实现。但是这个方案有个小弊端。仅生效于有RequestBody注解的参数,因为使用RequestBodyAdvice来实现。但是大部分我们需要做请求防重复提交的接口一般都是POST请求,且有requestBody。注解即可,interval即多久的间隔内相同参数视为重复请求。类来实现代码实现更加简洁,配置更加简单。通过在Controller上打上。这种防请求重复提交的实现有基于。最后考量下笔者认为利用。转载 2024-02-23 11:22:25 · 30 阅读 · 0 评论 -
Redis之主从同步原理
Redis主从模式中,一个高可用的Redis服务由一个Redis主节点(Master,后续简称为主节点)和若干Redis从节点(Slave,后续简称为从节点)组成。Redis中采用读写分离来保证主节点和从节点之间的数据一致性,具体实现如下。主节点支持数据写入和数据读取,从节点只支持数据读取;主节点会与从节点之间执行主从数据同步,以保证主节点数据与从节点数据一致。主从数据同步分为如下几种情况。从节点与主节点建立连接时进行全量同步;主节点与从节点正常运行时的同步;转载 2024-01-29 09:59:08 · 122 阅读 · 0 评论 -
Gossip协议
介绍Gossip Protocol也叫Epidemic Protocol(流行病协议),还有其他名称,如流言算法、疫情传播算法等。该协议的发布最早是在1987年8月温哥华举行的第六届ACM分布式计算原理的学术会议上,论文《Epidemic Algorithms for Replicated Database Maintenance》该论文可以在百度学术查看到该论文的信息,下图是自论文发布以来引用量,可以看出分布式相关内容的火爆情况。英文版下载 提取码:Eb07中文版下载 提取码:h15转载 2022-01-30 09:47:56 · 342 阅读 · 0 评论 -
一致性哈希算法
在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那么,我们先来描述一下这个经典的分布式缓存的应用场景。场景描述假设,我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为0号、1号、2号,现在,有3万张图片需要缓存,我们希望这些图片被均匀的缓存到这3台服务器上,以便它们能够分摊缓存的压力。也就是说,我们希望每台服务器能够缓存1万张左右的图片,那么,我们应该怎样做呢?如果我们没有任何规转载 2022-01-26 10:30:33 · 106 阅读 · 0 评论 -
LRU策略算法
缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存、数据库缓存、浏览器缓存等等。缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓存淘汰策略来决定。常见的策略有三种:先进先出策略 FIFO(First In,First Out)、最少使用策略 LFU(Least Frequently Used)、最近最少使用策略 LRU(Least Recently Used),本篇将介绍LRU策略算法。LRU Cache这转载 2021-03-24 21:44:36 · 939 阅读 · 0 评论 -
Redis之内存管理机制
简介Redis是一个基于内存的键值对的数据库,其内存管理是非常重要的。下面从Redis的内存消耗、内存管理、内存优化三个角度对Redis的内存机制进行剖析和学习。内存消耗内存查看127.0.0.1:6379> info memory 通过Redis客户端命令info memory查看内存情况参数 含义 used_memory Redis内部存储所用的内存使用量 used_memory_human 以可读形式返回 used_memory used_mem转载 2021-02-20 16:40:52 · 752 阅读 · 0 评论 -
Redis之数据库空间模型
在关系型数据库如MySQL,数据库数据是按照行记录格式进行存储的。同理,我们常说Redis是一个键值对(Key-Value)构成的内存数据库,具体是以什么形式进行存储的,下面通过源码一看究竟。数据结构在redis.h/redisServer中记录了一个由redis.h/redisDb结构组成的数组,这里的每一个redisDb都是一个数据库,在Redis中默认数据库数量由REDIS_DEFAULT_DBNUM参数控制,默认是16。typedef struct redisDb { /转载 2021-02-20 14:57:11 · 126 阅读 · 0 评论 -
Redis之集群模式
简述分布式数据库是以集群的方式部署了多节点,把全量数据根据一定的数据路由规则将数据分散到不同的集群节点上,利用异地多机房多节点的集群能力使得分布式服务具有高可用、可扩展、可容灾的服务能力。数据路由规则路由算法 一般而言,数据路由方式有哈希、顺序两种。路由方式 路由算法 特点 优点 缺点 代表 哈希 取余算法 hash(key) % N、一致性哈希、虚拟槽 离散度好; 数据分布业务无关; 不可顺序、范围查询 实现简单转载 2021-02-20 14:25:56 · 490 阅读 · 0 评论 -
Redis之通讯协议
RESP 协议概述通信协议通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。通过通信信道和设备互连起来的多个不同地理位置的数据通信系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。这个规则就是通信协议。Redis 使用协议连接: 在 Redis 中客户端与服务端之间的通信协议是在TCP协议之上构建的。 数据格式: Redis 制定了RESP(REdis Serialization Proto转载 2021-02-20 12:40:11 · 340 阅读 · 0 评论 -
Redis之布隆过滤器
大白话布隆过滤器本文是站在小白的角度去讨论布隆过滤器,如果你是科班出身,或者比较聪明,又或者真正想完全搞懂布隆过滤器的可以移步。不知道从什么时候开始,本来默默无闻的布隆过滤器一下子名声大燥,仿佛身在互联网,做着开发的,无人不知,无人不晓,哪怕对技术不是很关心的小伙伴也听过它的名号。我也花了不少时间去研究布隆过滤器,看了不少博客,无奈不是科班出身,又没有那么聪明的头脑,又比较懒...经过“放弃,拿起,放弃,拿起”的无限轮回,应该算是了解了布隆过滤器的核心思想,所以想给大家分享下。布隆过滤器的应用转载 2020-07-24 16:24:00 · 268 阅读 · 0 评论 -
Redis之缓存雪崩、击穿、穿透
那提到Redis我相信各位在面试,或者实际开发过程中对缓存雪崩,穿透,击穿也不陌生吧,就算没遇到过但是你肯定听过,那三者到底有什么区别,我们又应该怎么去防止这样的情况发生呢,我们有请下一位受害者。面试开始一个大腹便便,穿着格子衬衣的中年男子,拿着一个满是划痕的mac向你走来,看着快秃顶的头发,心想着肯定是尼玛顶级架构师吧!但是我们腹有诗书气自华,虚都不虚。小伙子我看你的简历上写到了Redis,那么我们直接开门见山,直接怼常见的几个大问题,Redis雪崩了解么?帅气迷人的面试官您.转载 2020-05-28 17:26:45 · 166 阅读 · 0 评论 -
Redis之主从复制模式
本文是按照《Redis设计与实现》一书所整理的,感觉原书讲的非常棒,所以下面的这部分的知识将按照原书的逻辑进行介绍:先介绍旧版复制功能在处理断线后重新连接的从服务器时,会遇上怎样的低效情况。新版复制功能是如何通过部分重同步来解决旧版复制功能的低效问题的,并说明部分重同步的实现原理。旧版复制功能的实现Redis的复制功能分为同步(sync)和命令传播(command propagate)...转载 2019-11-05 15:40:48 · 239 阅读 · 0 评论 -
Redis之分布式锁
# 基于 Redis 实现分布式锁的三种方案用 Redis 实现分布式锁的正确姿势(实现一) 用 Redisson 实现分布式可重入锁(RedissonLock)(实现二) 用 Redisson 实现分布式锁(红锁 RedissonRedLock)(实现三)本文主要探讨基于 Redis 实现分布式锁的方案,主要分析并对比了以上三种方案,并大致分析了 Redisson 的 Redisson...转载 2019-10-31 11:13:50 · 801 阅读 · 1 评论 -
Redis之哨兵模式
前言Redis 的 主从复制 模式下,一旦 主节点 由于故障不能提供服务,需要手动将 从节点 晋升为 主节点,同时还要通知 客户端 更新 主节点地址,这种故障处理方式从一定程度上是无法接受的。Redis 2.8 以后提供了 Redis Sentinel 哨兵机制 来解决这个问题。其他文章 深入剖析Redis系列(一) - Redis入门简介与主从搭建 ...转载 2019-10-27 15:57:50 · 230 阅读 · 0 评论 -
Redis之过期策略/数据淘汰机制
过期策略指的是ttl到期时的处理策略,淘汰策略指的是内存满了的情况下的策略Redis 过期策略Redis 可以对 key 设置过期时间,这是一个非常实用的功能,那 Redis 是如何实现这个机制的呢?答案就是:定期删除 + 惰性删除定期删除,Redis默认每隔100ms会从设置了过期时间的key中随机抽取一部分来检查是否过期,如果过期就删除。 惰性删除,定期删除可能会导致很多设置了过...转载 2019-10-25 11:33:04 · 299 阅读 · 0 评论 -
Redis之集群搭建
1、redis-cluster集群模式简介关于redis的集群化方案 目前主要有以下三种:Twitter开发的twemproxy 豌豆荚开发的codis redis官方的redis-clusterTwemproxy 和 Codis都属于代理分区:客户端 发送请求到一个 代理组件,代理 解析 客户端 的数据,并将请求转发至正确的节点,最后将结果回复给客户端。 优点:简化 客...原创 2018-10-05 16:58:52 · 262 阅读 · 0 评论 -
Redis之Tomcat Session共享
一、准备3台虚拟机192.168.37.137,192.168.37.134,192.168.37.135;二、192.168.37.137①配置nginx,nginx.conf配置文件:events { worker_connections 1024;} http { upstream tomcat{ server 192.168.37.134...原创 2018-10-14 10:42:23 · 134 阅读 · 0 评论 -
Redis之持久化
由于Redis是内存数据库,一旦服务器进程退出,服务器中的数据库状态也会消失。为解决这个问题,Redis提供了RDB快照形式(默认)、AOF日志形式两种持久化方式,将内存中的数据保存到磁盘中,以免数据意外丢失。如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。一、RDB持久化默认 Redis 是会以快照 “R...转载 2018-10-08 11:10:38 · 226 阅读 · 1 评论 -
Redis之Pipeline
概念Redis是一个响应式的服务,当客户端发送一个请求后,就处于阻塞状态等待Redis返回结果。这样一次命令消耗的时间就包括四个部分:请求从客户端到服务器的时间、命令排队的时间和命令真正执行时间、结果从服务器到客户端的时间,第一个和第四个消耗的时间总和称为RTT(Round Trip Time),当客户端与服务器存在网络延时时,RTT就可能会很大,这样就会导致性能问题。管道(Pipelin...转载 2018-10-15 09:43:38 · 5225 阅读 · 2 评论 -
Redis之数据类型及使用场景
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。一、String(字符串)string是redis最基本的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。string类型是Redis...转载 2018-10-08 19:37:50 · 275 阅读 · 0 评论 -
Redis之Lua
Redis从2.6版本开始引入对Lua脚本的支持,通过在服务器中嵌入Lua环境,Redis客户端可以使用Lua脚本,直接在服务端原子的执行多个Redis命令。Redis执行lua脚本主要依靠两个命令:EVAL和EVALSHAEVAL命令要求你在每次执行脚本的时候都发送一次脚本主体(script body)。Redis 有一个内部的缓存机制,因此它不会每次都重新编译脚本,不过在很多场合,付...转载 2018-10-09 14:44:33 · 726 阅读 · 0 评论 -
Redis之整合SpringBoot
redis官方对Java语言的封装框架推荐有十多种,主要有:Jedis、Lettuce、Redisson1几个框架的对比三个框架都是在Java中对Redis操作的封装。1.1 JedisJedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持。支持基本的数据类型如:String、Hash、List、Set、Sorted Set。优点:比较全面的...原创 2018-10-16 16:40:06 · 202 阅读 · 0 评论 -
Redis之事务
Redis事务提供了一种“将多个命令打包, 然后一次性、按顺序地执行”的机制, 并且事务在执行的期间不会主动中断 —— 服务器在执行完事务中的所有命令之后, 才会继续处理其他客户端的其他命令(redis单线程模型)。MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。事务可以一次执行多个命令。当使用 AOF 方式做持久化的时候, Redis 会使用单...转载 2018-10-10 11:12:52 · 146 阅读 · 0 评论 -
Redis之线程模型
Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。redis的多路复用选择器在IO...原创 2018-10-10 15:40:35 · 2887 阅读 · 1 评论 -
Redis之监听失效Key
修改Redis配置1.事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发,故需要订阅__keyevent@0__:expired 通道0表示db0,根据自己的dbindex选择合适的数字(客户端执行redis 命令。psubscribe__keyevent@*__:expired )2.修改redis.conf文件修改 notify-keyspace-ev...原创 2018-11-09 15:16:44 · 4760 阅读 · 1 评论 -
Redis之单点部署
Redis单点部署,仅供个人开发测试使用,生产环境建议采用集群模式1.官网下载最新的安装包,redis-4.0.11.tar.gz2.解压,解压到/opt/redis目录下3.进入redis-4.0.11目录,执行make,编译完成后会在src目录下生成Redis服务端程序redis-server和客户端程序redis-cli4.修改redis.conf文件①bind 0....原创 2018-10-01 14:30:14 · 1840 阅读 · 0 评论