![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
老卫带你学
专注AI,云计算
展开
-
老卫带你学---redis阻塞问题及其处理
老卫带你学—redis阻塞问题及其处理本文将分成两个方面来介绍redis阻塞内在原因API或数据结构使用不合理CPU饱和持久化相关的阻塞1. API或数据结构使用不合理通常Redis执行命令速度非常快,但也存在例外,如对一个包含上万个元素的hash结构执行hgetall操作,由于数据量比较大且命令算法复杂度是O(n),这条命令执行速度必然很慢。这个问题就是典型的不合理使用API和数据结构。对于高并发的场景我们应该尽量避免在大对象上执行算法复杂度超过O(n)的命令。1.1 如何发现慢查询原创 2020-08-10 17:49:20 · 1526 阅读 · 0 评论 -
老卫带你学---Geohash算法原理及实现
Geohash算法就是将经纬度编码,将二维变一维,给地址位置分区的一种算法。基本原理GeoHash是一种地址编码方法。他能够把二维的空间经纬度数据编码成一个字符串我们知道,经度范围是东经180到西经180,纬度范围是南纬90到北纬90,我们设定西经为负,南纬为负,所以地球上的经度范围就是[-180, 180],纬度范围就是[-90,90]。如果以本初子午线、赤道为界,地球可以分成4个部分。如果纬度范围[-90°, 0°)用二进制0代表,(0°, 90°]用二进制1代表,经度范围[-180°, 0°)原创 2020-05-17 18:47:41 · 357 阅读 · 0 评论 -
老卫带你学---Redis源码中hyperloglog结构的实现原理
HyperLogLog 是一种概率数据结构,它使用概率算法来统计集合的近似基数。而它算法的最本源则是伯努利过程。伯努利过程就是一个抛硬币实验的过程。抛一枚正常硬币,落地可能是正面,也可能是反面,二者的概率都是 1/2 。伯努利过程就是一直抛硬币,直到落地时出现正面位置,并记录下抛掷次数k。比如说,抛一次硬币就出现正面了,此时 k 为 1; 第一次抛硬币是反面,则继续抛,直到第三次才出现正面,此时 k 为 3。对于 n 次伯努利过程,我们会得到 n 个出现正面的投掷次数值 $ k1, k2 … kn $,原创 2020-05-16 22:53:01 · 644 阅读 · 0 评论