![](https://img-blog.csdnimg.cn/20200702164532693.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 65
深入了解Redis应用及其原理
Notail^0^
心静脑清
展开
-
登录模块---登录出错多次,锁定用户30分钟
需求登录模块我们需要限制非法用户试密码的次数,此次需求为限制5次,锁定用户30分钟解决方案利用redis,登录一下,可以使用用户的账号作为key,存到redis中,每次登录value+1,每次登录都查redis,看某一用户的value是否大于等于5,如果是,那么就直接返回对应的异常信息和code码代码后端public String loginCommit(String email, String pwd, String reqid, Model model, HttpServletRespons原创 2021-08-13 15:12:06 · 1635 阅读 · 4 评论 -
一文看尽Redis
目录前沿:数据库处理数据历史单机MysqlMemcached(缓存)+MySQL+垂直拆分MySQL主从读写分离分库分表+水平拆分+mysql集群NoSQL的出现NoSQL简介作用特征四大分类应用场景Redis简介特征应用场景数据类型事务为什么要有事务简介特性锁为什么有锁乐观锁悲观锁持久化为什么要有持久化什么是持久化两种形式RDBAOF过期数据为什么要有过期数据删除策略定时删除惰性删除定时删除逐出算法为什么要由逐出算法逐出算法集群为什么要有集群概念三种模式主从模式哨兵模式Cluster缓存问题缓存预热缓存雪原创 2020-07-03 19:43:33 · 254 阅读 · 1 评论 -
Redis持久化
什么是持久化:利用永久性存储介质将数据进行保存,在特定的事件将保存的数据进行恢复的工作机制称为持久化为什么有持久化?现实中如果遇到意外断电的情况,放置数据的意外丢失,确保数据的安全性两种形式RDB:将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据AOF:将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注带你在数据的操作过程RDB启动方式:手动(save)和自动(bgsave)SAVE启动方式概念谁操作的:用户什么时间:及时原创 2020-07-03 19:34:08 · 177 阅读 · 3 评论 -
Redis集群三种方式
为什么要有集群单个Redis存在不稳定性,当Redis服务宕机或硬盘故障,系统崩溃之后,就没有可用的服务了,还会造成数据的丢失单个Redis的读写能力也是有限的还由于互联网的三高架构,高并发,高性能,高可用概念通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定,高效的状态三种模式主从模式哨兵模式Cluster模式主从模式为什么要用主从复制单机redis的风险与问题问题一:机器故障硬盘故障,系统崩溃本质:数据丢失,可能对业务造成灾难性打击问题二:容原创 2020-07-03 19:31:08 · 9138 阅读 · 3 评论 -
Redis逐出算法
为什么要由逐出算法情景分析,如果有新数据进入redis,但是数据都没有过期,而且内存也不足,那么这时就需要逐出算法,来腾出一些空间Redis使用内存存储数据,在执行每一个命令前,会调用freeMemoryIfNeeded()检测内存是否充足注意:逐出数据的过程不是100%能够清理出足够的可使用的内存空间,如果不成功则反复执行,当对所有数据尝试完毕后,如果不能达到内存清理的要求,将出现错误信息配置#最大可使用内存,占用物理内存的比例,默认值为0,表示不限制,生产环境根据需求设定,通常设置在50原创 2020-07-03 19:29:09 · 450 阅读 · 1 评论 -
Redis过期数据和删除策略
为什么要有过期数据因为内存有限,有些数据不需要一直在内存中,可以设定一些规则,将一些数据设置过期,在内存中删除,当然也不是随便删除,也要考虑到CPU的繁忙与空闲,以免出现Redis各种命令执行很多,但是正好出现大量过期数据,已造成服务器宕机删除策略目标是在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成redis性能下降,甚至引发服务器宕机或内存泄漏(CPU忙的时候,不要去打扰,闲的时候去打扰)定时删除创建一个定时器,当key设置有过期实践,且过期时间到达时,由定时器任务立即执行原创 2020-07-03 19:27:34 · 1153 阅读 · 5 评论 -
Redis锁,悲观锁和乐观锁
乐观锁开启事务前,设置对数据的监听(watch),EXEC时,如果发生数据发生过修改,作用于改数据的事务会自动取消(DISCARD),事务EXEC后,无论成败,监听会被移除悲观锁每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁。场景:如果项目中使用了缓存且对缓存设置了超时时间。当并发量比较大的时候,如果没有锁机制,如果有大量请求访问过期的数据,那么大量并发请求会穿透缓存直接查询数据库,造成雪崩效应。用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,原创 2020-07-03 19:24:54 · 2637 阅读 · 1 评论 -
Redis事务
目录什么是事务特性基本操作注意事项什么是事务redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个队列,当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰特性一次性顺序性排他性基本操作#开启事务,此指令执行后,后续的所有指令均加入事务中mutli命令1命令2...#执行事务,事务的结束位置,同时也是执行事务,与multi成对出现exec#取消事务,终止当前事务定义,发生再multi之前,exec之前discard注意事项编译型错误,原创 2020-07-03 19:23:33 · 101 阅读 · 0 评论 -
Redis数据类型
Redis五大数据类型Redis一共支持五种数据类型:String(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set有序集合)String(字符串):Redis最基本的数据类型,一个键对应一个值,一个键值最大存储512MBHash(哈希):hash是一个键值对的集合,是一个String类型的field和value的映射表,适合用于存储对象List(列表):是redis的简单的字符串列表,按插入顺序排序Set(集合):是String字符串类型的无序集合,也原创 2020-07-03 19:22:46 · 901 阅读 · 0 评论