
redis深度学习
Arno-wei
你所谓的迷茫不过是清醒的看着自己沉沦
展开
-
redis 深度学习----字符串
Redis 中的字符串是可以修改的字符串,在内存中它是以字节数组的形式存在的。我们知道 C 语言里面的字符串标准形式是以 NULL 作为结束符,但是在 Redis 里面字符串不是这么表示的。因为要获取 NULL 结尾的字符串的长度使用的是 strlen 标准库函数,这个函数的算法复杂度是 O(n),它需要对字节数组进行遍历扫描,作为单线程的 Redis 表示承受不起。Redis 的字符串叫着「SDS」,也就是 Simple Dynamic String。它的结构是一个带长度信息的字节数组。st原创 2020-11-26 16:12:43 · 144 阅读 · 0 评论 -
redis 深度学习—— Redis 安全通信
隔墙有耳 —— Redis 安全通信想象这样一个应用场景,公司有两个机房。因为一个紧急需求,需要跨机房读取 Redis数据。应用部署在 A 机房,存储部署在 B 机房。如果使用普通 tcp 直接访问,因为跨机房所以传输数据会暴露在公网,这非常不安全,客户端服务器交互的数据存在被窃听的风险。Redis 本身并不支持 SSL 安全链接,不过有了 SSL 代理软件,我们可以让通信数据透明地得到加密,就好像 Redis 穿上了一层隐身外套一样。spiped 就是这样的一款 SSL 代理软件,它是原创 2020-11-26 15:42:16 · 349 阅读 · 0 评论 -
redis深度学习之 无所不知 info命令
无所不知 —— Info 指令在使用 Redis 时,时常会遇到很多问题需要诊断,在诊断之前需要了解 Redis 的运行状态,通过强大的 Info 指令,你可以清晰地知道 Redis 内部一系列运行参数。Info 指令显示的信息非常繁多,分为 9 大块,每个块都有非常多的参数,这 9 个块分别是:1、Server 服务器运行的环境参数2、Clients 客户端相关信息3、Memory 服务器运行内存统计数据4、Persistence 持久化信息5、Stats 通用统计数据6、...原创 2020-11-25 16:44:20 · 255 阅读 · 0 评论 -
redis 深度学习之主从同步---redis深度历险
增量同步 Redis 同步的是指令流,主节点会将那些对自己的状态产生修改性影响的指令记录在本 地的内存 buffer 中,然后异步将 buffer 中的指令同步到从节点,从节点一边执行同步的指 令流来达到和主节点一样的状态,一遍向主节点反馈自己同步到哪里了 (偏移量)。 因为内存的 buffer 是有限的,所以 Redis 主库不能将所有的指令都记录在内存 buffer 中。Redis 的复制内存 buffer 是一个定长的环形数组,如果数组内容满了,就会从头开始覆 盖前面的内容。如果因为网络状况不原创 2020-11-25 15:33:40 · 231 阅读 · 0 评论 -
redis 深度学习之特殊命令scan,
在平时线上 Redis 维护工作中,有时候需要从 Redis 实例成千上万的 key 中找出特定 前缀的 key 列表来手动处理数据,可能是修改它的值,也可能是删除 key。这里就有一个问 题,如何从海量的 key 中找出满足特定前缀的 key 列表来?Redis 提供了一个简单暴力的指令 keys 用来列出所有满足特定正则字符串规则的 key这个指令使用非常简单,提供一个简单的正则字符串即可,但是有很明显的两个缺点。1、没有 offset、limit 参数,一次性吐出所有满足条件的 key,万原创 2020-11-24 16:59:55 · 166 阅读 · 0 评论 -
redis深度学习之简单小数据量限流
系统要限定用户的某个行为在指定的时间里 只能允许发生 N 次,如何使用 Redis 的数据结构来实现这个限流的功能?解决方案 这个限流需求中存在一个滑动时间窗口,想想 zset 数据结构的 score 值,是不是可以 通过 score 来圈出这个时间窗口来。而且我们只需要保留这个时间窗口,窗口之外的数据都 可以砍掉。那这个 zset 的 value 填什么比较合适呢?它只需要保证唯一性即可,用 uuid 会 比较浪费空间,那就改用毫秒时间戳吧。如图所示,用一个 zset 结...原创 2020-11-23 14:49:08 · 179 阅读 · 0 评论