Redis是什么?一键学会分布式架构下的Redis解决方案
程序员进行面试时,Redis解决方案是一线互联网企业都很热衷问到的技术点,运作项目时,都会有所涉及,熟练掌握各种典型场景下Redis解决方案是一名合格程序员必备的技能知识,除此之外,对于Redis也要有一定的了解。让零基础尽快全面了解Redis及Redis在各种典型场景下的解决方案,这是本文初衷,本文将会对此进行深入浅出的讲解与分享,希望能帮助到每一个初学者。
redis是一个key-value存储系统,支持各种不同方式的排序,为了保证效率,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。它还是一个高性能的key-value数据库,补偿了memcached这类key/value存储的不足。它存在的作用就是为了减轻数据库压力,让查询内存比查询数据库效率高。
redis能成为Java开发者在进行开发时,经常使用到的部分原因是因为它是开源免费的,它的存储系统相对于其他缓存产品来说更高级,这也是我们常说的性能极高,能大大增加开发效率。能支持数据的持久化,可以再次加载使用,保证了数据的完整和记录。更重要的是,它有极其丰富的数据类型,支持多种数据结构的存储,并可以对此自动进行数据备份,为数据缺失提供双层保障。
Redis的所有操作都是原子性的,通俗可以理解为“要么成功执行要么失败完全不执行”。单个操作是原子性的。多个操作也支持事务,通过MULTI和EXEC指令包起来。
除了在存储和数据上的特性外,Redis还支持 publish/subscribe, 通知, key 过期,这些都是Redis能在多种典型场景下都具备解决方案的原因,所以对于企业来说,掌握Redis的使用及性能是面试开发工程师时必问的知识点,也会对面试者以往参与的项目中是否涉及Redis的使用做个重点评估,以此来判定你和岗位的合适性。
高并发问题的产生来源于互联网业务种类增多,在传统的网站中,只要使用html静态页面就可以实现,对于网站架构、性能的要求都很低。但是随着网站技术的升级,网络用户的增加,门户网站中的点击率暴增,大量用户的访问促使高并发问题产生。并且随着“秒杀”等场景出现,如果不能对高并发问题解决,系统将会出现崩溃或者卡顿。
Redis是一个单线程程序,客户端的命令是逐条执行,用惯性思维思考,Redis并不会存在高并发问题,它的特性也能对此进行说明。但在搭建Redis环境之后,通常都会是一组命令集合执行程序,一个请求中就包含了N个Redis执行命令,再加上多个客户端请求,命令就更多了,导致连接超时、数据混乱或错误、请求阻塞等多种问题。即总结为,产生Redis并发诱因是程序中的业务复杂度导致。
Redis高并发场景下的解决方案,我们先从其中两个方面来说明。
一.将Redis连接池化。关系型数据库解决方式是采用连接池方式解决多请求连接问题,在Redis数据库内,建立友好的连接数量让客户端与服务端保持一定数额的连接量,当客户端需要连接时,能直接从连接池中获取连接,然后直接访问Redis服务端。
二.执行关键读写时添加内部锁。具体的执行方式需要结合自身项目业务来实现Redis并发加锁、解锁代码,但是一定要对线程内容特别熟悉的才能使用该种方式,不然有可能产生死锁问题。
当然,Redis高并发场景下的解决方案并不只是以上两种,还有更多的解决方案,大家可以具体场景具体分析,使用最简捷有效的方式才是项目开发过程中所需要的。
高并发是存在开发项目中的手段,与微服务、分布式架构在项目开发中结合使用,相辅相承,对于Redis在微服务/分布式架构下的解决方案,也是我们必须了解的技术知识。
- 点赞
- 收藏
- 分享
- 文章举报
- 高并发架构系列:什么是分布式锁?Redis实现分布式锁详解
- 分布式实时日志分析解决方案ELK部署架构
- 分布式架构下的会话追踪实践【基于Cookie和Redis实现】
- 精华【分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!
- Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa j2ee分布式架构核心技术
- 大型分布式系统架构设计(一)------------大型系统解决方案的演变
- 2种基于简单定时任务实现分布式定时任务的技术解决方案(zookeeper、redis和内联MQ)
- 微服务架构案例及分布式事务解决方案
- 微服务架构的分布式事务解决方案
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
- .NET企业级架构解决方案:什么是UML
- Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa j2ee分布式架构核心技术
- Java高架构师、分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis
- 微服务架构的分布式事务解决方案
- 分布式架构学习之:016--Redis的安装与使用(单节点)
- 微服务架构的分布式事务解决方案
- 微服务架构的分布式事务解决方案
- Codis作者黄东旭细说分布式Redis架构设计和踩过的那些坑们
- 精华【分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!
- 分布式架构springmvc+springboot+springcloud+redis