redis learn

契机

最近在项目中修改了个 redis 的超时问题,发现对 redis 的 api 以及实现原理都一知半解。这确实说不过去啊。

所以准备把 redis 学一学。最好是能深入到源码级别。

学习方式依然是准备找到开源社区,参与进来。

查找容易参与的相关项目

现在找到了一个可行的方向,就是在 calcite 去贡献一些 redis 的连接器的实现。

这样有助于我了解 calcite 和 redis 的一些操作协议。 从 redis 的连接和命令来学习 redis 就跟学习 mysql 类似吧。

关于 redis 本身的实现,我觉得学习会比较困难,首先是用 c 语言写的,其次是 redis 的启动核心实现的逻辑等等,这些还需要进一步安排学习。

启动 redis + calcite

查找可以贡献的点。

大模型学习

前言

最近 deepseek 大火,所以我打算也追逐一下热点,学习下大模型的相关知识内容,拓宽一下自己的知识边界。

在calcite提交pull request

自从上次想支持 calcite benchmark 函数之后,通过 calcite 和 polardb-x 的一些调查,想直接支持是比较困难的,

所以现在我转入了 calcite,考虑看能否直接提交一些 pr 来慢慢熟悉calcite 这个项目。

查找可以提交的 jira

找了一段时间,也没找到啥方便支持的jira

ps: 发现了一个标签,可以找到新手方便参与的项目 jira project = CALCITE AND resolution = Unresolved AND labels in (newbie,easy-fix) ORDER BY priority DESC, updated DESC

扫了一眼代码,发现 calcite 是可以支持 mongo 的,那么我探究看看,能够用 calcite 接入我本地的 mongo 项目,然后看看能否做一些提升。

Arthas watch ognl map 过滤

今天想通过 arthas watch 一个方法,并过滤入参,死活写不出来。折腾了半天终于搞出来了

例如我想监控这个方法

1
2
3
    public <T> List<T> find(Query query, Class<T> entityClass) {
        return this.<T>find(query, entityClass, this.determineCollectionName(entityClass));
    }
toString 输出的结构体如下
@Query[Query: { "code" : "A1b4a_6437_task_0006", "tenantId" : { "$in" : ["athenaPaaSDesigner", "SYSTEM"] }, "version" : "2.0" }, Fields: { }, Sort: { }]
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
    public Document getQueryObject() {
        Document document = new Document();

        for(CriteriaDefinition definition : this.criteria.values()) {
            document.putAll(definition.getCriteriaObject());
        }

        if (!this.restrictedTypes.isEmpty()) {
            document.put("_$RESTRICTED_TYPES", this.getRestrictedTypes());
        }

        return document;
    }

最终的方式如下,getQueryObject() 返回的是一个 map,然后通过 get 方法过滤并判空