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