key = person, value = {<name, listen>, <age, 22>}
- 通常气矿下字典类型会使用数据的方式存储相关数据, 但发生哈希冲突的时候才会使用链表的结构存储数据
常用基本命令
-
hset [key] [[field] [value], [field] [value]…] 在hash结构中设置多个键对值
-
hget [key] [field] 返回hash结构中field对应的value
-
hgetall [key] 获取hash结构中所有键对值
-
hvals [key] 获取hash结构中所有的值
-
hdel [key] [field…] 删除hash结构中某些字段
-
hexists [key] [field] 判断hash结构是否存在field字段
注意问题
- 如果key对应的hash结构很大, 那么在使用hkeys 、hgetall 、 hvals 但会的所有数据会对性能造成很大问题, 从而对jvm造成影响
-
链表List是一个使用链表数据结构存储的有序结构, 他的元素插入会按照先后顺序存储到链表结构中, 因此他的插入和删除操作的时间复杂度都是O(1) 但是从查询时间复杂度是O(n)
-
Redis的链表是双向的, 因此既可以从左到右, 也可以冲右到左遍历节点
- 列表主要使用在消息队列和文章列表中
常用命令
-
lpush [name] [v1,v2, v3] 添加数据到链表最左边
-
rpush [name] [v1,v2] 添加元素搭配链表最右边
-
lpop [name] 获取并删除左边第一个元素
-
rpop [name] 获取并删除右边第一个元素
-
lset [name] [index] [v1] 设置下标为index节点的value为v1
注意事项
-
对于大量数据操作的时候, 我们需要考虑插入和删除内容的大小, 不然会导致redis服务器卡顿, 应该分批次操作
-
操作链表的命令是多线程不安全的, 因为当我们操作这些命令的时候, 因为现在Redis服务器都是使用集群来提供稳定性, 那么就有可能其他Redis服务器也在操作同一个链表, 尤其操作很大的链表的时候, 常常会有这些问题
-
为了解决上诉问题,从Redis提供了脸部奥阻塞的命令, 他们在运行的时候, 会给链表加锁, 保证命令的安全性
-
集合Set 和java中的set类似是一个无序的唯一的键值集合 其插入和删除和查询的时间复杂度都是O(1)
-
常使用在比如微博关注和粉丝, 保证人员的不重复, 还有在一些抽奖活动中
常用基本命令
-
sadd [key] [v1, v2, v3] 为键为key的集合添加成员
-
scard [key] 统计key中集合的成员数目
-
smembers [key] 返回集合所有成员
-
spop [key] 随机弹出集合的一个元素
-
有序集合相对于上面说到的集合类型多了一个排序属性, 其主要区别在于每一个元素除了值之外, 他还会多一个分数, 这个分数是一个浮点数, 在java中是双精度表示, 根据分数, redis就可以支持对分数从小到大或者从大到小排序
-
其他特性如和集合类似, 每一个元素都是唯一的, 但是对于不同元素而言, 他的分数可以一样, 当然元素是string类型 和其对于的分数也是基于hash结构存储
-
其插入删除查询的时间复杂度也是O(1)
-
常使用在学生成绩排名和有时间先后顺序一堆数据
结局:总结+分享
看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了Java互联网工程师面试1000题,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱
- Java互联网工程师面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
- 程序员代码面试指南–IT名企算法与数据结构题目最优解
- 其余像设计模式,建议可以看看下面这4份PDF(已经整理)
- 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。
以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!
- 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。
[外链图片转存中…(img-kP5LQUH5-1725827841253)]
以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!