redis有序集合底层实现
作者:向前的步伐 / 发表: 2022年2月26日 21:00 / redis/ 阅读量:674
redis完全基于内存操作,所以它的性能出色,而且redis有很丰富的数据类型,在电商项目中后端开发的常用redis解决性能问题。其中有序集合zset就是常用的基本数据类型之一,每个member都带有score,可用于排序相关的功能,比如:价格排序,销售额排序等等。
redis完全基于内存操作,所以它的性能出色,而且redis有很丰富的数据类型,在电商项目中后端开发的常用redis解决性能问题。其中有序集合zset就是常用的基本数据类型之一,每个member都带有score,可用于排序相关的功能,比如:价格排序,销售额排序等等。
redis是一种key-value型的内存数据库,它所有的key都是字符串,而value常见的数据类型有五种:string、list、set、zset、hash。redis的这些数据结构, 在底层都是使用redisObject来进行表示。redisObject中有三个重要的属性, 分别是type、 encoding 和 ptr。
哨兵是redis提供的一种高可用的方式,哨兵是一个独立的进程,通过发送命令、等待redis服务响应,从而实现集群的监控和故障的转移。它的原理的实现主要包括哨兵的三个定时任务、主观下线和客观下线、哨兵的领导者选举、故障转移。
redis是一个开源的key value存储系统,在redis3.0之前只支持单例模式,在redis3.0之后才开始支持集群模式。一般情况下,哨兵模式已经能满足一般的生产需求,具备了redis服务的高可用性。但是当数据达到一台服务器存放不下的情况,主从模式或者哨兵模式就不能满足需求。这个时候就需要对数据进行分片,将数据存储到多个redis实例中,集群模式就能解决单机redis容量的问题。
redis支持RDB和AOF两种持久化机制,持久化能避免因进程退出而导致的数据丢失,当再次启动redis服务进程时,可以恢复之前的数据。
哨兵模式是redis实现高可用的实现方式之一,使用一个或者多个哨兵组成集群,对redis节点进行监控,在redis主节点宕机的情况下,哨兵能将从节点中选一个升级为主节点,进行故障节点的移除,实现系统的高可用。
redis缓存的使用,极大的提升了应用程序的性能和效率,特别是在查询数据方面。其中它也带来了一些问题,其中最要害的就是数据一致性问题,如果对数据的一致性要求很高,就不能使用缓存。另外也有一些典型的问题,就是缓存雪崩、缓存击穿、缓存穿透。目前业界也有一些流行的解决方案。
redis支持了这些多种常见的数据类型,现在被广泛的应用在各大公司的内部,它提供了string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)等五种数据类型。