Redis
文章平均质量分 69
Redis从入门到源码分析
超级码里喵
这个作者很懒,什么都没留下…
展开
-
【Redis】主从复制的核心原理
因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的slave 节点,从节点负责读。单机的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑。这样也可以很轻松实现水平扩容,...原创 2022-08-08 22:10:40 · 548 阅读 · 0 评论 -
Redis布隆过滤器
布隆过滤器(BloomFilter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。......原创 2022-07-22 22:04:15 · 4727 阅读 · 0 评论 -
基于布隆过滤器解决缓存穿透问题
一、缓存穿透产生的背景:缓存穿透是指使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次请求都要都要穿透到后端数据库查询,使得数据库的压力非常大,甚至导致数据库服务压死;解决方案:1.接口层实现api限流、用户授权、id检查等;2.从缓存和数据库都取不到数据的话,一样将数据库空值放入缓存中,设置30s有效期避免使用同一个id对数据库攻击压力大;二、布隆过滤器基本介绍布隆过滤器适用于判断某个数据是否在集合中存在,不一定百分百准备, Bloom Filter基本实现原理采用位数组与联合原创 2022-05-03 11:03:56 · 2783 阅读 · 0 评论 -
RedisCluster集群扩容与缩容
目录一、传统Redis集群存在那些问题二、传统RedisCluster集群的原理三、RedisCluster集群模式环境搭建四、RedisCluster集群模式扩容节点五、RedisCluster集群模式缩容节点一、传统Redis集群存在那些问题Redis哨兵集群模式,每个节点都保存全量同步数据,冗余的数据比较多;而在Redis Cluster模式中集群中采用分片集群模式,可以减少冗余数据,缺点就是构建该集群模式成本非常高,二、传统RedisCluster集群的原理Redis3.0开始官方推出了集群原创 2022-05-03 00:25:44 · 1153 阅读 · 1 评论 -
Redis安全控制(穿透、击穿、雪崩)
目录一、缓存穿透二、缓存击穿三、缓存雪崩一、缓存穿透产生的背景:缓存穿透是指使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次请求都要都要穿透到后端数据库查询,使得数据库的压力非常大,甚至导致数据库服务压死;解决方案:接口层实现api限流、用户授权、id检查等;从缓存和数据库都取不到数据的话,一样将数据库空值放入缓存中,设置30s有效期避免使用同一个id对数据库攻击压力大;二、缓存击穿产生背景:在高并发的情况下,当一个缓存key过期时,因为访问该key请求较大,多个请求同原创 2022-05-01 09:54:26 · 442 阅读 · 2 评论 -
Redis主从复制、哨兵机制服务器搭建及实现原理
目录一、Redis主从复制1. 主从复制数据同步的过程2. 主从复制存在哪些缺陷二、Redis哨兵机制Redis的哨兵机制就是解决我们以上主从复制存在缺陷(选举问题),解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移。![在这里插入图片描述](https://img-blog.csdnimg.cn/80d1e48bcf1048ceb2bc2d7f68cb31ec.png)三、哨兵机制原理四、相关核心配置一、Redis主从复制基本概念:单个Redis如果因为某种原因宕机的话,可能会导致原创 2022-05-02 11:48:20 · 851 阅读 · 3 评论 -
Redis实现分布式锁
目录一、Redis分布式锁实现思路二、Zookeeper实现分布式锁思路三、分布式锁的应用场景有那些四、Redis分布式锁核心代码1. Maven2. Service3. utils一、Redis分布式锁实现思路Redis实现分布式锁基于SetNx命令,因为在Redis中key是保证是唯一的。所以当多个线程同时的创建setNx时,只要谁能够创建成功谁就能够获取到锁。Set 命令 每次set时,可以修改原来旧值;SetNx命令 每次SetNx检查该 key是否已经存在,如果已经存在的话不会执行任何操作原创 2022-04-29 15:28:40 · 1099 阅读 · 1 评论 -
Redis事务操作
目录一、Redis的事务定义二、Multi、Exec、discard1.事物的错误处理2. 事务的冲突问题2.1 悲观锁2.2 乐观锁2.3 WATCH三、Redis事务三特性1. 单独的隔离操作2. 没有隔离级别的概念3. 不保证原子性一、Redis的事务定义Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。Redis事务的主要作用就是串联多个命令防止别的命令插队。二、Multi、Exec、discard我们原创 2022-04-29 10:13:44 · 502 阅读 · 0 评论 -
Redis内存淘汰策略
目录一、Redis六种淘汰策略二、如何配置Redis淘汰策略将Redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据。一、Redis六种淘汰策略noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错。allkeys-lru:在主键空间中,优先移除最近未使用的key。(推荐)volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。allkeys-random:在主键空间中,随机移除某个key。volatile-random:在设置了过期时间的原创 2022-04-29 09:35:29 · 7079 阅读 · 0 评论 -
Redis中的自动过期机制
目录使用Redis Key自动过期机制实现需求:处理订单过期自动取消,比如下单30分钟未支付自动更改订单状态实现方案1:1.使用Redis Key自动过期出发事件通知2.使用定时任务30分钟后检查3.按照每分钟轮训检查CREATE TABLE `order_number` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_name` varchar(255) DEFAULT NULL, `order_status` int(11) DEFA原创 2022-04-29 00:15:45 · 2868 阅读 · 1 评论 -
Redis持久化机制
目录一、全量同步与增量同步的区别二、RDB与AOF实现持久化的区别三、Redis的RDB与AOF同步配置1. RDB2. Aof四、MySQL与Redis一致性解决同步问题一、全量同步与增量同步的区别全量同步:就是每天定时(避开高峰期)或者采用一个周期实现将数据拷贝到一个地方也就是Rdb存储。增量同步:比如采用对行为的操作实现对数据的同步,也就是AOF。全量与增量的比较:增量同步比全量同步更加消耗服务器的内存,但是能够更加的保证数据的同步。二、RDB与AOF实现持久化的区别Redis提供了两种原创 2022-04-28 16:41:36 · 171 阅读 · 1 评论 -
SpringBoot整合Redis注解访问报错:EL1008E: Property or field ‘getListMember‘ cannot be found on object of type
问题描述:Springboot整合redis注解,请求访问时报错:org.springframework.expression.spel.SpelEvaluationException: EL1008E:Property or field ‘getListMember’ cannot be found on object of type‘org.springframework.cache.interceptor.CacheExpressionRootObject’ -maybe not publ原创 2022-04-28 15:14:52 · 3396 阅读 · 0 评论 -
SpringBoot整合Redis注解访问报错:java.io.NotSerializableException: com.demo.entity.MemberEntity
问题描述:SpringBoot整合Redis注解,请求时报错java.io.NotSerializableException: com.demo.entity.MemberEntity atjava.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)~[na:1.8.0_191] atjava.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348原创 2022-04-28 15:14:32 · 946 阅读 · 1 评论 -
SpringBoot整合Redis框架(序列化方式)
目录一、Maven依赖二、工具类三、控制层四、实体类五、配置文件一、Maven依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version></parent><d原创 2022-04-28 11:27:19 · 481 阅读 · 1 评论 -
【2022最新Java面试宝典】—— Redis面试题(70道含答案)
目录一、概述1. 什么是Redis?2. Redis有哪些优缺点?3. 使用redis有哪些好处?4. 为什么要用 Redis / 为什么要用缓存5. 为什么要用 Redis 而不用 map/guava 做缓存?6. Redis为什么这么快7. Redis有哪些数据类型8. Redis的应用场景9. 持久化10. Redis 的持久化机制是什么?各自的优缺点?11. 如何选择合适的持久化方式12. Redis持久化数据和缓存怎么做扩容?13. Redis的过期键的删除策略14. Redis key的过期时间原创 2022-04-28 07:30:00 · 15412 阅读 · 0 评论 -
SpringBoot整合Redis框架(存储json方式)
目录一、Maven依赖二、工具类三、控制层四、配置文件一、Maven依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version></parent><depend原创 2022-04-27 16:40:02 · 1255 阅读 · 1 评论 -
Redis环境搭建与数据结构原理
目录一、Redis缓存框架基本介绍二、Redis的应用场景三、Redis单线程模型linux环境安装Redis一、Redis缓存框架基本介绍Redis 是完全开源免费的,是一个高性能的key-value数据库,目前市面上主流的数据库Redis、Memcache、Tair(淘宝自研发)Redis的官网:https://redis.io/二、Redis的应用场景1.Token令牌的生成2.短信验证码Code3.缓存查询数据4.网页计数器5.分布式锁6.延迟操作三、Redis单线程模型首原创 2022-04-27 16:02:25 · 218 阅读 · 0 评论 -
执行make命令报错:gcc:命令未找到/bin/sh: cc: 未找到命令
问题描述:执行make命令报错:gcc:命令未找到/bin/sh: cc: 未找到命令问题原因:原因是虚拟机系统中缺少gcc解决方式:执行下面命令安装gccyum -y install gcc automake autoconf libtool make注:如果出现“zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录”这个报错,请参考:https://blog.csdn.net/qq_30999361/article/details/1原创 2022-04-27 12:24:00 · 9058 阅读 · 0 评论 -
redis安装报错:zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
问题描述:zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录解决方式:执行命令:make MALLOC=libc原创 2022-04-27 12:21:29 · 4155 阅读 · 2 评论