Redis
文章平均质量分 56
Redis
加浓美式好喝
when you fall down,just try again.
展开
-
Redis分布式锁
可以利用set ex nx设置锁的过期时间,解决了服务器崩了没有正常释放锁的问题。但是之前加的锁的数据从节点不知道。但是在这种情况下,就会导致服务器2刚加上的锁就被解除了。因为在GET的时候,已经通过了校验,因为此时的锁的id正是服务器1的id。解决方法有两种,一是实现redis的事务,保证线程B的两个命令是原子执行的。总结:单个Redis实例可能存在单点故障的风险,一旦发生故障,可能导致锁的不可用。Redlock算法通过在多个Redis实例之间创建相同的分布式锁,能够提高系统的可用性和可靠性。原创 2024-04-06 17:33:00 · 727 阅读 · 0 评论 -
如何保证Redis和数据库数据一致性
假设此时有两个线程,一个线程修改了数据库的内容。之后向数据库进行修改操作。那么就会读到修改前的旧数据了。当线程1发起修改操作的请求给数据库后。数据库会进行修改并返回给redis,要求redis删除数据。如果在数据库同步数据之前,有线程2进行读操作,那么可能会读到旧数据。等到数据库将新的数据返回给redis之后,再将数据清空。保证了redis里不会有旧的数据了,虽然有加锁保证强一致性的操作,但是这样会大大影响效率。而不是直接进行redis的修改。一是先操作redis,一是先操作mysql。原创 2024-04-06 15:10:31 · 453 阅读 · 0 评论 -
如何用Redis实现消息队列
Stream数据结构中每个消息都有消息ID,保证消息的消费需要用到这个消息ID。当消费者在消费消息的时候宕机了,这时候消费者不会发送XACK,当消费者重新上线后,会将消息重新发给消费者。4.每个消费者再订阅一个队列的时候,在redis中会给每个消费者分配一块内存消费消息的缓冲区,当由大量的消息过来的时候,消费者消费不及时,造成消息堆积达到一定阈值的时候,redis就会强制让这个消费者下线。2.Redis 不会对发布的消息进行持久化存储,如果 Redis 服务器重启或者出现故障,未处理的消息可能会丢失。原创 2024-03-31 11:15:18 · 581 阅读 · 0 评论 -
Redis集群
Redis 中的槽位数量通常选择为 16384(即 2 的 14 次方),而每个键都会通过 CRC16 算法计算出一个 16 位的哈希值,然后将该哈希值与槽位数量取模,得到键所属的槽位编号。所以干脆用空间换时间。槽位的数量应该是 2 的幂次方,因为将哈希值映射到槽位时,通常会使用取模运算。所以我们需要引入新的机制,来提高Redis的存储的数据量。当客户发送请求时,如果接收到的那个服务器判断该槽位不是由自己负责时,就返回给客户MOVED的错误信息,并将需要处理这个请求的Redis服务器的ip和port给它。原创 2024-03-30 17:45:41 · 308 阅读 · 0 评论 -
为什么Redis设计成单线程
中,读取速度非常快,而写入操作通常采用异步持久化的方式,将数据定期写入到磁盘,避免了磁盘IO成为性能瓶颈。这样一来,Redis 可以在高速内存中快速响应读取请求,而异步持久化保证了数据的持久性和安全性。的,保证了多个操作的一致性和可靠性。由于 Redis 是单线程执行指令的,所以不会出现多线程并发访问共享数据的问题,3.采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU。来处理客户端请求,避免了多线程间的上下文切换和锁竞争,从而提高了并发处理能力。原创 2024-03-30 17:07:23 · 325 阅读 · 0 评论 -
Redis的持久化
redis的持久化原创 2024-01-27 10:15:41 · 543 阅读 · 0 评论 -
Redis的数据类型
Redis的5个基本数据类型原创 2024-01-25 14:00:46 · 1009 阅读 · 0 评论