09 2020 档案
摘要:Redis阅读笔记-有序集合对象 有序集合的编码可以是ziplist或者skiplist。 ziplist编码的压缩表对象使用压缩表作为底层实现, 每个集合元素使用两个紧挨在一起的压缩表节点来保存, 第一个节点保存元素的成员(member), 而第二个元素则保存元素的分值(score)。
阅读全文
摘要:Redis LRU 应用背景 当Redis内存超出物理内存限制时, 内存的数据会开始和磁盘产生频繁的交换(swap)。交换会让Redis的性能急剧下降, 对于访问量比较频繁的Redis来说, 这样龟速的存取效率基本上等于不可用。 在生成环境中我们是不允许Redis出现交换行为的, 为了限制最
阅读全文
摘要:Redis - 懒惰删除 一直以来我们认为Redis是单线程的, 单线程为Redis带来了代码的简洁性和丰富多彩的数据结构。不过Redis内部实际上并不是只有一个主线程, 它还有几个异步线程专门用来处理一些耗时操作。 Redis为什么要懒惰删除? 删除指令del会直接释放对象的内存, 大部分
阅读全文
摘要:Redis - Scan 在平时线上Redis维护工作中, 有时候需要从Redis实例成千上万的key中找出特定前缀的key列表来手动处理数据。可能是修改它的值, 也可能是删除可以。这里有一个问题,如何从海量的key中找出满足特定前缀的key列表来? Redis提供了一个简单粗暴的指令key
阅读全文
摘要:Redis 线程IO模型 Redis是单线程程序! 这点必须铭记。 Redis单线程为什么还能这么快? 因为它所有的数据都在内存中, 所有的运算都是内存级别的运算。正因为Redis是单线程, 所以要小心使用Redis指令, 对于那些时间复杂度位O(n)级别的指令, 一定要谨慎使用,一不小心就
阅读全文
摘要:Redis 布隆过滤器 应用场景 我们知道可以用HyperLogLog数据结构用来进行估数, 它非常有价值,可以解决很多精度不高的统计需求。 但是如果我们想知道某一个值是不是已经在HyperLogLog结构里面了, HyperLogLog就不能为力了, 它只提供了pfadd和pfcount方
阅读全文
摘要:管道(pipeline) Redis管道(pipeline)本身并不是Redis服务器直接提供的技术,这个技术本质上是有客户端提供的,跟服务器没有什么直接关系。 Redis消息交互 当我们使用客户端对Redis进行一次操作时,客户端将请求传送给服务器,服务器处理完毕后,在将响应回复给客户端。
阅读全文
摘要:Redis Geohash Redis在3.2版本后增加了地理位置GEO模块, 意味着可以使用Redis来实现摩拜但这[附近的Mobike]、美团和饿了么[附近的餐馆]这样的功能了。 用数据库来算附件的人 地图元素的位置数据使用二维的经纬度表示, 经度范围(-180, 180], 纬度范围(
阅读全文
摘要:Unbuntu 安装redis-cell 插件模块 redis-cell 限流模块 Redis4.0提供了限流Redis模块,它叫redis-cell。该某块也使用了漏斗算法, 并提供了原子的限流指令。 安装步骤 1、查看redis的系统版本 vagrant@homestead:~$ redis-s
阅读全文
摘要:漏斗限流 基本思路 漏斗限流是最常用的限流方法之一, 顾名思义, 这个算法的灵感来源于漏斗的结构。 漏斗的容量是优先的, 如果将漏斗嘴堵住, 然后一直往里面灌水, 它就会变满, 直至再也装不进去。如果将漏斗嘴放开, 水就会往下流, 水流走一部分后, 就又可以继续往里面灌水。 如果漏斗的流水速
阅读全文
摘要:简单限流 限流算法在分布式领域是一个经常被提起的话题,当系统的处理能力有限时, 如何阻止计划外的请求继续对系统施压, 这是一个需要重视的问题。 除了控制流量, 限流还有一个应用目的是用于控制用户行为, 避免垃圾请求。比如在用户的发帖、回复、点赞等行为都要严格受控,一般要严格限定某行为在规定时
阅读全文
摘要:Redis阅读笔记--压缩列表 压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表指包含少量的列表项, 并且每个列表项要么就是小整数值, 要么就是长度比较短的字符串, 那么Redis就会使用压缩列表来做列表键的底层实现。 例如,执行以下命令将会创建一个压缩列表实现的列表键。
阅读全文
摘要:Redis阅读笔记-整数集合 整数集合(intset)是集合键的底层实现之一, 当一个集合只包含了整数值元素, 并且这个集合的元素数量不多时, Redis就会使用整数集合作为集合键的底层实现。 举个例子,如果创建一个只包含5个元素的集合键, 并且集合中的所有元素都是整数值, 那么这个集合键的
阅读全文
摘要:Unbuntu 安装Redis 布隆过滤器插件 查看你的Redis系统版本 vagrant@homestead:~$ redis-server -v Redis server v=5.0.8 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=129
阅读全文
摘要:Redis 布隆过滤器 应用场景 我们知道可以用HyperLogLog数据结构用来进行估数, 它非常有价值,可以解决很多精度不高的统计需求。 但是如果我们想知道某一个值是不是已经在HyperLogLog结构里面了, HyperLogLog就不能为力了, 它只提供了pfadd和pfcount方
阅读全文