Redis~五大基础数据类型(字符串, 字典, 列表, 集合, 有序集合)的使用

key = person, value = {<name, listen>, <age, 22>}

  • 通常气矿下字典类型会使用数据的方式存储相关数据, 但发生哈希冲突的时候才会使用链表的结构存储数据

在这里插入图片描述

常用基本命令

  1. hset [key] [[field] [value], [field] [value]…] 在hash结构中设置多个键对值

  2. hget [key] [field] 返回hash结构中field对应的value

  3. hgetall [key] 获取hash结构中所有键对值

  4. hvals [key] 获取hash结构中所有的值

  5. hdel [key] [field…] 删除hash结构中某些字段

  6. hexists [key] [field] 判断hash结构是否存在field字段

在这里插入图片描述

注意问题

  • 如果key对应的hash结构很大, 那么在使用hkeys 、hgetall 、 hvals 但会的所有数据会对性能造成很大问题, 从而对jvm造成影响

列表


  • 链表List是一个使用链表数据结构存储的有序结构, 他的元素插入会按照先后顺序存储到链表结构中, 因此他的插入和删除操作的时间复杂度都是O(1) 但是从查询时间复杂度是O(n)

  • Redis的链表是双向的, 因此既可以从左到右, 也可以冲右到左遍历节点

在这里插入图片描述

  • 列表主要使用在消息队列和文章列表中

常用命令

  1. lpush [name] [v1,v2, v3] 添加数据到链表最左边

  2. rpush [name] [v1,v2] 添加元素搭配链表最右边

  3. lpop [name] 获取并删除左边第一个元素

  4. rpop [name] 获取并删除右边第一个元素

  5. lset [name] [index] [v1] 设置下标为index节点的value为v1

在这里插入图片描述

注意事项

  1. 对于大量数据操作的时候, 我们需要考虑插入和删除内容的大小, 不然会导致redis服务器卡顿, 应该分批次操作

  2. 操作链表的命令是多线程不安全的, 因为当我们操作这些命令的时候, 因为现在Redis服务器都是使用集群来提供稳定性, 那么就有可能其他Redis服务器也在操作同一个链表, 尤其操作很大的链表的时候, 常常会有这些问题

  3. 为了解决上诉问题,从Redis提供了脸部奥阻塞的命令, 他们在运行的时候, 会给链表加锁, 保证命令的安全性

集合


  • 集合Set 和java中的set类似是一个无序的唯一的键值集合 其插入和删除和查询的时间复杂度都是O(1)

  • 常使用在比如微博关注和粉丝, 保证人员的不重复, 还有在一些抽奖活动中

常用基本命令

  1. sadd [key] [v1, v2, v3] 为键为key的集合添加成员

  2. scard [key] 统计key中集合的成员数目

  3. smembers [key] 返回集合所有成员

  4. spop [key] 随机弹出集合的一个元素

在这里插入图片描述

有序集合


  • 有序集合相对于上面说到的集合类型多了一个排序属性, 其主要区别在于每一个元素除了值之外, 他还会多一个分数, 这个分数是一个浮点数, 在java中是双精度表示, 根据分数, redis就可以支持对分数从小到大或者从大到小排序

  • 其他特性如和集合类似, 每一个元素都是唯一的, 但是对于不同元素而言, 他的分数可以一样, 当然元素是string类型 和其对于的分数也是基于hash结构存储

  • 其插入删除查询的时间复杂度也是O(1)

  • 常使用在学生成绩排名和有时间先后顺序一堆数据

在这里插入图片描述

结局:总结+分享

看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了Java互联网工程师面试1000题,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱

  • Java互联网工程师面试1000题

image.png

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。

  • 程序员代码面试指南–IT名企算法与数据结构题目最优解

image.png

  • 其余像设计模式,建议可以看看下面这4份PDF(已经整理)

image.png

  • 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。

image.png

以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!

  • 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。

[外链图片转存中…(img-kP5LQUH5-1725827841253)]

以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值