Redis
fufucen
技术服务于业务
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
分布式锁
锁的条件以及错误场景互斥性:在任意时刻,只有一个客户端能持有锁。也就是说加锁的过程要保证原子性。不会发生死锁:如果一个客户端在拿到锁后执行业务代码时崩溃,就可能会发生死锁。可以给锁加上过期时间,但是依然要满足原子性。解铃还须系铃人:一个客户端在拿到锁后执行业务代码时间超过了锁的过期时间,但是没有出现业务异常,其他线程去竞争锁的时候发现锁过期了,就把锁删除了。务必保证加锁和解锁是同一个客户端,客户端自己不能把别人加的锁给解了。redisson有一个看门狗可以给锁续期,相当于一个保护线程。...原创 2021-04-08 15:36:24 · 130 阅读 · 0 评论 -
Redis集群
redis集群搭建分为三种:第一种主从模式(master/slave):主从模式提高了高可用性,主库进行读写操作,当数据发生变化时自动同步给所有从库;从库进行读操作,并接受主库同步过来的数据;主库挂掉后redis将不再提供写服务,但可以保证读服务。第二种哨兵模式(Sentinel):哨兵模式在主从模式基础上,进一步提高了可用性,增加了对主库的监控,如果主库挂了,哨兵会在从库中选取一个修改其配置文件,替代主库,先前的主库恢复后会作为从库提供读服务。值得一提的是哨兵也是可能挂掉的,所以哨兵也可以搭建成集群模式,原创 2021-04-07 18:19:56 · 319 阅读 · 1 评论 -
Redis事务
redis事务Pipelining(管道):客户端行为,服务器不感知,目的是提高效率,不具备原子性。能够让Redis在一次交互中处理多条命令。MULTI和EXEC(redis事务):服务端支持的功能,具有原子性。一个事务中的一组命令是绝对连续执行的,在这些命令执行完成之前,绝对不会有来自于其他连接的其他命令插进去执行。Redis在接收到MULTI命令后便会开启一个事务,这之后的所有读写命令都会保存在队列中但并不执行,直到接收到EXEC命令后,Redis会把队列中的所有命令连续顺序执行,并以数组形式返回每原创 2021-04-08 11:28:20 · 86 阅读 · 0 评论 -
缓存雪崩,缓存击穿,缓存穿透
缓存雪崩同一时间缓存大面积过期,所有原本应该访问缓存的请求都去查询数据库了。解决方法:加锁,若缓存中没有,则所有进程去竞争锁,若抢到锁,则去查数据库并添加缓存;没有抢到锁的其他线程休眠一段时间后再去缓存中取,没有取到则继续竞争锁。将缓存失效时间分散开来,避免大面积过期。缓存击穿某个热点缓存过期,同一时刻大量请求直接去查询数据库,数据库压力增大。解决方法:加锁,若缓存中没有,则所有进程去竞争锁,若抢到锁,则去查数据库并添加缓存;没有抢到锁的其他线程休眠一段时间后再去缓存中取,没有取到则继原创 2021-04-08 12:03:52 · 139 阅读 · 0 评论 -
Redis为什么这么快
redis为什么这么快Redis 将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。I/O多路复用模型由于采用I/O多路复用,所以单线程得以实现,因而不存在多线程切换的消耗,也不存在加锁和释放锁的性能消耗。I/O多路复用“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用I/O多路复用技术可以让单个线程高效的处理多个连接请求,尽量减少网络 IO 的时间消耗。...原创 2021-04-08 14:40:24 · 127 阅读 · 0 评论 -
Redis数据类型
原创 2021-04-08 11:56:26 · 120 阅读 · 0 评论 -
Redis持久化
RDB是Redis默认的持久化方式。按照配置周期性的把内存的数据以快照的形式保存到硬盘的二进制文件中,直接拿文件内容重建。不会占用太大的磁盘空间,性能较好,但是无法保证数据一致性,只能将数据恢复到上次保存快照的时候。AOFRedis会将每一个收到的写命令都以追加的方式添加到一个日志文件中。当Redis宕机重构时会按顺序执行日志文件中的命令来重构整个数据库。无法保证数据完全一致性,但可以大幅提高数据一致性,但是追加的命令日志会越来越大,并且重构起来效率较低。实际应用RDB+AOF实际应用中,可以隔一原创 2021-04-08 11:52:19 · 110 阅读 · 0 评论
分享