Redis系列笔记之 —— 键

如果不知道散列类型的键对应的值有哪些字段,可以使用:

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

  1. “bmw”

  2. “white”

127.0.0.1:6379> HGETALL car

  1. “price”

  2. “50000”

  3. “kind”

  4. “bmw”

  5. “color”

  6. “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。

  1. 集合的交

intersection: 交集

SINTER setA setB setC

  1. 集合的并

union:并集

SUNION setA setB setC

  1. 集合的差

首先差集 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

  1. “xiaohua”

  2. “60”

  3. “xiaoming”

  4. “90”

  5. “zhangsan”

  6. “100”

127.0.0.1:6379> ZREVRANGE student_score 0 -1 WITHSCORES

  1. “zhangsan”

  2. “100”

  3. “xiaoming”

  4. “90”

  5. “xiaohua”

  6. “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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

image

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
12599)]

[外链图片转存中…(img-EIwHI76I-1712663012600)]

[外链图片转存中…(img-P2z3HEiW-1712663012600)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

[外链图片转存中…(img-QyU5nMbj-1712663012601)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值