您好,欢迎来到九壹网。
搜索
您的当前位置:首页redis面试题收集

redis面试题收集

来源:九壹网
redis⾯试题收集

Redis⾯试题收集

redis描述

redis是⼀个⾼性能key-value内存数据库,⽀持数据持久化,数据库主从和集群部署,⽀持多种数据类型string ,hash,list,set ,sortset,hyperLoglog,BloomFilter

redis速度为何如此之快

1. redis是基于内存的数据库,整体数据结构类似⼀个⼤的hashmap2. redis是单线程的不需要来回切换线程执⾏

3. redis使⽤io多路复⽤技术 可以并发连接, 底层使⽤epoll⾮阻塞api

缓存雪崩和缓存击穿

⼤量key同事失效 造成redis阻塞

查询不存在的key 后端请求全部查询数据库

redis基本数据类型 优缺点

String 结构 动态字符串 类型转换 数字转换,embstr(减少⼀次内存分配释放) redisObject对象分离 raw格式.通过提前分配冗余内存的⽅式减少内存频繁分配,可以动态扩容

Hash :hashmap的结构 存储对象使⽤内存较少 使⽤场景不多list : 双向链表 结构set: hashmapsortset : 跳跃表

hyperloglog: 去重统计 通过存储数据基数减少 数据存储空间占⽤blomfilter: 使⽤hash值 三次hash 相同可能存在 不存在 就是真的不存在

redis分布式锁

set key value ex time nx

// 锁的超时续期, 重试, 和 释放 锁使⽤lua脚本 ⽐较然后释放redlock设计

redis key 过期策略

定期清除惰性清除

redisObject

保存的信息 : 对象类型 格式 引⽤计数 引⽤计数为0的对象将会被清除Redis 提供 6 种数据淘汰策略:

volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使⽤的数据淘汰volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使⽤的数据淘汰allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰no-enviction(驱逐):禁⽌驱逐数据

redis 数据持久化⽅式

rdb快照 和aof命令存储rdb同步块 ,存在数据丢失aof 同步慢 数据不丢失

⾼版本采⽤aof+rdb的⽅式持久化

redis主从同步

主节点做⼀次bgsave 先同步快照,然后同步aof命令

redis key查询 命令 keys * 容易发⽣redis阻塞 使⽤scan 0 match newes* count 10 命令scan命令查询出的数据会有重复 需要客户端去重处理

redis集群数据同步

使⽤hash槽数据分⽚, 先查询key所在节点信息 使⽤客户端重定向到正确的节点数据rehash的过程也是需要迁移对应的hash槽即可

redis跳跃表

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务