Redis
文章平均质量分 59
深度历险
失忆机器
不积跬步无以至千里
展开
-
Redis深入学习笔记-05(keys、scan)
有时候需要在成千上万的实例key中找到特定前缀的key来进行数据的处理。但是如何在海量的key中找到满足特定条件的key呢?keys指令:用来列出所有满足特定正则字符串规则的key。缺点:没有limit参数,一次性显示出所有满足条件的key,如果数据量比较大的时候,redis是单线程的,其他的指令会延后,造成redis服务卡顿。scan指令1、复杂度虽然也是 O(n),但是它是通过游标分步进行的,不会阻塞线程;2、提供 limit 参数,可以控制每...原创 2021-09-27 11:05:58 · 209 阅读 · 0 评论 -
Redis深入学习笔记-04(布隆过滤器)
前言:HyperLogLog数据结构可以解决统计功能,但是遇到以下场景就无能为力了。例如,新闻客户端总是给我们推荐不同的新闻,但是不会给我们推荐已经看过了的。这里面就有一个去重的功能,去掉我们已经看过了的。每次推荐的时候都会去查询一遍是否为已经推荐过了的内容。就是一个exists方法。HyperLogLog不存在这个方法,不能判断一个值是否已经存在在这个数据结构当中。但是高级数据结构布隆过滤器(Bloom Filter)有这个功能。它就是专门来解决这种去重问题的,去重的同时还能节省很多空间,比一些传统的方法原创 2021-09-23 18:47:52 · 183 阅读 · 0 评论 -
Redis深入学习笔记-03(HyperLogLog)
什么是HyperLogLog?HyperLogLog是Redis提供用来解决统计问题的一种数据结构。HyperLogLog提供不精确的去重计数方案,虽然不精确,但也不是非常离谱,标准误差在0.81%,这样的精确度已经满足绝大多数的统计需求了。 如果要统计一个网页的UV(同一个用户一天之内的多次访问只能计数一次),该如何设计?肯定需要求每一个网页请求都需要带上用户的ID,无论是登录用户还是未登录用户都需要一个唯一ID来标识。 ...原创 2021-09-15 17:54:59 · 137 阅读 · 0 评论 -
Redis深入学习笔记-02(分布式锁)
分布式应用进行逻辑处理时经常会遇到并发问题。如下图所示,一个操作要修改用户的状态,修改之前要先读出用户的状态,在内存里进行修改,改完了再存回去。这两个操作同时进行的话,就会出现并发问题,因为读取和保存状态这两个操作不是原子操作(原子操作是指不会被线程调度机制打断的操作。这种操作一旦开始,就会一直运行到结束,中间不会有任何线程切换。)导致最后的结果是错误的。 一般使用setnx(set if not exists)指令,只允许被一个客户端占坑。先来先占,用完了,再调用de...原创 2021-09-15 16:53:26 · 92 阅读 · 1 评论 -
Redis深入学习笔记-01
1、基础数据结构(五种)string(字符串)、list(列表)、hash(字典)、set(集合)、zset(有序集合)。string(字符串) string内部表示的是一个字符数组,Redis所有的数据结构都以唯一的key字符串作为名词,然后通过这个唯一的key值来获取相应的value数据。不同类型的数据结构的差异就在于value的结构不一样。 ...原创 2021-09-14 17:42:57 · 96 阅读 · 2 评论