Redis之bigkeys
1. 什么是bigkey
按照数据结构分类
字符串类型bigkey 单个value很大,一般超过10KB就认为是bigkey
非字符串类型bigkey 哈希,列表,集合,有序集合,体现在元素个数过多
2. bigkey的危害
内存空间不均匀
超时阻塞
网络拥塞
3. 如何发现bigkey
1. 被动收集
修改redis客户端,当抛出异常时打印出所操作的key,方便排查bigkey问题
2. 主动检测
scan+debug object
结合pipeline机制和从节点完成
3. 建议使用第三方工具 进入gopath安装第三方包:
go get github.com/cupcake/rdb 下载https://github.com/weiyanwei412/rdb_bigkeys 解压rdb_bigkeys-master.zip: unzip rdb_bigkeys-master.zip mv rdb_bigkeys-master rdb_bigkeys cd rdb_bigkeys go mod init bigkeys go mod tidy 无法拉下包 go env -w GOPROXY=https://goproxy.cn go mod verify go mod vendor go get sudo go build ./rdb_bigkeys --bytes 1024 --file /tmp/222.csv --sep 0 --sorted --threads 4 /redis_backup/redis1/master/222/2022-04-07/dump.rdb
4. 如何删除bigkey
1. 删除字符串类型数据耗时

2. 删除非字符串类型数据耗时

3. 删除字符串类型
使用del命令
4. 删除非字符串类型
hscan获取field-value
hdel删除每个field
最后del key操作
5. redis4.0版本支持lazy delete free的模式,删除bigkey不会阻塞redis
一往无前虎山行,拨开云雾见光明

浙公网安备 33010602011771号