
redis
文章平均质量分 64
Rick1993
这个作者很懒,什么都没留下…
展开
-
redis死锁+mq消费者断开+消息积压
1,全局lock变量,导致多线程情况下锁无法释放;获取锁的代码又是while死循环,导致栈溢出,最后mq消费端自动断开了。1,Lock变量改为局部变量。原创 2023-05-13 00:38:05 · 247 阅读 · 0 评论 -
redis过期策略
Redis的过期策略一般有以下三种:1,定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。2,惰性过期只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。3,定期过期每隔一定的时间,会扫描一定数量的数据库的e原创 2022-05-31 00:01:16 · 1700 阅读 · 0 评论 -
redis之list来实现限流
1,使用Redis的list数据结构类型实现限流代码如下: String key = "userId" + "接口名" ; int listLength = llen(key); if (listLength < 10) { lpush(key, new ()); } else { long time = lindex(key, -1); if (now() - time &原创 2022-05-23 23:51:45 · 411 阅读 · 0 评论 -
redis分布式锁的实现原理
参考:1,Redisson实现Redis分布式锁的N种姿势2,Redlock:Redis分布式锁最牛逼的实现原创 2022-04-17 23:58:30 · 5029 阅读 · 0 评论 -
Redis缓存淘汰算法和淘汰策略
Redis常用淘汰算法:FIFO: First In First Out,先进先出算法,判断被存储的时间,离目前最远的数据优先被淘汰LRU:Least Recently Used,最近最少使用算法,判断最近被使用的时间,目前最远的数据优先被淘汰;LRU:Least Frequently Used,最不经常使用算法,在一段时间内,数据被使用次数最少的,优先被淘汰。Redis淘汰策略:...原创 2019-11-27 23:05:36 · 604 阅读 · 0 评论 -
Redis集群
关于Redis集群化方案,目前有三种:Twitter开发的twemproxy;豌豆荚开发的codis;Redis官方的redis-clusterredis-cluster架构图参考链接:Redis cluster集群原创 2019-11-22 12:14:57 · 140 阅读 · 0 评论 -
Redis之数据持久化
Redis有两种数据库持久化方案:RDB和AOFAOF:AOF就像MySQL库中的binlog一样,把每一次写操作以追加的形式记录在其中以文件的形式刷到磁盘里。默认使用fsync策略,Redis的性能依然很好(fsyhc是由后台线程进行处理的,主线程会尽力处理客户端请求),一旦出现故障,最多丢失1秒的数据。缺点:AOF文件的大小会随着时间线增大,一段时间后就会变得很大;如果要在一端以AO...原创 2019-11-22 11:02:24 · 165 阅读 · 0 评论 -
redis之跳跃表
参考链接:Redis源码解析之跳跃表原创 2019-11-21 21:32:02 · 145 阅读 · 0 评论 -
一致性hash算法
一致性hash算法是为了解决:当缓存机器节点增加或者减少时,出现缓存无法命中,导致直接访问数据库的问题。一致性hash算法解决了分布式环境下机器增加或者减少时,简单的取模运算无法获取较高命中率的问题。通过虚拟节点的使用,一致性hash算法可以均匀分担机器的负载,使得这一算法更具现实的意义。正因如此,一致性hash算法被广泛应用于分布式系统中。参考博客:一致性hash算法...原创 2019-11-17 11:36:44 · 89 阅读 · 0 评论 -
redis中bitmap的使用
1000万的用户进行打卡签到,一天使用的内存为10000000/8/1024/1024 = 1.19M参考链接:分布式缓存Redis之bitmap原创 2019-11-14 13:00:08 · 266 阅读 · 0 评论 -
redis的缓存雪崩,缓存穿透、缓存击穿和数据库的一致性问题
参考博客:芋道源码1. 缓存雪崩什么是缓存雪崩?如果我们的缓存挂掉了,这意味着我们全部的请求都跑到数据库了。我们都知道Redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以Redis需要对数据设置过期时间,并采用的是惰性删除+定期删除两种策略对过期键删除。如果缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删光了。这就会导致在这段时间内,这些缓存同时失效,......转载 2019-10-02 18:09:36 · 144 阅读 · 0 评论 -
redis分布式锁的实现
分布式锁能够保证在多线程访问共享资源时,不会在同一时间内访问相同的资源。原子操作是不需要synchronized的,因为原子操作是不会被线程调度机制打断的:这种操作一旦开始,就一直运行到结束,中间不会有任何线程切换。使用Redis中的setnx属性,如果setnx返回的是1,表示获取锁成功;反之,返回0,表示该资源有人正在编辑,无法使用,操作完成后,不管有没有异常,都要释放锁。Redis配...原创 2019-04-22 11:18:23 · 285 阅读 · 0 评论