Redis
文章平均质量分 83
星夜孤帆
人之有吾,当应披荆棘,斩鬼熊,成就一番大事
展开
-
Redis底层设计与源码解析
一、Redis核心知识二、Redis为什么那么快三、Redis数据库设计四、Redis数据库 渐进式rehash机制五、Redis源码环境搭建六、Redis Key的数据类型七、Redis String类型设计八、Redis数据库源码详解todo视频教程...原创 2021-10-10 20:09:21 · 548 阅读 · 0 评论 -
Redis缓存雪崩与Hash一致性算法
一、Redis的应用二、Redis使用中的问题三、Redis集群中的hash一致性算法原理视频教程、参考博客原创 2021-08-28 15:30:51 · 361 阅读 · 0 评论 -
布隆过滤器解决Redis缓存穿透
一、Redis缓存穿透缓存穿透:恶意查询一个数据库中不存在的数据,去缓存层中没有命中数据,进而去mysql中查询数据。缓存null值,可能会导致Redis中缓存一堆null值。二、过滤器解决缓存穿透使用过滤器解决,把不存在的key的请求,拦截住。问题,key都缓存到内存中,导致内存紧张。三、布隆过滤器解决缓存穿透3.1 什么情况下需要布隆过滤器先来看几个比较常见的例子字处理软件中,需要检查一个英语单词是否拼写正确 在 FBI,一个嫌疑人的名字是否已经.原创 2021-08-28 11:37:39 · 964 阅读 · 0 评论 -
布隆过滤器原理和实现
一、布隆过滤器介绍巴顿.布隆于一九七零年提出一个很长的二进制向量 (位数组)一系列随机函数 (哈希)空间效率和查询效率高有一定的误判率(哈希表是精确匹配)二、布隆过滤器原理布隆过滤器(Bloom Filter)的核心实现是一个超大的位数组和几个哈希函数。假设位数组的长度为m,哈希函数的个数为k以上图为例,具体的操作流程:假设集合里面有3个元素{x, y, z},哈希函数的个数为3。首先将位数组进行初始化,将里面每个位都设置位0。对于集合里面的每一原创 2021-08-28 11:24:01 · 733 阅读 · 0 评论 -
缓存一致性解决
一、缓存一致性问题我们现在读所有的数据,都是先来看缓存,缓存中没有我们就来读数据库。假如我们第一次读取,缓存中没有,然后,来查数据库,是一条新值。现在来考虑一个问题,如果数据库修改了一个数据,而这个数据缓存中也有,我们再来从缓存中拿数据,就是一条旧数据。所以,就牵扯到另外一个问题,缓存数据一致性问题,缓存里面的数据如何和数据库保持一致。解决缓存一致性问题,比较常用的两种模式有1.双写模式2.失效模式这两种方式再大并发下,都会产生一些漏洞二、双写模式首先,我们使用双写模原创 2021-03-21 12:53:55 · 1085 阅读 · 1 评论 -
分布式锁Redisson
一、SpringBoot整合Redisson1.1 引入pom1.2 配置类1.3 测试类二、模拟redis断电启动两台实例,有一台获取锁后准备释放锁的时候,关闭服务,模拟断电,看会不会发送死锁访问10000,加上锁后,关闭服务,模拟断电,此时,10000服务还未解锁。访问10001,正常获取到锁并且,TTL时间在不断变化,自动续期三、看门狗原理3.1 指定锁释放时间3.2 未原创 2021-03-20 21:50:02 · 691 阅读 · 3 评论 -
分布式锁原理
一、分布式锁基本原理比如,我们现在有这么多商品服务,现在都要查数据库,现在我们约定只有一个人能查数据库,查完以后放到缓存里面。这样呢,所有服务都要进来,需要抢占一个锁,本地情况下,我们可以使用语法比如synchronize(this)锁住当前对象,只要大家用的是一个对象,就能锁住了。在分布式情况下也一样,我们this在分布式情况下,肯定没得用。但是,我们可以考虑现实生活中的一个例子,比如,我们几千个人都去上公共厕所,里面只有一个坑位,那如何保证他们有序的进行,就是说,只要我进来了,我就给原创 2021-03-20 17:07:25 · 3489 阅读 · 0 评论 -
加锁解决缓存击穿问题
一、加本地锁问题1.1 本地锁分析继上一篇Redis缓存中介绍,我们可以很容易解决缓存穿透(空结果缓存),和缓存雪崩问题(加随机值),对于缓存击穿问题,可以采用加锁的方式,但是,这个锁需要用什么样的锁,怎么来加这个锁,也是非常有讲究的,一不小心就可能导致各种问题。这里我们先测试一下,加本地锁情况下的一些问题。 @Override public Map<String, List<Catelog2Vo>> getCatalogJson() {原创 2021-03-20 15:21:04 · 1590 阅读 · 0 评论 -
Redis缓存
一、本地缓存与分布式缓存1.1 缓存使用为了系统性能的提升,我们一般都会将部分数据放入缓存中,加速访问。而db承担数据落盘工作,也就是承担持久化工作,它只需要将数据持久化保存到一个地方。为了我们的系统能够加速访问,我们可以在第一次查出这个数据以后,就把它放入我们的缓存里面,以后我们需要数据,我们就直接从缓存中获取,没必要进行那些复杂的查询计算。这样就能极大的提升我们系统的性能1。1.1.1 哪些数据适合放入缓存1. 即时性、数据一致性要求不高的什么是即时性比如,购物的时候一些物流原创 2021-03-19 22:48:25 · 1134 阅读 · 0 评论 -
一文搞懂Redis
一、Redis安装二、Redis入门介绍三、Redis配置文件四、Redis事务五、Redis的发布订阅六、Redis持久化七、Redis主从复制八、Jedis操作Redis九、SprintBoot整合Redis十、Redis缓存穿透和缓存雪崩源码地址,视频教程,视频教程...原创 2021-03-07 19:35:40 · 180 阅读 · 0 评论 -
Redis入门介绍
一、入门概述1.1 为什么用nosql1.1.1 单机MySQL的美好年代1.1.2 Memcached(缓存)+MySQL+垂直拆分1.1.3 Mysql主从读写分离1.1.4 分库分表+水平拆分+mysql集群1.1.5 Mysql的扩展性瓶颈1.1.6 今天是什么样子1.1.5 为什么用NoSQL1.2 是什么1.3 能干嘛1.3.1 易扩展1.3.2 大数据量高性能1.3.3 多样灵活的数据模型1.3原创 2021-03-07 16:15:45 · 235 阅读 · 0 评论 -
通过Jedis操作Redis
一、什么是JedisJedis是Redis官方推荐的Java连接开发工具,使用Java操作Redis中间件,如果你要使用Java操作Redis,那么一定要对Jedis十分的熟悉。二、测试连接Jedis2.1 导入对应的依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId&g原创 2021-03-07 15:19:47 · 374 阅读 · 0 评论 -
SpringBoot整合Redis
一、SpringBoot整合Redis1.1 基础介绍SpringBoot操作数据:spring data jap jdbc mongodb redisSpringData也是和SpringBoot齐名的项目说明:在SpringBoot2.x之后,原来使用的jedis被替换为了lettucejedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool连接池,更像BIO模式lettuce:采用netty,实例可以在多个线程中进行共享,不存在线程不原创 2021-03-06 22:35:04 · 188 阅读 · 1 评论 -
Redis缓存穿透和雪崩
一、服务的高可用问题Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。二、缓存穿透(查不到)2.1 概念缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现原创 2021-03-06 19:24:08 · 205 阅读 · 0 评论 -
Redis主从复制
一、是什么1.1 官网行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,Slave以读为主。1.2 概念1.2.1 主从复制主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。默认情况下,每台Redis服原创 2021-03-06 17:08:58 · 573 阅读 · 1 评论 -
Redis的发布订阅
一、是什么Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。微信、微博、关注系统!Redi客户端可以订阅任意数量的频道。订阅/发布消息图:二、命令这些命令被广泛用于构建即时通信应用,比如网络聊天室(chatroom)和实时广播、实时提醒等。三、案例先订阅后发布才能收到消息1. 可以一次性订阅多个:subscribe c1 c2 c32. 消息发布:publish c2 hello-redis3.原创 2021-03-06 15:27:22 · 262 阅读 · 0 评论 -
Redis事务
一、是什么可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行,而不会被其它命令插入,不许加塞。官网二、能干嘛一个队列中,一次性、顺序性、排他性的执行一系列命令。三、怎么玩3.1 常用命令3.2 case1:正常执行3.3 case2:放弃事务...原创 2021-03-05 18:42:26 · 137 阅读 · 0 评论 -
Redis持久化
一、RDB(Redis DataBase)1.1 官网介绍1.2 是什么在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的SnapShot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比原创 2021-03-04 21:21:58 · 169 阅读 · 1 评论 -
Redis配置文件解析
一、Units单位1.配置大小单位,开头定义了一些基本的度量单位,支持bytes,不支持bit2.对大小些不敏感二、Includes包含好比nginx中的include,可以包含多个配置文件,redis.conf可以作为总闸,包含其它三、网络tcp-backlog 511 : 设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。在高并发环境下你需要一个高backlog值来避免慢客户原创 2021-03-04 20:31:05 · 209 阅读 · 1 评论 -
Redis安装
一、Windows安装1.1 下载安装包https://redis.io/链接:https://pan.baidu.com/s/1NCkHgOkyoppOFSucsPHwBA#list/path=%2F提取码:a3mg1.2 下载完毕得到压缩包1.3 解压到自己电脑上的环境目录下就可以了,Redis十分的小,只有5M1.4 开启Redis,双击运行服务即可1.5、使用redis客户端来连接rediswindows下使用确实简单,但是redis推荐我们使用l.原创 2021-03-03 20:27:18 · 1197 阅读 · 2 评论 -
Redis分布式锁
一、搭建redis环境1.1 安装rediswget http://download.redis.io/releases/redis-6.0.8.tar.gztar xzf redis-6.0.8.tar.gzcd redis-6.0.8make原创 2020-11-29 21:55:57 · 654 阅读 · 4 评论