redis一些面试题
来自 https://www.bilibili.com/video/BV13R4y1v7sP?p=104
1 阿里广告平台,海量数据里查询某一固定前缀的key
海量数据情况下不得使用 keys* 可以使用scan命令
语法

scan命令

特点

使用

2 小红书,你如何生产上限制keys */flushdb/flushall等危险命令以防止误删误用?
通过配置设置禁用这些命令,redis.conf在SECURITY这一项中

这样,keys * 就没用了
flushdb,flushall也没用了
3 美团,MEMORY USAGE命令你用过吗?
用过 该命令是用来查看某个key在内存中占用大小的命令,返回结果以字节为单位
4 BigKey问题,多大算big?你如何发现?如何删除?如何处理?
多大算big?

string类型的key占用内存大于10kb就是大key,hash,list,set,zset的元素个数超过5000算大key
你如何发现?
可以使用redis-cli --bigkeys 在进入redis的时候会遍历,帮我们们发现bigkey,也可以使用memory usage 查看key在内存中占用的大小,单位是字节

如何删除?
string 删除 一般用del 如果过于庞大用 unlink
hash类型数据可以先删除元素,再删除key,其他类型同理,先砍树干,再砍树根




5 BigKey你做过调优吗?惰性释放lazyfree了解过吗?

解决方案:

6 Morekey问题,生产上redis数据库有1000w记录,你如何遍历? key *可以吗?
同第一题

