Redis简介,特性和使用场景

📅 发布时间:2026/8/11 7:45:06
Redis简介,特性和使用场景 (一).概念Redis是一个在内存中存储数据的中间件用于作为数据库数据缓存等等。Redis在分布式系统中能够发挥主要作用。(二).特性1.内存数据结构Redis能够在内存中存储数据支持stringshasheslistssetssorted setsstreams 等数据结构。对于Mysql来说主要是通过“表”的方式存储和组织数据的这种数据库被称为“关系型数据库”对于Redis来说主要是通过“键值对”的方式来存储组织数据的这种数据库被称为“非关系型数据库”。在Redis种key都是String类型value可以是上面提到的类型。2.可编程性我们可以针对Redis的操作直接通过简单的交互式命令来进行操作也可以通过一些脚本的方式批量执行一些操作。例如Lua编程语言。3.可扩展性可以使用CCRust等编程语言可以在Redis原有的功能基础上再进行扩展。4.持久化Redis是把数据存放在内存上但是内存上的数据是“易失”的当进程退出或者系统重启这些数据就丢失了。但是Redis除了会将数据存放在内存上Redis也是会将数据存放在硬盘上的采取“内存为主硬盘为辅”。如果Redis重启了就会在重启的时候加载硬盘中的备份数据使Redis的内存恢复到重启前的状态。5.集群Redis作为一个分布式系统的中间件能够支持集群也是很关键的这个类似于“分库分表”对于Redis来说能存储的数据是有限的此时就可以引入多个主机部署多个Redis节点每个Redis存储数据的一部分6.高可用高可用就意味着对数据进行了“冗余备份”Redis自身也支持“主从结构”“从节点”就相当于“主节点”的备份。7.快Redis “快”的原因有以下几个(1).Redis数据存放在内存中访问速度就比访问硬盘快很多(2).Redis的核心功能都是比较简单的逻辑其核心功能就是操作内存的数据结构(3).从网络角度上Redis使用了IO多路复用的方式(4).Redis使用的是单线程模型虽然高版本的Redis引入了多线程。Redis的单线程模型减少了不必要的线程之间的竞争开销。注意可能有人会问多线程不就是为了提高性能的的为什么这里说单线程是提高性能的这是因为多线程提高效率的前提是执行的是CPU密集型的任务此时使用多线程可以充分利用CPU多核资源。但是Redis的核心任务主要是操作内存的数据结构这个操作不会吃很多CPU。(三).使用场景1.数据库关于数据存储在一些业务场景中考虑的还是“快”此时就可以把Redis当作数据库存储全量数据这里面的数据是不能随便丢的。2.缓存对于Mysql来说存储的数据量大但是速度慢此时就可以把一些热点数据存放在Redis中。Redis中存放是部分数据全量数据以mysql为主即使Redis中的数据没了还可以从mysql这边再加载回来。3.消息队列基于Redis可以实行一个网络版本的生产者/消费者模型。对于分布式系统来说服务器和服务器之间有时候也是需要使用到生产者/消费者模型的。优势在于解耦合 和 削峰填谷4.会话存储前面在介绍JavaEE进阶的http协议阶段介绍到过cookie和session通过sessionId建立连接实现用户身份信息的存储将用户数据存储到服务器上。但是在“分布式系统”中就会有问题当用户第一次访问的时候访问的第一个应用服务器然后在客户端中保存下了SessionId但是当第二次访问如果访问的是第三个服务器此时第三个服务器通过Cookie中的SessionId并没有找到Session此时用户还是需要重新登陆。这就出现了问题明明用户已经登录过了现在还是需要重新登陆。如果下一次访问的第二个服务器那么还是需要重新登陆这显然不太好。那么该如何解决上述问题①.让负载均衡器把同一个用户的而请求始终打到同一个机器上。即对于用户1来说每次都让用户1访问第一个服务器。②.把会话数据单独拎出来放到一组独立的而机器上存储例如Redis此时无论第一次客户端访问的是那个服务器都会到Redis中存储会话。然后下次再访问的时候也是从Redis中查看是否够存在Session。这样即使服务器挂了会话也不会丢失一直在Redis中存着。