Redis列表通常用来做异步队列使用,将需要延后处理的任务序列化成字符串塞进Redis的列表,另外一个线程从这个列表中轮询数据进行处理。
右边进左边出:队列,操作如下所示。
右边进右边出:栈,操作如下所示。
3.hash(字典)
Redis中的字典用于保存键值对数据,它类似于Java中的HashMap,内部的实现细节为数组和链表。当发生碰撞时,在碰撞的节点会将元素链接成为元素链表。但是Redis的字典和Java中的HashMap安排还是有区别的,Redis中的字典的key都是string,同时refresh的策略也是不一样的。HashMap的refresh策略是进行全局的reresh,所以当HashMap很大时,refresh的过程将是一个耗时的操作。内部存储结构如下图所示:
常用命令,如下所示:
其他命令如下表所示:
| 命令 | 作用 |
| — | :-: |
| hsetnx | 设置key对应的HashMap中的field的value,如果不存在则先创建 |
| hmset | 批量设置key对应的HashMap中的field的value |
| hmget | 批量获取key对应的HashMap中的field的value |
| hexits | 测试key对应的HashMap中的field是否存在 |
| hincrby | 给key对应的HashMap中的field的value加指定的值 |
| hlen | 返回key对应的HashMap中的field的数量 |
| hdel | 删除key对应的HashMap中的field |
| hkeys | 返回key对应的HashMap中所有的field |
| hvals | 返回key对应的HashMap中所有的field的value |
4.set(集合)
Redis 数据结构中的集合相当于 Java 中的 HashSet,它内部的键值对是无序的唯一的。它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值NULL。与List不同的是set不能出现相同的数据。
常用命令,如下所示:
其他命令如下表所示:
| 命令 | 作用 |
| — | :-: |
| sdiff | 求给定key对应的set与第一个key对应的set的差集 |
| suion | 求给定key对应的set并集 |
| sinter | 求给定key对应的set交集 |
| srem | 删除key对应的set中的一个元素 |
| sdiffstore | 求给定key对应的set与第一个key对应的set的差集,并存储到另一个key对应的set中 |
| sinterstore | 求给定key对应的set交集,并存储到另一个key对应的set中 |
| suionstore | 求给定key对应的set并集,并存储到另一个key对应的set中 |
| somve | 从第一个key对应的set中删除指定元素并添加到第二个key对应的set中 |
| scard | 返回key对应的set的元素个数 |
| sismember | 测试某个元素是否为key对应的set中的元素个数 |
5.zset(有序集合)
zset 可能是 Redis 提供的最为特色的数据结构,它也是在面试中面试官最爱问的数据结构。它类似于 Java 的 SortedSet 和 HashMap 的结合体,一方面它是一个 set,但是相对于无序set来说zset是有有序的,同时保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。它的内部实现用的是一种叫做「跳跃列表」的数据结构。
zadd books 9.0 “think in java”
(integer) 1
zadd books 8.9 “java concurrency”
(integer) 1
zadd books 8.6 “java cookbook”
(integer) 1
zrange books 0 -1 # 按 score 排序列出,参数区间为排名范围
-
“java cookbook”
-
“java concurrency”
-
“think in java”
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?
既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?
架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。
如果你也想成为一名好的架构师,那或许这份Java核心架构笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
中高级开发必知必会:
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
N-1712664396203)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-a24tL71r-1712664396203)]