Redis
文章平均质量分 68
rootlh;
普通开发者如果习惯于在架构师封装好的东西之上,只专注于做业务开发,那久而久之,在技术理解和成长上就会变得迟钝甚至麻木。
展开
-
[Redis专题]Redis基础知识巩固
一、Redis的数据结构:常用:字符串String、字典Hash、列表List、集合Set、有序集合SortedSet、HyperLogLog等二、Redis分布式锁的应用:通过set指令争抢锁,得到锁后expire设置锁的超时时间(防止锁得不到释放)三、Redis异步队列的应用:方法1:(非阻塞)使用list结构作为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,...转载 2018-12-02 11:37:21 · 158 阅读 · 0 评论 -
布谷鸟过滤器
布谷鸟过滤器一、布隆过滤器二、布谷鸟过滤器三、优缺点四、参考资料一、布隆过滤器布隆过滤器有exists方法通过对位数组的hash计算判断某元素是否在集合中,实现去重功能。但布隆过滤器有一下缺点:不支持反向删除元素:一旦对位数组进行了赋值,无法将其删除。查询性能弱:布隆过滤器使用多个hash函数计算位图多个不同位点,由于多个位点在内存中不连续,CPU寻址花销较大。空间利用率低。二、布...原创 2019-07-07 16:15:38 · 9723 阅读 · 0 评论 -
一致性哈希算法
一致性哈希算法一、普通hash算法二、一致性哈希算法一、普通hash算法在分布式系统中,Redis 的 key 通过对服务器数量 n 取模即可得到对应存放的服务器编号,将对应的key-value进行读写。但由于这套hash算法和分布式系统中的服务器节点数量是强相关的,一旦系统中的节点出现了增删,整套hash算法需要重新计算,在计算过程中会导致缓存无法命中,耗费性能且易出错。二、一致性哈希算法...原创 2019-05-19 16:01:15 · 242 阅读 · 0 评论 -
Redis持久化
Redis持久化业务场景持久化分类全量持久化原理AOF原理使用混合持久化的方式业务场景Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。持久化分类Redis的持久化分为全量持久化(快照)和增量持久化(AOF 日志)。全量持久化将内存中的数据直接快照存在硬盘中,增量持久化通过...原创 2019-04-29 10:22:58 · 150 阅读 · 0 评论 -
漏洞算法实现漏斗限流
漏洞算法实现漏斗限流漏斗算法思想漏斗算法思想漏斗的容量是有限的,如果将漏嘴堵住,然后一直往里面灌水,它就会变满,直至再也装不进去。如果将漏嘴放开,水就会往下流,流走一部分之后,就又可以继续往里面灌水。如果漏嘴流水的速率大于灌水的速率,那么漏斗永远都装不满。如果漏嘴流水速率小于灌水的速率,那么一旦漏斗满了,灌水就需要暂停并等待漏斗腾空。所以,漏斗的剩余空间就代表着当前行为可以持续进行的数量,漏嘴...原创 2019-04-29 10:21:05 · 2634 阅读 · 0 评论 -
zset实现简单限流
zset实现简单限流业务场景限流思路业务场景有一个限流系统要求限定用户的某个行为在指定的时间里只能允许发生 N 次限流思路这个限流需求中存在一个滑动时间窗口,而 zset 数据结构的 score 值,恰好可以通过 score 的范围来圈出这个时间窗口。我们只需要保留这个时间范围窗口,窗口之外的数据都忽略掉。这个 zset 的 value 需要保证唯一性,将value设置成毫秒时间戳即可。...原创 2019-04-29 10:19:09 · 1135 阅读 · 0 评论 -
Redis分布式锁的探索
Redis分布式锁的探索参考资料Redlock业务场景解决分布式锁思路1解决分布式锁思路2使用Redlock算法解决分布式锁参考资料Redlockhttp://zhangtielei.com/posts/blog-redlock-reasoning.htmlhttp://zhangtielei.com/posts/blog-redlock-reasoning-part2.html业务场景...原创 2019-04-29 10:11:34 · 144 阅读 · 0 评论 -
HyperLogLog--统计用户访问量
HyperLogLog--统计用户访问量使用场景基本思路1使用HyperLogLog解决海量数据统计问题基本指令(用法和set集合的sadd类似)pfmerge合并两个HyperLogLogHyperLogLog实现原理使用场景需要统计网页每天的用户访问量的数据,同一个用户一天之内的多次访问请求只能计数一次,要求每一个网页请求都需要带上用户的 ID,无论是登陆用户还是未登陆用户都需要一个唯一 ...原创 2019-04-29 10:02:37 · 7314 阅读 · 1 评论 -
布隆过滤器--推荐系统去重
布隆过滤器--推荐系统去重使用场景基本思路1基本思路2Redis布隆过滤器实现思路基本指令自定义参数的布隆过滤器布隆过滤器实现原理使用场景我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经看过的内容。基本思路1服务器记录了用户看过的所有历史记录,当推荐系统推荐新闻时会从每个用户的历史记录里进行筛选,过滤掉那些已经存在的记录。但当用户量很大、每个用户...原创 2019-04-29 09:51:44 · 3091 阅读 · 2 评论 -
[Redis专题]list列表操作及其原理分析
一、list操作在Redis 中,列表操作通常使用list指令进行,类似于java 的LinkedList,Redis 的列表使用的是链表的数据结构进行数据存储。上图创建了一个key 为person 的list ,通过lpop 指令将其依次推出队列,可见其满足队列的先进先出(FIFO)原则。二、list的底层实现在上小节中提到,Redis 的list 使用的是链表数据结构进行数据存储,这...原创 2018-12-02 13:48:04 · 2239 阅读 · 0 评论 -
Redis主从复制及其心跳检测实现机制
[Redis专题] Redis主从复制及其心跳检测实现机制1、Redis主从工作模式简述2、同步2.1老版本的Redis(2.8之前)新版本的Redis(2.8之后)3、命令传播4、新版本主从节点同步示例5、心跳检测5.1 检测主从服务器的网络连接状态5.2 辅助实现min-slave选项5.3 检测命令是否丢失1、Redis主从工作模式简述假设Redis中有一个主节点和一个从节点。正常情况下...原创 2019-07-25 15:50:00 · 4250 阅读 · 0 评论