![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 54
21-夜一
早上搬砖,晚上砌梦想
展开
-
Redis缓存穿透,击穿,雪崩
缓存穿透当用户请求数据,先查询缓存,发现没有,就去查询数据库,当缓存跟数据库都没有相应数据的时候,用户又无限请求,就会把数据库压垮。解决方案:1.布隆过滤器:是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先行校验,不符合规制就丢弃,从而避免对底层存储系统的查询压力:2.缓存空对象:当存储层不命中后,即使返回的空对象也将其缓存起来,同时设置过期时间,之后再访问这个数据会从缓存中获取,保护后端数据源。存在问题:1.如果空值能够被缓存起来,意味着缓存需要更多的空间存储更多的键,.原创 2021-04-29 16:07:30 · 135 阅读 · 0 评论 -
Redis哨兵模式(Sentinel)
概念主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。如果Redis主机故障了,根据投票数,自动将从库变成主库哨兵模式是一种特殊的的模式,首先Redis提供哨兵命令,哨兵是一个独立的进程,作为进程,他会独立运行,其原理是哨兵通过发送命令,等待Redis,服务器响应,从而监控运行的多个Redis实例。哨兵作用:1.通过发送命令,让Redis服.原创 2021-04-29 14:46:09 · 131 阅读 · 0 评论 -
Redis主从复制
概念主从复制,是指一台Redis服务器数据,复制到其他Redis服务器。前者称为主节点(master/leader),后者成为从节点(slave/follower);数据是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点,但一个从节点只有一个主节点。为什么需要主从复制(集群:防止宕机,一主二从):1.从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力.原创 2021-04-29 12:47:56 · 90 阅读 · 1 评论 -
Redis发布订阅
概念Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:Redis 发布订阅命令测试:1.登录客户端,然.原创 2021-04-28 00:28:57 · 43 阅读 · 0 评论 -
Redis中AOF操作
概念AOF=Append Only File,把所有操作都记录下来,恢复的时候,全部操作再执行一遍。有点像MySQL的binlog,实时性更好,丢失的数据更少具体原理以日志形式记录每个操作,将Redis所有执行过的命令记录下来(读操作不记录),只许追加文件不可以改写文件,redis启动之初会读取该文件重新构建数据。AOF配置详解在配置文件redis.conf全局搜索APPEND ONLY MODE1.是否开启AOF(默认关闭)(一般使用的时候只需要改为yes,其他配置不需.原创 2021-04-27 02:03:53 · 1022 阅读 · 0 评论 -
Redis中RDB操作
RDB=RedisDateBase,Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一但服务器进程退出,服务器中的数据库状态也会消失。所以需要用到持久化功能!RDB持久化是将当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化),保存的文件后缀是rdb;当Redis重新启动时,可以读取快照文件恢复数据。RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。..原创 2021-04-27 00:33:46 · 2773 阅读 · 0 评论 -
Redis配置redis.conf
原创 2021-04-24 00:46:15 · 41 阅读 · 0 评论 -
SpringBoot整合Redis
具体流程:创建项目,导入依赖,配置配置文件,测试使用1.创建项目2.查看底层配置文件下面的是我们可以重写的propertise文件参数模板方法(没有序列化,会导致保存的时候乱码),可以重写代替3.配置配置文件(重写参数)4.测试使用:注入Redistemplate后发现能使用的数据类型事务等等基础redis功能测试测试中文乱码了5.解决中文乱码(序列化)底层看到序列化看到很多序列化默认用的jdk序列化因为他是默原创 2021-04-24 00:20:32 · 56 阅读 · 0 评论 -
Jedis:java中操作Redis
1.创建项目2.导入Jedis的包查找包:https://mvnrepository.com/ <dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.原创 2021-04-23 18:10:57 · 169 阅读 · 0 评论 -
Redis乐观锁
悲观锁:认为什么时候都会出问题,什么操作都加锁乐观锁:认为什么时候都没问题, 只在更新的时候会上锁,更新的时候会比较version举个例子:1.设置了100金额,花去20,这是正常的事务2.开启一个事务,但是没有提交3.此时2还没提交,我这里又对金额进行了操作4.此时,2进行提交,就会返回nil,证明事务提交失败,因为金额已经被操作过了,在提交事物的时候,去对比了version,发现不对,就提交失败了5.此时,接触监控,然后重新监控,就成功6.总结,这里的watch起到了乐原创 2021-04-23 17:32:15 · 88 阅读 · 0 评论 -
Redis事务
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:(redis 一次性,顺序性,排他性。)批量操作在发送 EXEC 命令前被放入队列缓存。收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。redis单条命令是原子性的,但 Redis 没有..原创 2021-04-23 17:05:30 · 48 阅读 · 0 评论 -
Redis的数据类型及命令
Redis有五大数据类型:String,List,Set,Hash,Zset三种特殊类型:geospatial,hyperloglog,bitmaps1.String使用场景:计数器,统计多单位数量,对象缓存存储常用命令:1.追加字符串,如果key不存在,相当于set key APPEND KEY ""2.获取字符串长度 STRLEN KEY3.设置浏览数 SET VIEWS 0 3.1 自增减1 自增1 INCR VIEWS 自减1 DECR VI.原创 2021-04-23 15:36:23 · 65 阅读 · 0 评论 -
Redis基本命令
1.切换数据库(默认有16个数据库) select 3(切换到3号数据库)2.查看数据库数据数量 DBSIZE3.设置 key value set key value4.通过key 获取value get key 5.获取所有key key *6.清楚当前数据库 flushdb7.清楚所有数据库 flushall...原创 2021-04-22 23:26:32 · 66 阅读 · 0 评论