Redis不是只有5种基本数据类型?
可以看到就这三个根基呼吁,很简朴很轻易把握。那我们来下手实践一下吧。 BitMap先容和行使场景 起首我们再来思索一个较量故意思的场景,老板想让你统计一年内多个用户之间他们同时在线的天数,这个时辰你怎么办? 你也许会想到行使 hash 存储,这太挥霍空间了,有没有更好的步伐呢?谜底是有的,Redis 中行使了 bitmap位图。 我们知道,字符串中一个字符是行使8个比特来暗示的(如上图),在 Redis 中 bitmap 底层就是 string,也可以说 string 底层就是 bitmap。 假若有了这个我们是不是可以用来计较一个用户在指按时刻内签到的次数?也就是一个位置代表一天,0代表未签到,1代表签到,在上图中,该用户在八天内签到了四次。 Redis 中的 bitmap 还提供了多个 bitmap 举办与,或,异或运算的呼吁,虽然尚有单个 bitmap 的 非 运算。这是不是给你提供了一点思绪对付我们一开始的需求呢? 根基呼吁行使
必要留意的是,这里的start 和 end是指的字符位置不是比特位置!!!包罗下面的 bitpos 也是
对付bitmap尚有一个好玩的指令就是 bitfield ,这里我不做过多先容,感乐趣的同窗本身可以相识一下。 下手实践我们起首来实现一下统计用户签到次数的成果。 还记得我们一开始的题目吗?统计一年内多个用户之间他们同时在线的天数,我们有了 bitmap 还怕什么。 GeoHash先容和场景运用 GeoHash 常用来计较 四面的人,四面的市肆。 试想一下假如我们行使 相关数据库 来存储某个元素的地点 (id,经度,纬度) 。这个时辰我们该怎样计较四面的人?莫非我们要遍历全部元素位置并做间隔计较?这显然不行能。 虽然你可以行使分别地区并行使 SQL 语句圈出地区,然后成立 双向复合索引 来晋升机能,可是数据库的并发手段事实有限,我们能不能行使 Redis 来做呢? 谜底是可以的,Redis 中行使了 GeoHash 提供了很好的办理方案。详细道理是将地球当作一个平面,并把二维坐标映射成一维(精度丧失的缘故起因)。假如对个中的算法感乐趣你可以本身特殊去相识,篇幅有限不做过多声名。 根基呼吁和行使拭魅战
总结 这篇文章中我想各人先容了 Redis 其它的四种非凡数据布局,他们别离是 BloomFilter,HyperLogLog,BitMap尚有GeoHash。而且我还想你们先容了怎样行使他们,他们的运用场景有哪些,但愿对你们有辅佐。 很是感激你能看到这里,假如喜好可能对你有辅佐别忘了点赞哦。你也可以存眷我,我会常常做些进修分享给各人。
(编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |