redis系列
机智的豆子
现在学习编程还在挣扎阶段,需要有恒心才能坚持下来。
展开
-
布隆过滤器的原理和实现(Guava、Redis)
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>21.0</version> </dependency> /** * Hello world! */ public class App { /** * 插入.原创 2020-05-15 00:40:52 · 800 阅读 · 0 评论 -
Redis的分布式锁
1.基于Redis的分布式锁 1.使用常用命令 SETNX SETNX key val当且仅当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。 Expire expire key timeout为key设置一个超时时间,单位为second,超过这个时间锁会自动释放,避免死锁。 Delete delete key 删除key 在使用Redis实现分...原创 2020-04-11 00:12:36 · 349 阅读 · 13 评论 -
分布式锁的实现方案
1.什么是分布式锁 分布式锁一般用在分布式系统或者多个应用中,用来控制同一任务是否执行或者任务的执行顺序。在项目中,部署了多个tomcat应用,在执行定时任务时就会遇到同一任务可能执行多次的情况,我们可以借助分布式锁,保证在同一时间只有一个tomcat应用执行了定时任务 2.分布式锁的实现方案 1.使用数据库实现分布式锁 缺点:性能差、线程出现异常时,容易出现死锁 2.使用redis实现分布式锁 ...原创 2020-04-10 23:40:11 · 296 阅读 · 0 评论 -
Redis雪崩和缓存穿透
缓存雪崩 缓存雪崩产生的原因 缓存雪崩通俗简单的理解就是:由于原有缓存失效(或者数据未加载到缓存中),新缓存未到期间(缓存正常从Redis中获取,如下图)所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机,造成系统的崩溃。 缓存失效的时候 解决方案 1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线...原创 2020-04-04 22:27:15 · 127 阅读 · 0 评论 -
Redis-cluster原理和实践
Redis-cluster原理 1.概念原理 Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot(哈希槽),每个 Redis 实例负责其中一部分 slot(哈希槽) 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期...原创 2020-04-04 15:18:14 · 250 阅读 · 0 评论 -
Redis 哈希槽概念
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节...原创 2020-04-04 10:51:00 · 977 阅读 · 0 评论 -
redis事务原理和实践
Redis事务的概念: Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。 &n...原创 2020-04-04 10:01:28 · 243 阅读 · 0 评论 -
redis哨兵模式原理及实现
1.什么是哨兵机制? 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒(Notification): 当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover): 当一个Master不能正常工作时,哨兵(sentin...原创 2020-01-13 00:11:28 · 1762 阅读 · 0 评论