当前位置: 首页 > news >正文

golang集成sentry: go-redis

网上没有找到go-redis集成sentry的库, 所以我简单实现了一个

代码: https://github.com/Shujie-Tan/go-redis-sentry
使用方法:

import (redis_sentry "github.com/Shujie-Tan/go-redis-sentry"
)
rdb := redis.NewClient(&redis.Options{Addr:     "127.0.0.1:6379",Password: "",DB:       0,})
hook := redis_sentry.NewHook(rdb)
rdb.AddHook(hook)

示例如下

package mainimport ("context""fmt""log""time"redis_sentry "github.com/Shujie-Tan/go-redis-sentry""github.com/getsentry/sentry-go""github.com/go-redis/redis/v8"
)func main() {err := sentry.Init(sentry.ClientOptions{Debug:              true,Dsn:                "https://a5eac4fa3396cbfac8fb4baa6a9c03a3@o4504291071688704.ingest.sentry.io/4506715873804288",AttachStacktrace:   true,EnableTracing:      true,SampleRate:         1.0,TracesSampleRate:   1.0,ProfilesSampleRate: 1.0,})if err != nil {log.Fatalf("sentry.Init: %s", err)}defer sentry.Flush(2 * time.Second)ctx := context.Background()rdb := initRedis(ctx)testSimpleCmd(rdb)testCmdPipeline(rdb)sentry.CaptureMessage("test")}func testSimpleCmd(rdb *redis.Client) {ctx := context.Background()tx := sentry.StartTransaction(ctx, "test_signle_cmd")defer tx.Finish()ctx = tx.Context()status := rdb.Set(ctx, "a", 1, 2*time.Second)// assert ctxfmt.Printf("status %v\n", status)
}func testCmdPipeline(rdb *redis.Client) {ctx := context.Background()tx := sentry.StartTransaction(ctx, "test_pipeline")defer tx.Finish()ctx = tx.Context()pipe := rdb.Pipeline()incr := pipe.Incr(ctx, "pipeline_counter")pipe.Expire(ctx, "pipeline_counter", time.Hour)cmds, err := pipe.Exec(ctx)if err != nil {panic(err)}fmt.Printf("cmds %v\n", cmds)// The value is available only after Exec is called.fmt.Println(incr.Val())
}func initRedis(ctx context.Context) *redis.Client {rdb := redis.NewClient(&redis.Options{Addr:     "127.0.0.1:6379",Password: "",DB:       0,})pong, err := rdb.Ping(ctx).Result()if err != nil {fmt.Printf("connect to redis error")}fmt.Printf("connect to redis success, pong is %v\n", pong)hook := redis_sentry.NewHook(rdb)rdb.AddHook(hook)return rdb}

效果如下图
在这里插入图片描述

http://www.lryc.cn/news/299080.html

相关文章:

  • 用EXCEL从地址(上海)中提取各区(浦东新区等区)信息
  • 关于在分布式环境中RVN和使用场景的介绍3
  • 计算最小公倍数math.lcm()
  • VUE SEO 几种方案经典面试题
  • Python和VBA批量提取Word中的表格
  • Swift Combine 有序的异步操作 从入门到精通十二
  • 国产航顺HK32F030M: 超声波测距模块串口通信数据接收与处理
  • idea:如何连接数据库
  • JS中ES5和ES6的区别
  • 软考24-上午题-图1
  • 书生·浦语大模型第四课作业
  • 勒索攻击风起云涌,Sodinokibi深度分析
  • 1124. 骑马修栅栏(欧拉路径,模板)
  • C# CAD2016获取数据操作BlockTableRecord、Polyline、DBObject
  • java SSM新闻管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • Linux_线程
  • 【selenium】
  • HX711压力传感器学习一(STM32)
  • 作业2.13
  • ArcGIS学习(七)图片数据矢量化
  • G口大流量服务器选择的关键点有哪些?
  • MongoDB聚合:$unset
  • DS Wannabe之5-AM Project: DS 30day int prep day14
  • 【程序设计竞赛】C++与Java的细节优化
  • Java缓冲流——效率提升深度解析
  • 16 亚稳态原理和解决方案
  • C# OCR识别图片中的文字
  • 使用python-numpy实现一个简单神经网络
  • CSS定位装饰
  • java之jvm详解