面试被虐 redis,所以来这边问问

2020-04-01 13:36:24 +08:00
 zxc1234

1.redis 根据 key 获取 value

可以用 get key,那么里面的实现原理是什么呢?

(我百度不到啊)

2.redis 的数据结构有 string,hash,set,sort set 等,那么在平时的业务处理中有没有遇到过用其中一种

数据类型不合适,然后用另一种的情况呢,是什么场景呢?为什么要这么换呢?

求大佬们告知下,不胜感激。

6150 次点击
所在节点    程序员
26 条回复
janxin
2020-04-01 13:39:23 +08:00
1. 搜索关键词“redis 源码 get”
2. 搜索关键词“redis xxx 使用场景”
lhx2008
2020-04-01 13:40:56 +08:00
get key 就是一个 hashmap,怎么用就看你有没用过了
la2la
2020-04-01 13:48:39 +08:00
如果着急面试的话,直接背面试题。如果有时间的话,可以 jd 找一本 redis 书看看
bottleimp
2020-04-01 13:49:24 +08:00
一般面试碰到这种,你可以说我没看过 redis 代码,但我自己实现的话,会怎么怎么来做,巴拉巴拉,设计大体合理,能讨论下去就行了。
Hstar
2020-04-01 13:57:58 +08:00
redis 的面试问题,《 redis 设计与实现》看完基本全能答,就算那些不懂的有点深度的问题,也能回答得可圈可点。
huntcool001
2020-04-01 14:56:19 +08:00
redis.io 官网上你全部看一遍再说吧
gen900
2020-04-01 15:03:16 +08:00
估计面试官想听你说哈希。
danhahaha
2020-04-01 15:09:57 +08:00
@gen900 其实更想听到你说希哈,这样就可以面不改色的微笑着看下个人的简历了
0x666666
2020-04-01 16:01:47 +08:00
和 hashmap 差不多 主要是通过 hash 算 key
lyhiving
2020-04-01 16:24:27 +08:00
主要是看你之前应用有没有掉过坑,很多原理并不重要,解决问题的能力才是看中的。
redis 就是一个 KV 数据库,所有的性能都在 key 上面,无法就是 hash 寻址问题。
optional
2020-04-01 16:30:23 +08:00
不要看什么『压缩列表』的书,和面试官对不上话, 少量数据不用 hash 用 ziplist 是因为遍历的成本不高(甚至更快),而且更节约内存。
useben
2020-04-01 16:56:09 +08:00
1. redis 就是一个巨大的 kv 存储, 一个巨大的 hashtable, 引出 hash 寻址, hash 算法, hash 碰撞, rehash
2. 业务场景, 没有也要给搞出来. 如抽奖, 一开始 hash, 后来 set, 为了去重. 如排行榜, 一开始 set, 自己搜出来遍历排序, 后来换 zset...其实就是各个数据类型的使用场景切换
mamahaha
2020-04-01 17:00:34 +08:00
给你面试的人遇到了几个问题但百度不到,所以就以面试的名义把面试者喊来问问,总会有一些人能告诉他某个问题的答案的用于学习印证的,也总会有某个问题的答案不是每个人都知道的。
所以即可以名正言顺地拒绝面试者,又可以不出钱、不卖人情、不跑腿。。。让自己的知识得以增长,真是太划算了。
goodboy95
2020-04-01 17:30:15 +08:00
redis 的 list 结构还是一个链表,不过每个节点可能压缩存储了多个数据(也就是所谓的"压缩列表")。
我记得我以前看的是,如果 list 尾节点大小不超过 8KB,新增的数据都会加到尾节点里面压缩存储,超过的话就新增一个节点存储。
不过现在也不敢保证百分百对了,有段时间没看过 redis 实现了。
liunaijie
2020-04-01 17:40:00 +08:00
借楼,想请教一个 redis aof 持久化的问题: https://www.v2ex.com/t/658102
开启 aof 后,手动使用 BGREWRITEAOF 命令后 aof 文件变成了二进制文件是否正常
zxc1234
2020-04-01 18:07:03 +08:00
@gen900 老哥 6666666666,看了下资料,可能真的是想问这个
zxc1234
2020-04-01 18:09:08 +08:00
@0x666666 你是指第一个问题,是吧?
zxc1234
2020-04-01 18:11:33 +08:00
@useben 你这边 1 和 2 中的 hash 是不一样的吧,1 的 hash 是指散列吧,2 的 hash 是指 value 的类型吧
julyclyde
2020-04-01 18:18:45 +08:00
如果这岗位不是去开发 redis 的话,只能说招聘方过于装逼了
ZehaiZhang
2020-04-01 18:24:03 +08:00
之前有被问过 string 的存储原理,楼主可以带着问题一起读

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/658277

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX