面试

Redis面试篇

2020-11-18  本文已影响0人  SkylerSkr

前言

准备开一个新的系列,总结一些面试里吹牛皮的地方,不涉及太多细节,但是方方面面的都吹会起来。
这篇文章主要写Redis的方方面面。

基础结构

1.String会预分配空间,就像java的ArrayList,1MB以下每次扩容空间翻倍,1MB以上每次加1MB,最大512MB
2.List在列表元素少时,使用ZipList(双向指针,空间连续性,扫描磁盘更快)
3.Hash对象在扩容的时候,会创建一个新Hash对象,使用渐进式复制,用到哪个字段了再把这个字段的值赋值到新对象
4.Zset使用跳表来做排序

复合结构

1.位图结构,位图最小的单位是bit,每个bit是由0或1构成
2.GeoHash结构(坐标),用Zset实现,Score用经纬度+base32
3.HyperLogLog去重记数,有误差1%,12KB的大小,例如:记录某个页面有多少人访问过(会重复访问)
4.BloomFilter(布隆过滤器),用位数组(二进制)实现,判断某个值一定存在或一定不存在,一个key对应几位,只要几位都是1就是存在

Redis附加功能

1.Pipeline,把多条消息捏在一起发送给Redis服务器,客户端提供的功能
2.scan、hscan、sscan可以对String、Hash、Set进行分页模糊匹配
3.Redis漏油桶机制,Redis Cell
4.分布式锁,setnx(存在就设置返回1,否则返回0),返回1代表坑位被占领了,拿到锁
5.消息队列

Redis吹牛PLUS

1.Redis缓存穿透、雪崩、击穿(这个自己百度啦,都说烂了)
2.Redis有自己的通讯协议,RESP(Redis Serialization Protocol)
3.Redisserver默认有16个数据库,每一个数据库下有两个数组,dict数组保存键的值,expires数组保存键的过期时间
4.Redis多线程,Redis6.0之后支持多线程,Redis主线程是单线程的,但是IO是多线程的,会维护一个指令队列,先到先服务
5.过期键

上一篇 下一篇

猜你喜欢

热点阅读