这是一个 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 数据库,大家可以自