1.redis 根据 key 获取 value
可以用 get key,那么里面的实现原理是什么呢?
(我百度不到啊)
2.redis 的数据结构有 string,hash,set,sort set 等,那么在平时的业务处理中有没有遇到过用其中一种
数据类型不合适,然后用另一种的情况呢,是什么场景呢?为什么要这么换呢?
求大佬们告知下,不胜感激。
1
janxin Apr 1, 2020
1. 搜索关键词“redis 源码 get”
2. 搜索关键词“redis xxx 使用场景” |
2
lhx2008 Apr 1, 2020 via Android
get key 就是一个 hashmap,怎么用就看你有没用过了
|
3
la2la Apr 1, 2020
如果着急面试的话,直接背面试题。如果有时间的话,可以 jd 找一本 redis 书看看
|
4
bottleimp Apr 1, 2020 via iPhone 一般面试碰到这种,你可以说我没看过 redis 代码,但我自己实现的话,会怎么怎么来做,巴拉巴拉,设计大体合理,能讨论下去就行了。
|
5
Hstar Apr 1, 2020
redis 的面试问题,《 redis 设计与实现》看完基本全能答,就算那些不懂的有点深度的问题,也能回答得可圈可点。
|
6
huntcool001 Apr 1, 2020
redis.io 官网上你全部看一遍再说吧
|
7
gen900 Apr 1, 2020
估计面试官想听你说哈希。
|
9
0x666666 Apr 1, 2020
和 hashmap 差不多 主要是通过 hash 算 key
|
10
lyhiving Apr 1, 2020
主要是看你之前应用有没有掉过坑,很多原理并不重要,解决问题的能力才是看中的。
redis 就是一个 KV 数据库,所有的性能都在 key 上面,无法就是 hash 寻址问题。 |
11
optional Apr 1, 2020
不要看什么『压缩列表』的书,和面试官对不上话, 少量数据不用 hash 用 ziplist 是因为遍历的成本不高(甚至更快),而且更节约内存。
|
12
useben Apr 1, 2020
1. redis 就是一个巨大的 kv 存储, 一个巨大的 hashtable, 引出 hash 寻址, hash 算法, hash 碰撞, rehash
2. 业务场景, 没有也要给搞出来. 如抽奖, 一开始 hash, 后来 set, 为了去重. 如排行榜, 一开始 set, 自己搜出来遍历排序, 后来换 zset...其实就是各个数据类型的使用场景切换 |
13
mamahaha Apr 1, 2020
给你面试的人遇到了几个问题但百度不到,所以就以面试的名义把面试者喊来问问,总会有一些人能告诉他某个问题的答案的用于学习印证的,也总会有某个问题的答案不是每个人都知道的。
所以即可以名正言顺地拒绝面试者,又可以不出钱、不卖人情、不跑腿。。。让自己的知识得以增长,真是太划算了。 |
14
goodboy95 Apr 1, 2020
redis 的 list 结构还是一个链表,不过每个节点可能压缩存储了多个数据(也就是所谓的"压缩列表")。
我记得我以前看的是,如果 list 尾节点大小不超过 8KB,新增的数据都会加到尾节点里面压缩存储,超过的话就新增一个节点存储。 不过现在也不敢保证百分百对了,有段时间没看过 redis 实现了。 |
15
liunaijie Apr 1, 2020
借楼,想请教一个 redis aof 持久化的问题: https://www.v2ex.com/t/658102
开启 aof 后,手动使用 BGREWRITEAOF 命令后 aof 文件变成了二进制文件是否正常 |
19
julyclyde Apr 1, 2020
如果这岗位不是去开发 redis 的话,只能说招聘方过于装逼了
|
20
ZehaiZhang Apr 1, 2020
之前有被问过 string 的存储原理,楼主可以带着问题一起读
|
21
picone Apr 1, 2020
redis 集群有个问题,是根据 key 分散到各个节点的,如果使用值较大的类型,如 hashmap,会导致单个节点容量过高,这种情况可以看看能不能改成 string 类型。
|
22
huntcool001 Apr 1, 2020
@picone 官网上的建议是一个大的 hashmap 分成小的.. 而不是改成 string.
|
23
zxc1234 OP @ZehaiZhang 恩
|
24
zxc1234 OP |
25
zjj19950716 Apr 1, 2020 via iPhone redis 的源码是真的好,看起来很爽
|
26
OysterQAQ Apr 3, 2020
1 redis 底层类似 hashmap
2 应该从这些数据结构的操作的时间复杂度下手(根本原因是底层数据结构的实现导致的) 3 ziplist 看一下源代码,看了数据结构就明白在什么情况下 ziplist 会产生性能问题,就会明白在什么时候该用,3.0 还是 3.2 之后 list 实现就是 quicklist 了,ziplist 在 hash set 都有用到,元素较少的时候遍历可能比 hash 还快 |