2024年Day148(1),2024年最新上岸蚂蚁金服

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

在Redis里面,可以用List玩成:栈,队列,阻塞队列

redis不区分大小写命令

添加

LPUSH

RPUSH

127.0.0.1:6379> LPUSH list one #将一个值或多个值,插入到链表的头部(左)

(integer) 1

127.0.0.1:6379> LPUSH list two

(integer) 2

127.0.0.1:6379> LPUSH list three

(integer) 3

127.0.0.1:6379> LRANGE list 0 -1 #获取list全部的值

  1. “three”

  2. “two”

  3. “one”

127.0.0.1:6379> RPUSH list right

(integer) 4

127.0.0.1:6379> LRANGE list 0 -1 #将一个值或多个值,插入到链表的尾部(右)

  1. “three”

  2. “two”

  3. “one”

  4. “right”

127.0.0.1:6379>

移除

LPOP

RPOP

127.0.0.1:6379> LRANGE list 0 -1

  1. “three”

  2. “two”

  3. “one”

  4. “right”

127.0.0.1:6379> LPOP list #移除list的第一个元素

“three”

127.0.0.1:6379> LRANGE list 0 -1

  1. “two”

  2. “one”

  3. “right”

127.0.0.1:6379> RPOP list #移除list的最后一个元素

“right”

127.0.0.1:6379> LRANGE list 0 -1

  1. “two”

  2. “one”

移除指定的值

Lrem key count value #移除指定的值

count>0从前往后移除,=0移除全部,<从后往前

127.0.0.1:6379> LRANGE list 0 -1

  1. “three”

  2. “three”

  3. “two”

  4. “ont”

127.0.0.1:6379> LREM list 1 ont #移除list中一个ont

(integer) 1

127.0.0.1:6379> LREM list 2 three #移除list中两个three

(integer) 2

127.0.0.1:6379> LRANGE list 0 -1 #查看list全部元素

  1. “two”

根据下标获取值

Lindex #通过下标获取某一个值

127.0.0.1:6379> LRANGE list 0 -1

  1. “two”

  2. “one”

127.0.0.1:6379> LINDEX list 0

“two”

获取list长度

Llen #获取list长度

127.0.0.1:6379> lpush list ont

(integer) 1

127.0.0.1:6379> lpush list two

(integer) 2

127.0.0.1:6379> lpush list three

(integer) 3

127.0.0.1:6379> LRANGE list 0 -1

  1. “three”

  2. “two”

  3. “ont”

127.0.0.1:6379> LLEN list #获取list长度

(integer) 3

裁剪操作

ltrim #裁剪,会修改原来的list

127.0.0.1:6379> keys *

(empty list or set)

127.0.0.1:6379> RPUSH mylist hello

(integer) 1

127.0.0.1:6379> RPUSH mylist hello1 hello2 hello3

(integer) 4

127.0.0.1:6379> LRANGE mylist 0 -1

  1. “hello”

  2. “hello1”

  3. “hello2”

  4. “hello3”

127.0.0.1:6379> ltrim mylist 1 2

OK

127.0.0.1:6379> LRANGE mylist 0 -1

  1. “hello1”

  2. “hello2”

组合命令

rpoplpush #移除列表的最后一个元素,并移动新的列表中

127.0.0.1:6379> rpush mylist hello0 hello1 hello2 hello3 hello4

(integer) 5

127.0.0.1:6379> RPOPLPUSH mylist deslist #移除最后的元素,并最后一个元素添加到deslist中

“hello4”

127.0.0.1:6379> LRANGE mylist 0 -1 #查看mylist列表

  1. “hello0”

  2. “hello1”

  3. “hello2”

  4. “hello3”

127.0.0.1:6379> LRANGE deslist 0 -1 #查看目标列表,确实有mylist删除的值

  1. “hello4”

替换命令

LSET #前提要求列表存在,设置列表下标的值

127.0.0.1:6379> EXISTS list #判断list是否存在

(integer) 0

127.0.0.1:6379> LSET list 0 hello0 #前提要求列表存在

(error) ERR no such key

127.0.0.1:6379> LPUSH list hello #给list添加值

(integer) 1

127.0.0.1:6379> LSET list 0 hello0 #设置list下标0的值为hello0

OK

127.0.0.1:6379> LRANGE list 0 -1 #查看list所有元素

  1. “hello0”

插入命令

linsert 列表 before|after 元素 插入的值 #指定列表前后插入值

127.0.0.1:6379> rpush mylist hello0 hello1 hello2 hello3

(integer) 4

127.0.0.1:6379> LINSERT mylist before hello1 hello0.5 #hello1前插入hello0.5

(integer) 5

127.0.0.1:6379> LRANGE mylist 0 -1 #查看列表

  1. “hello0”

  2. “hello0.5”

  3. “hello1”

  4. “hello2”

  5. “hello3”

127.0.0.1:6379> LINSERT mylist after hello1 hello1.5 #hello1后插入hello1.5

(integer) 6

127.0.0.1:6379> LRANGE mylist 0 -1 #查看列表

  1. “hello0”

  2. “hello0.5”

  3. “hello1”

  4. “hello1.5”

  5. “hello2”

  6. “hello3”

小结

  • list实际上是一个链表,(before) Node (after),left,right都可以插入值

  • 如果key不存在,创建新的链表

  • 如果key存在,新增内容

  • 如果移除了key,所有的value就消失了(空链表)

  • 在两遍插入后者改动值效率最高,如果是中间元素,效率偏低

消息排队,消息队列

  • Lpush Rpop 队列

  • Lpush Lpop 栈

.

四、Set(集合)


set中的值是不能重复的

SISMEMBER #set集合中是否包含指定的元素

SMEMBERS #查看set集合所有的元素

sadd #set集合添加元素

scard #获取set集合中元素个数

127.0.0.1:6379> sadd myset hello #set集合中添加元素

(integer) 1

127.0.0.1:6379> sadd myset hello #set集合中不能添加重复的元素

(integer) 0

127.0.0.1:6379> sadd myset achang

(integer) 1

127.0.0.1:6379> sadd myset loveachang

(integer) 1

127.0.0.1:6379> SMEMBERS myset #查看指定set集合中的所有元素

  1. “loveachang”

  2. “achang”

  3. “hello”

127.0.0.1:6379> SISMEMBER myset achang #查找set集合中是否包含指定的值

(integer) 1

127.0.0.1:6379> SCARD myset #查看set集合中的元素个数

(integer) 3

移除元素

srem #移除set集合元素

127.0.0.1:6379> srem myset hello

(integer) 1

127.0.0.1:6379> SMEMBERS myset

  1. “loveachang”

  2. “achang”

随机筛选元素

SRANDMEMBER #随机筛选set集合中的元素

127.0.0.1:6379> SMEMBERS myset #获取myset中的所有元素

  1. “loveachang”

  2. “achang”

127.0.0.1:6379> SRANDMEMBER myset #随机筛选出myset中的元素

“loveachang”

随机删除元素

spop #随机弹出一个元素

127.0.0.1:6379> SMEMBERS myset

  1. “loveachang”

  2. “achang”

127.0.0.1:6379> spop myset #随机弹出一个元素

“loveachang”

127.0.0.1:6379> SMEMBERS myset

  1. “achang”

127.0.0.1:6379>

移动元素

smove 源set 目标set 移动元素 #移动元素

127.0.0.1:6379> sadd myset hello world achang

(integer) 3

127.0.0.1:6379> sadd myset2 set2

(integer) 1

127.0.0.1:6379> smove myset myset2 achang #将myset中的achang元素移动到myset2中

(integer) 1

127.0.0.1:6379> SMEMBERS myset

  1. “world”

  2. “hello”

127.0.0.1:6379> SMEMBERS myset2

  1. “achang”

  2. “set2”

集合之间的交、并、差集

SDIFF #前面的集合(以前面为主)与后面集合的差集

SINTER #两个集合的交集

SUNION #两个集合的并集

127.0.0.1:6379> sadd key1 a b c

(integer) 3

127.0.0.1:6379> sadd key2 c

(integer) 1

127.0.0.1:6379> sadd key2 d e

(integer) 2

127.0.0.1:6379> SDIFF key1 key2 #key1与key2的差集

  1. “b”

  2. “a”

127.0.0.1:6379> SINTER key1 key2 #key1与key2的交集

  1. “c”

127.0.0.1:6379> SUNION key1 key2 #key1与key2的并集

  1. “b”

  2. “c”

  3. “e”

  4. “a”

  5. “d”

微博,A用户将所有关注的人放在一个set集合中,将它的粉丝也放在一个集合中

共同关注,共同爱好,二度好友、推荐好友(六度分割理论)

.

五、Hash(哈希)


Map集合,key-map,这个value值是一个map集合

hset #设置集合

HGET #获取集合

hmset #批量设置集合

hmget #批量获取集合

hgetall #获取集合所有内容

127.0.0.1:6379> hset myhash field1 achang #设置集合

(integer) 1

127.0.0.1:6379> HGET myhash field1 #获取集合

“achang”

127.0.0.1:6379> hmset myhash field1 hello1 field2 hello2 #批量设置集合

OK

127.0.0.1:6379> hmget myhash field1 field2 #批量获取集合

  1. “hello1”

  2. “hello2”

127.0.0.1:6379> hgetall myhash #获取集合所有内容

  1. “field1”

  2. “hello1”

  3. “field2”

hdel #删除指定hash的key,删除后,其对应的value值也就消失了

hlen #获取指定hash中的字段数量

HEXISTS #判断hash中指定字段是否存在

127.0.0.1:6379> hdel myhash field1 #删除hash指定的key

(integer) 1

127.0.0.1:6379> hgetall myhash

  1. “field2”

  2. “hello2”

127.0.0.1:6379> hmset myhash field1 value1 field2 value2 field3 value3

OK

127.0.0.1:6379> hgetall myhash

  1. “field2”

  2. “value2”

  3. “field1”

  4. “value1”

  5. “field3”

  6. “value3”

127.0.0.1:6379> hlen myhash #获取hash的字段数量

(integer) 3

127.0.0.1:6379> HEXISTS myhash field1 #判断hash中指定字段是否存在

(integer) 1

127.0.0.1:6379> HEXISTS myhash field5 #判断hash中指定字段是否存在

(integer) 0

hkeys #获取hash的所有key值

hvals #获取hash的所有values值

127.0.0.1:6379> hkeys myhash

  1. “field2”

  2. “field1”

  3. “field3”

127.0.0.1:6379> hvals myhash

  1. “value2”

  2. “value1”

  3. “value3”

HINCRBY #

HSETNX #

127.0.0.1:6379> hset myhash field5 5

(integer) 1

127.0.0.1:6379> HINCRBY myhash field5 5 #指定增量

(integer) 10

127.0.0.1:6379> HINCRBY myhash field5 -5 #指定增量

(integer) 5

127.0.0.1:6379> HSETNX myhash field4 world #如果不存在,创建成功

(integer) 1

127.0.0.1:6379> HSETNX myhash field4 apple #如果存在,创建失败

(integer) 0

变更数据,user的name、age;可用于用户信息的保存,经常变动的信息

hash更适合对象保存;String更适合字符串存储;

.

六、Zset(有序集合)


在set的基础上,增加了一个值set k1 v1;zset k1 score v1

myzset #添加值

ZRANGE #获取值

ZREVRANGE

127.0.0.1:6379> zadd myzset 1 one #添加一个值

(integer) 1

127.0.0.1:6379> zadd myzset 2 two 3 three #添加多个值

(integer) 3

127.0.0.1:6379> ZRANGE myzset 0 -1

  1. “one”

  2. “two”

  3. “three”

ZRANGEBYSCORE key 范围小 范围打 withscores #排序显示范围内的

127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf #显示所有用户,从小到大

  1. “achang”

  2. “xiaohong”

  3. “zhangsan”

  4. “xiaoliu”

127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf withscores#显示所有用户,从小到大,并带score

  1. “achang”

  2. “200”

img
img
img

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

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

在set的基础上,增加了一个值set k1 v1;zset k1 score v1

myzset #添加值

ZRANGE #获取值

ZREVRANGE

127.0.0.1:6379> zadd myzset 1 one #添加一个值

(integer) 1

127.0.0.1:6379> zadd myzset 2 two 3 three #添加多个值

(integer) 3

127.0.0.1:6379> ZRANGE myzset 0 -1

  1. “one”

  2. “two”

  3. “three”

ZRANGEBYSCORE key 范围小 范围打 withscores #排序显示范围内的

127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf #显示所有用户,从小到大

  1. “achang”

  2. “xiaohong”

  3. “zhangsan”

  4. “xiaoliu”

127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf withscores#显示所有用户,从小到大,并带score

  1. “achang”

  2. “200”

[外链图片转存中…(img-LfhN5vwv-1715572536807)]
[外链图片转存中…(img-BuTK3WKr-1715572536807)]
[外链图片转存中…(img-I8WVulcA-1715572536807)]

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

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值