
Redis
文章平均质量分 65
MarkHD
这个作者很懒,什么都没留下…
展开
-
Redis——哨兵模式详解
Redis的哨兵模式(Sentinel Mode)是一种高可用性解决方案,用于监控Redis集群中的主从节点,并在主节点出现故障时自动进行故障转移,以保证Redis集群的连续性和可用性。原创 2024-05-14 10:31:59 · 555 阅读 · 0 评论 -
Redis——RedLock、Zookeeper及数据库实现分布式锁
在分布式系统中,实现分布式锁是确保数据一致性和防止并发问题的重要手段。原创 2024-05-13 09:17:26 · 428 阅读 · 1 评论 -
Redis——Redis实现分布式锁(Redission源码解析)
Redis实现分布式锁通常涉及到Redis的SETNX(现在称为SET命令配合NX和PX选项)或RedLock算法。然而,您提到的Redission(注意是Redisson,而不是Redission)是一个在Redis的基础上实现的Java驻留数据网格(in-memory data grid)实现。Redisson提供了许多分布式和可扩展的Java对象和服务,包括分布式锁、分布式集合、分布式执行服务、分布式调度服务、分布式大数据对象等。原创 2024-05-13 09:12:33 · 600 阅读 · 0 评论 -
Redis——Redis集群脑裂问题
Redis集群脑裂问题指的是在网络分区或其他故障的情况下,Redis集群的多个节点之间失去通信,导致它们各自形成独立的、都认为自己是主节点的分区。这时,每个分区都可以接受写请求,从而可能导致数据不一致和冲突。原创 2024-05-13 09:08:16 · 534 阅读 · 0 评论 -
Redis——Redis 3.0之前各大厂商的集群方案
需要注意的是,随着Redis 3.0版本的发布,Redis官方推出了原生的Redis Cluster集群方案,它提供了更好的性能和可扩展性,成为了目前主流的Redis集群解决方案。因此,在Redis 3.0及以后的版本中,建议使用Redis Cluster来搭建Redis集群。在Redis 3.0版本之前,由于Redis本身并不直接支持集群功能,各大厂商和社区为了实现Redis的集群化部署和扩展,提出了多种集群方案。原创 2024-05-13 09:01:11 · 313 阅读 · 1 评论 -
Redis——Cluster集群模式详解
Redis Cluster是Redis中推荐的分布式集群解决方案,它将数据自动分片到多个节点上,每个节点负责一部分数据。总的来说,Redis Cluster是一个高性能、高可用、可扩展的分布式数据库系统,适用于各种大规模数据存储和处理的场景。原创 2024-05-13 08:59:37 · 752 阅读 · 0 评论 -
Redis——RDB、AOF和混合持久化机制
Redis提供了三种持久化机制来确保数据的持久保存,分别是RDB(Redis DataBase)、AOF(Append Only File)和混合持久化。总的来说,RDB、AOF和混合持久化各有优缺点,需要根据实际的应用场景和需求来选择适合的持久化方式。原创 2024-05-11 09:42:47 · 672 阅读 · 0 评论 -
Redis——Redis的数据库结构、删除策略及淘汰策略
Redis是一个高性能的key-value存储系统,它支持多种数据结构,并提供了丰富的删除策略和淘汰策略。原创 2024-05-11 09:41:14 · 492 阅读 · 0 评论 -
Redis——Java三种客户端(Jedis、Lettuce和Redisson)
它不仅提供了丰富的Redis数据结构和功能支持,还提供了许多分布式服务和功能,如分布式锁、分布式集合、分布式地图等。Lettuce使用了Netty的IO模型,能够处理大量的并发连接,并且支持多种Redis部署模式,如单机、主从、哨兵和集群等。Jedis是Redis的Java实现的客户端,提供了比较全面的Redis命令的支持。总结来说,Jedis、Lettuce和Redisson都是优秀的Redis Java客户端,它们各自具有不同的特点和优势。Redisson则提供了丰富的分布式服务和功能。原创 2024-05-11 09:36:45 · 581 阅读 · 1 评论 -
Redis5.0的Stream数据结构
它以一个有序的、不断增长的日志序列来存储事件流数据。每个事件都是一个包含多个字段的消息,它们被追加到Stream的末尾。Redis 5.0中引入的Stream数据结构是一种新的、持久化的、可查询的、可扩展的消息队列服务。它可以被视为一个日志或消息队列,由一个有序的、不断增长的日志序列来存储事件流数据。其中,键表示消息的唯一标识(通常是一个递增的序列号),值标识消息的内容。这些命令为开发者提供了丰富的操作手段,使得Stream数据结构可以方便地应用于各种场景,如实时消息传递、事件溯源、分布式日志记录等。原创 2024-05-11 09:29:41 · 392 阅读 · 0 评论 -
布隆过滤器的原理简介
布隆过滤器(Bloom Filter)是一个空间效率很高的概率型数据结构,它利用位数组和一系列随机映射函数检测一个元素是否可能存在于一个集合中。当要添加一个元素时,它使用多个哈希函数对元素进行哈希,并在位数组中将对应的位设置为1。要检查一个元素是否存在于集合中,它再次使用相同的哈希函数进行哈希,并检查位数组中对应的位是否全部为1。例如,如果你需要一个分布式的布隆过滤器,那么Redisson可能是一个更好的选择;如果你只需要一个简单的、基于本地内存的布隆过滤器,那么Guava可能是一个更好的选择。原创 2024-05-11 08:42:00 · 306 阅读 · 0 评论 -
在Redis中Lua脚本为什么可以保证原子性
综上所述,Redis通过其单线程模型、内置Lua解释器、Lua脚本的原子性执行以及减少网络开销等机制,保证了Lua脚本在Redis中执行的原子性。这使得Lua脚本成为Redis中一种强大的工具,可以用于实现复杂的数据操作、事务处理、乐观锁、排他锁等需要原子性保证的场景。在Redis中,Lua脚本的原子性保证主要源于Redis的内部实现机制和Lua脚本的执行方式。原创 2024-05-11 08:34:55 · 1784 阅读 · 0 评论 -
为什么Redis6.0引入了多线程
总的来说,Redis 6.0引入多线程是为了提高性能、降低延迟、更好地利用CPU资源,并保持Redis的简单性和高性能特点。这些改进有助于Redis更好地应对不断增长的数据量和并发量需求,同时保持其稳定性和可靠性。Redis 6.0引入多线程的决策是基于其性能优化和适应现代硬件架构的考虑。原创 2024-05-11 08:31:42 · 939 阅读 · 0 评论 -
什么是Redis的多路复用
更具体地说,IO多路复用是一种技术,它允许一个进程或线程同时监视多个文件描述符(包括套接字等)的状态变化,从而实现对多个IO操作的并发处理。而IO多路复用技术则可以在单个线程或进程内同时监听多个IO事件的状态变化,这样一旦有IO事件就绪,就可以立即进行处理,而无需阻塞等待。Redis采用了这种技术,特别是在网络IO方面,使用了如epoll这样的机制。在Redis中,所有的操作都是单线程的,但是由于IO操作通常是阻塞的,所以I/O多路复用技术被用来解决这个问题,确保在高并发情况下系统仍能保持高吞吐量。原创 2024-05-11 08:28:25 · 893 阅读 · 0 评论 -
Redis为什么最开始被设计成单线程而不是多线程
综上所述,Redis最初选择单线程模型是基于对内存效率、I/O效率、编程复杂性、CPU缓存利用、编程模型简化以及可维护性和稳定性的综合考虑。然而,随着技术的发展和硬件性能的提升,Redis也在不断探索如何在保持其简单性和稳定性的同时,进一步提高性能。由于不需要考虑多线程之间的数据共享和同步问题,开发者可以更加专注于实现核心的数据结构和算法,从而提高开发效率和代码质量。单线程模型还带来了更好的可维护性和稳定性。由于减少了多线程引入的复杂性和潜在的并发问题,Redis的故障率相对较低,且更易于调试和维护。原创 2024-05-11 08:24:37 · 576 阅读 · 0 评论