redis设计与实现

本文深入探讨了Redis的本质,揭示了为何使用远程缓存服务器而非本地Map。Redis提供了5种标准缓存数据结构,具备持久化、排序、并集操作等功能,支持原子操作和分布式数据分片。此外,文章还介绍了Redis与MySQL的区别,以及Redis的单机数据库功能、主从复制、哨兵模式和集群环境下的高可用性策略。
摘要由CSDN通过智能技术生成

redis的本质

1.一台远程服务器,通过sokect连接客户端,并向客户端提供缓存服务(提供了5种标准的缓存数据结构)
2.为什么客户端不在本地用Map缓存数据,而需要一台独立的服务器做缓存?
1)因为分布式和集群概念兴起,一个应用,需要多台服务器协同工作,多台服务器意味着多个JVM
2)多个JVM意味着跨JVM,跨JVM意味着我们要如何保证不同JVM的本地缓存数据保持最终一致性?
3)为了绕开这个问题,redis另起炉灶做了个客户端共用的缓存服务器,并向多个客户端提供缓存服务
4)缓存服务器就类似一个远程的共享内存块,多个客户端向服务器发送读写命令,都是读写同一个内存块的数据
3.redis缓存比本地缓存(Map)的优势
1)redis对外定义了5种标准的缓存数据结构,而虽edis的key只支持string,但value支持string,list,set,zset,hash
2)redis作为一个完整的缓存中间件,实现了很多实用的功能,而这些功能Map都是不具备的,若要具备,需要Map独立实现
3)例如持久化,zset排序功能,set并差集操作,string的自增功能,一些统计功能,以及一些缓存失效策略
4)读写命令操作都是原子操作,不需要像HashMap一样手动保证线程安全
5)支持分布式的数据分片功能,高可用的主从配置以及数据备份功能
4.redis和mysql的区别
1)redis追求性能的最大化,牺牲了一定的持久性、一致性,mysql追求数据的持久性、一致性,也牺牲了一定的性能
2)两者架构有些类似,也有不同,但是数据存放的架构模式类似:内存+磁盘
3)redis内存:内存存放的主要是热点数据,数据纯内存操作,即使单线程处理,运行速度也很快
4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值