如果不知道散列类型的键对应的值有哪些字段,可以使用:
HGETALL
- 只获取字段名或字段值
HKEYS key
HVALS key
- 只获取字段数量
返回字段的数量。
HLEN key
示例:
127.0.0.1:6379> HSET car price 50000
(integer) 1
127.0.0.1:6379> HMSET car kind bmw color white
OK
127.0.0.1:6379> HGET car price
“50000”
127.0.0.1:6379> HMGET car kind color
-
“bmw”
-
“white”
127.0.0.1:6379> HGETALL car
-
“price”
-
“50000”
-
“kind”
-
“bmw”
-
“color”
-
“white”
- 判断字段是否存在
HEXISTS key field
- 当字段不存在时赋值
(NX表示not exists)
HSETNX key field value
值得一提的是,这个命令也是一个原子操作,不需要担心静态条件。
- 增加数字
HINCRBY key filed increment
(散列类型没有HINCR命令)
- 删除字段
HDEL key field [field1 ……]
返回成功的删除字段的个数。
特点
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表类型的内部使用双向链表,所以在链表两端添加元素的时间复杂度为O(1)。
自然,在链表两端查询元素都是很快的。
操作命令
- 向列表两端添加元素
// 从左边添加(头部)
LPUSH key val [val1 ……]
// 从右边添加(尾部)
RPUSH key val [val1 ……]
- 向列表两端弹出元素
LPOP key
RPOP key
- 获取列表中元素的个数
LLEN
当键不存在时,返回0;
- 获得列表片段
两个注意点,① 索引从0开始, ② 左右都是闭区间。
LRANGE key start end
并且支持负索引,表示从右边开始计数。
如-1表示右边第一个,-2表示右边第二个。
两个情况
① start的位置在stop的后面,返回空列表
② stop的位置大于实际的索引范围,则返回到列表最右边的元素。
- 删除列表中指定的值
REM为remove的缩写
LREM key count value
删除前count个值value的元素。
注意:
① count为0时,删除所有
②count为负,仍然删除前|count|个。
返回的是实际删除的元素的个数。
- 获得/修改制定索引的元素值
LINDEX key index
LSET KEY index value
注意:索引从0开始
- 只保留指定阶段
只保留[start,end]的元素,其余的元素删除。
LTRIM key start end
- 将元素从一个列表转到另一个列表
将第一个列表的元素从右边弹出,从左边添加进第二的列表。
RPOPLPUSH source destination
特点
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表 hash table实现的,所以添加,删除,查找的复杂度基本上是 O(1)的。
集合中最大的成员数为 2 32 − 1 2^{32}- 1 232−1 (4294967295, 每个集合可存储40多亿个成员)。
操作命令
- 增加/删除元素
SADD key member [member …]
SREM key member [member …]
返回是成功添加、删除的元素的个数。
- 获得集合的所有元素
SMEMBERS
- 判断元素是否在集合中
SISMEMBER key member
时间复杂度为O(1)。当值存在时返回1,否则返回0。
- 集合的交
intersection: 交集
SINTER setA setB setC
- 集合的并
union:并集
SUNION setA setB setC
- 集合的差
首先差集 A − B A-B A−B的含义是, { x ∣ x ∈ A a n d x ∉ B } \{x| x\in A \ \ and \ \ x\notin B \} {x∣x∈A and x∈/B}
SDIFF key [key …]
比如: A - B - C,依次计算即可:
多个集合做差集是将前两个集合差集的结果再次作为操作数。
- 获取集合中元素的个数
SCARD key
- 进行集合运算并将结果存储
SINTERSTORE destination key [key …]
SDIFFSTORE destination key [key …]
SUNIONSTORE destination key [key …]
特点
-
Redis的zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
-
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
-
zset的成员是唯一的,但分数(score)却可以重复。
操作命令
- 增加元素
ZADD key score member [score member …]
如:
ZADD student_score 100 zhangsan 90 xiaoming 60 xiaohua
- 获得元素的分数
ZSCORE key number
- 获得排名在某个范围的元素列表
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
ZRANGE命令会按照元素分数的从小到大的顺序返回索引从start到stop之间的所有元素
-
ZARNGE和 LRANGE类似,包括 star, stop;
-
如果需要同时获得元素的分数,加上参数
WITHSCORES
, -
如果需要从大到小排序,用ZREVRANGE
如:
127.0.0.1:6379> ZRANGE student_score 0 -1 WITHSCORES
-
“xiaohua”
-
“60”
-
“xiaoming”
-
“90”
-
“zhangsan”
-
“100”
127.0.0.1:6379> ZREVRANGE student_score 0 -1 WITHSCORES
-
“zhangsan”
-
“100”
-
“xiaoming”
-
“90”
-
“xiaohua”
-
“60”
- 获得指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offser count]
该命令按照元素分数从小到大的顺序返回分数在min到max之间(包含min、max)的元素。
-
如果需要是开区间,在min、max前面加上
(
-
min、max也可以使用无穷大,
+inf、-inf
LIMIT offset count
和SQL中语法类似,offset是偏移量,count是最大允许的个数。
表示获取分数大于80分的从第2个人开始的3个人(不足3个就拉倒)。
ZRANGEBYSCORE student_score (80 +inf WITHSCORES LIMIT 1 3
- 增加某个元素的分数
ZINCRBY key increment member
- 获得集合中元素的数量
ZCARD key
- 获得指定分数范围内的元素个数
ZCOUNT key min max
- 删除元素
返回成功删除的元素个数。
ZREM member [member…]
- 按照排名范围删除元素
ZREMRANGEBYRANK key start stop
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
总结
虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。
架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。
如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
12599)]
[外链图片转存中…(img-EIwHI76I-1712663012600)]
[外链图片转存中…(img-P2z3HEiW-1712663012600)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
总结
虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。
架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。
如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
[外链图片转存中…(img-QyU5nMbj-1712663012601)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!