go-redis-memory-analysis

Go 实现的 Redis 内存分析工具
授权协议 MIT
开发语言 Google Go
所属分类 开发工具、 性能测试和优化
软件类型 开源软件
地区 国产
投 递 者 羊舌涵涤
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

这是一个 Go 语言实现的 Redis 内存分析工具:用于找出占用内存较多的 Key,将结果导出至 csv 文件。

示例代码

通过直接连接到 redis 来分析 key

analysis := NewAnalysis()
//Open redis: 127.0.0.1:6379 without password
err := analysis.Open("127.0.0.1", 6379, "")
defer analysis.Close()
if err != nil {
    fmt.Println("something wrong:", err)
    return
}
//Scan the keys which can be split by '#' ':'
//Special pattern characters need to escape by '\'
analysis.Start([]string{"#", ":"})
//Find the csv file in default target folder: ./reports
//CSV file name format: redis-analysis-{host:port}-{db}.csv
//The keys order by count desc
err = analysis.SaveReports("./reports")
if err == nil {
    fmt.Println("done")
} else {
    fmt.Println("error:", err)
}

通过 redis RDB 文件分析 key,但无法计算出 key 的大小

analysis := NewAnalysis()
//Open redis rdb file: ./6379_dump.rdb
err := analysis.OpenRDB("./6379_dump.rdb")
defer analysis.CloseRDB()
if err != nil {
    fmt.Println("something wrong:", err)
    return
}
//Scan the keys which can be split by '#' ':'
//Special pattern characters need to escape by '\'
analysis.StartRDB([]string{"#", ":"})
//Find the csv file in default target folder: ./reports
//CSV file name format: redis-analysis-{host:port}-{db}.csv
//The keys order by count desc
err = analysis.SaveReports("./reports")
if err == nil {
    fmt.Println("done")
} else {
    fmt.Println("error:", err)
}

Demo

 

  • 本文翻译自:Memcached vs. Redis? We're using a Ruby web-app with Redis server for caching. 我们正在将带Redis服务器的Ruby Web应用程序用于缓存。 Is there a point to test Memcached instead? 有没有要测试Memcached的地方呢? What will give us

  • If you are reading this article probably you already know it: Redis is an in-memory DB. It's persistent, as it's disk backed, but disk is only used to persist, all the data is taken in the computer RA

  • Yao Yue has worked on Twitter’s Cache team since 2010. She recently gave a really great talk:Scaling Redis at Twitter. It’s about Redis of course, but it's not just about Redis. Yao has worked at Twit

  • Yao Yu has worked on Twitter’s Cache team since 2010. She recently gave a really great talk: Scaling Redis at Twitter. It’s about Redis of course, but it's not just about Redis. Yao has worked at Twit

  • 我是一只可爱的土拨鼠,专注于分享 Go 职场、招聘和求职,解 Gopher 之忧!欢迎关注我。 欢迎大家加入Go招聘交流群,来这里找志同道合的小伙伴!跟土拨鼠们一起交流学习。 JSON 基本上从以下两种角度进行分析 性能方面,如是否使用反射; 是否支持 Unmarshal 到 map 或 struct,未涉及灵活性与扩展性方面,下面报告中只考虑最简单的反序列化,不会提及每个库的灵活性,如提供的一些

  • 原文: http://stackoverflow.com/questions/7888880/what-is-redis-and-what-do-i-use-it-for Redis = Remote Dictionary Service TL;DR: If you can map a use case to Redis and discover you aren't at risk of run

 相关资料
  • 本文向大家介绍基于redis key占用内存量分析,包括了基于redis key占用内存量分析的使用技巧和注意事项,需要的朋友参考一下 Redis的指令看不出哪一类型的key,占用了多少内存,不好分析redis内存开销大的情况下,各应用程序使用缓存的占比。 借助第3方工具进行分析 1、采用2个工具结合 redis-rdb-tools+sqlite 2、sqlite linux服务器都会自带,安装r

  • Go-Redis 是 Redis 数据库的 Google Go 语言的客户端开发包。

  • 背景 在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。 一、使用分布式锁要满足的几个条件: 系统是一个分布式系统(关键是分布式,单机的可以

  • 主要内容:1.上帝视角,2.disctEntry,3.redisObject,4.string的type和3大编码转换,5.Redis底层的数据结构Redis为kv的,而Redis底层又是由c语言写成的,一切皆字典dict,和java的一切皆对象Object Redis的key类型一般为字符串,value为redis类型RedisObject这里的kv称为dictEntry 相当与java中的Map<String, redisObject> bitmap底层为String类型,hyperlogl

  • 本文向大家介绍Laravel框架实现redis集群的方法分析,包括了Laravel框架实现redis集群的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Laravel框架实现redis集群的方法。分享给大家供大家参考,具体如下: 在app/config/database.php中配置如下: 其中cluster选择为true,接下来就可以作集群使用了; 如果把session的dri

  • 本文向大家介绍集成Spring Redis缓存的实现,包括了集成Spring Redis缓存的实现的使用技巧和注意事项,需要的朋友参考一下 这里的缓存主要是用于 Service 层的,所以下面的配置,都是针对 service 模块的。 本文来自内部分享,对特殊信息进行了简单处理。 本文都是在以缓存来讲 Redis 的使用,实际上 Redis 不仅仅用于缓存,本身还是 NoSQL 数据库,大家可以自