V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  RedisMasterNode  ›  全部回复第 26 页 / 共 30 页
回复总数  598
1 ... 18  19  20  21  22  23  24  25  26  27 ... 30  
2020-04-07 11:39:42 +08:00
回复了 abychan 创建的主题 程序员 有没有系统学习数据库表设计的途径
想深入了解的话,github 上 pingcap 的一个 awesome database 的 repo (名字大概有点偏差)
2020-04-07 11:26:07 +08:00
回复了 RedisMasterNode 创建的主题 Redis Redis 6.0 权限控制基于 Bitmap 实现
@AyoCross 个人认为因为简单才符合 redis 各项功能设计的理念
@index90 单元测试覆盖率达到 100%印象中好像并不是什么推荐的实践?不过不太记得出处了,大意就是强制要求 100%实际上好像,比如说其实说明业务代码可能有一些 edge case 没有覆盖到的情况下就容易测试覆盖率 100%,当业务代码对各种边界条件处理都很完善的时候,想要 100%就很难了
2020-04-02 16:02:31 +08:00
回复了 mightofcode 创建的主题 Redis redis 主从同步会有命令丢失?
是否 TCP 连接建立之后,所有的传输都必定抵达,必定能够组合回原来的内容?
@whileFalse 400GB 内存成本不是无脑开的,而且 qps 并不太高,为什么一定要将钱砸进去,不选择其他更好的方案。当然您也可以坚持有钱什么都能做的理念开够 400 内存的集群
第一种情况需要做 1 主多从,架设负载均衡将 QPS 摊到各台机器

第二种情况数据太多了,内存放不下的,但是如果成本足够的话使用去中心化的 Redis Cluster 处理,其实更好的方案应该是不使用 Redis,内存代价太高了
2020-03-29 10:27:28 +08:00
回复了 yangbin9317 创建的主题 Redis 关于用 Redis 限制用户行为频率的方法,麻烦 V 友帮看看
建议了解一下 redis-cell,现成的东西不要造轮子了
2020-03-27 09:53:32 +08:00
回复了 minglanyu 创建的主题 程序员 想了解下大佬们在工作中用过的数据结构
@tingyunsay 小项目去重应该直接 set()精确, 大项目才应该用 BloomFilter ?
2020-03-25 13:12:52 +08:00
回复了 beryl 创建的主题 程序员 ES 关于 doc id 查询方式的认识误区?
GET API 是根据 ID 获取的过程,这个过程中你的目标是明确(且唯一的),包括需要在哪个分片进行获取

Query 的时候,根据你的条件(例如查询 id 为 xxx 的 doc ),在各个分片中进行“搜索”,获取各个分片符合条件的 doc 的 id,在协调节点中进行合并,合并结果回到分片中拿出完整数据( query then fetch,如果是 query and fetch 等会略有不同)
2020-03-24 11:41:38 +08:00
回复了 Ritter 创建的主题 Python Python3 里面 u 和 U 的区别是什么
这个头像好像能自动播放 BGM
2020-03-21 22:38:04 +08:00
回复了 xkxy 创建的主题 求职 我希望这是最后一次骗各位大佬进来了。 >﹏<
虽然给不出什么实质性的建议,不过简历里面将各种技术、软件、项目等专有名词拼对是最基本的要求,例如你的 ES 拼写是错的...S 请转为 lowercase,另外应届的同学熟悉 ES 的话应该还是很有竞争力的,就看是不是真的“熟悉”了,祝好运
2020-03-21 18:00:07 +08:00
回复了 ifconfig 创建的主题 Redis 请教大佬们一个关于 redis 原子性的问题
所以其实正确来说,不应该讲 MULTI 解释为事务,正确的认识是使用 MULTI 使得多个命令可以串行执行不被打断,至于从准备到开始执行过程中是否有变更使用 WATCH 来检查,一旦开始执行就会全部执行完毕不被打扰
2020-03-20 13:35:10 +08:00
回复了 RedisMasterNode 创建的主题 Redis 字节跳动一面复盘 & Redis 多线程 IO 模型
@cuiweixie 恩理解你意思了,在 IOThreadMain 这段确实过掉了
2020-03-20 11:48:43 +08:00
回复了 RedisMasterNode 创建的主题 Redis 字节跳动一面复盘 & Redis 多线程 IO 模型
@cuiweixie 一开始我也这样想过这段,不过后来觉得,比较好的流程应该是:
1、Master 准备这些 pending_list
2、Master 完成,进入 IO Thread 阶段,这时候 Master Thread 应该 act as IO Thread 来工作,而不是 sleep 等待
3、IO 阶段完成,Master 恢复处理 Master 的内容

这个想法是因为部分注释(读写都有):
```
/* Also use the main thread to process a slice of clients. */
```
也就是说 Master 应该也会负责托管部分的 pending clients 么? 所以没第一时间肯定,觉得晚上还需要再看看
2020-03-20 11:19:54 +08:00
回复了 RedisMasterNode 创建的主题 Redis 字节跳动一面复盘 & Redis 多线程 IO 模型
@cuiweixie 对了虽然没搞懂哪里的代码是明确 Master 和 IO 分开执行,不过我之前这样理解是因为这个注释:
```
/* Process: note that the main thread will never touch our list
* before we drop the pending count to 0. */
```
所以在 IO Thread 执行过程中,Master 不会再去操作 io_threads_list 和 io_threads_pending。但是如您所说确实需要完整理解才能讲得清楚为什么不会同时执行。晚上下班后再康康
2020-03-20 11:16:39 +08:00
回复了 RedisMasterNode 创建的主题 Redis 字节跳动一面复盘 & Redis 多线程 IO 模型
@cuiweixie 嗯嗯懂你意思了,先再读一下,这块了解得确实不够清晰
2020-03-20 11:02:01 +08:00
回复了 RedisMasterNode 创建的主题 Redis 字节跳动一面复盘 & Redis 多线程 IO 模型
@cuiweixie 没有理解为什么会有线程切换?
我理解的模型是 Master Thread 处理完后,IO Thread 才会开始处理,而不会 IO Thread 和 Master Thread 一直在同一轮读写里面同时处理,Master Thread 完成执行完之后 IO Thread 才有机会 start,不存在 Master 代码段执行到一半的时候 IO Thread 也在执行某段代码,您觉得呢?
2020-03-19 21:51:00 +08:00
回复了 RedisMasterNode 创建的主题 Redis 字节跳动一面复盘 & Redis 多线程 IO 模型
@cuiweixie
再稍微梳理一下我对读流程的理解,您要看一下是否一致先,因为我不是特别了解 C 和操作系统,所以可能一开始就是错的。

1、当读事件到来,也就是 Client 发送内容过来的时候,读事件 handler 不进行同步(/立即)处理,而是将他们放入待处理的队列。

2、`handleClientsWithPendingReadsUsingThreads()`方法构建 io_threads_list 与 io_threads_pending,其中 io_threads_list 是一个长度为 IO_THREADS_MAX_NUM 的指针 list,每个 item 都指向一个链表,链表中的元素为待处理的 client 对象。io_threads_pending 为一个长度与 io_threads_list 一致的整型 list,io_threads_pending[i]即为 io_threads_list[i]对应链表长度,也就代表着待处理的 client 数量。

3、回到你截图 2 的代码段(`*IOThreadMain`),listRewind 生成一个针对 io_threads_list[i]链表的迭代器,while 循环负责依次遍历 io_threads_list[i]链表中的各个 client (也就是待处理的任务),根据当前全局状态(读还是写),对 client 进行操作。


所以一个线程负责处理 io_threads_list[i]->client_1->client_2->client_3,其他线程也类似地负责处理 io_threads_list[j]中的各个 client 事件,这是我理解的模型。然后回到您的问题,我没太理解哪个位置的 data race,可能是对多线程的一些操作不是很熟悉和了解,请指教
2020-03-19 16:39:36 +08:00
回复了 RedisMasterNode 创建的主题 Redis 字节跳动一面复盘 & Redis 多线程 IO 模型
@cuiweixie 有看到你在 google bbs 上发的内容,晚上再认真看看
2020-03-16 15:38:50 +08:00
回复了 scriptB0y 创建的主题 Redis Redis RESP3 的一些想法
@scriptB0y 嗯知道,博客上说了只支持,发布的时候决定兼容,我觉得现在如果抢推 RESP3 的话大概会给很多应用升级 Redis 6.0 带来困难吧至少短时间是这样的,包括生产里面很多客户端工具需要得到更新,比如 redis-py 目前也是 issue 但未实现,具体也需要看 RESP3 影响的是哪些命令的解析,其他语言 /生态同样有这些问题。

您的博客有一点就是这个“client”应该是执行 RAW 格式的命令,返回 RAW 结果,这点有好有坏个人认为,不过如果 client 都提供上 raw 命令的执行其实萝卜青菜各有所爱都能满足吧也挺好的。

BTW 看看友链~
1 ... 18  19  20  21  22  23  24  25  26  27 ... 30  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1112 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.