-
“tom”
-
“age”
-
“18”
127.0.0.1:6379> hdel user age
(integer) 1
127.0.0.1:6379> hgetall user
-
“name”
-
“tom”
127.0.0.1:6379> hkeys user
- “name”
127.0.0.1:6379> hlen user
(integer) 1
127.0.0.1:6379> hexists user name
(integer) 1
127.0.0.1:6379> hexists user age
(integer) 0
127.0.0.1:6379> hvals user
- “tom”
### []( )2.1.2 key值的增加
`hincrby key field increment`为哈希表 key 中的指定字段的整数值加上增量 increment
`hincrbyfloat key field increment`为哈希表 key 中的指定字段的浮点数值加上增量 increment
127.0.0.1:6379> hset user score “85”
(integer) 1
127.0.0.1:6379> hincrby user score 5
(integer) 90
127.0.0.1:6379> hincrbyfloat user score 1.5
“91.5”
### []( )2.1.3 批量添加字段
`hsetnx key field value`在字段 field 不存在时,设置哈希表字段的值
`hmget key field1 [field2]`获取所有给定字段的值
`hmset key field1 value1 [field2 value2]`同时将多个域值对设置到哈希表中
127.0.0.1:6379> hsetnx user grade 3
(integer) 1
127.0.0.1:6379> hmget user name age grade
-
“tom”
-
“20”
-
“3”
127.0.0.1:6379> hmset user gender M class 1
OK
127.0.0.1:6379> hgetall user
-
“name”
-
“tom”
-
“age”
-
“20”
-
“score”
-
“91.5”
-
“grade”
-
“3”
-
“gender”
-
“M”
-
“class”
-
“1”
[]( )2.2 三种存储方式的区别
--------------------------------------------------------------------------------
* 常规的字符串
优点:每个键都可以单独设置过期时间;
缺点:键占用大量内存,信息内聚性差;
* 序列化字符串
优点︰编程简单;
缺点:全量更新(反序列化->更新->序列化);
* 哈希类型
优点:每个键都可以单独更新;
缺点:如果没有控制好编码,会消耗更多内存。
[]( )3.列表
=======================================================================
> 1.列表是线性有序的数据结构;
> 2.列表中的元素是可以重复的;
> 3.—个列表最多能存储232-1个元素。
[]( )3.1 常用命令
---------------------------------------------------------------------------
### []( )3.1.1 列表的插入、移除及查询
`lpush key value1 [value2]`将一个或多个值插入到列表头部(左插入)
`rpush key value1 [value2]`在列表尾部添加一个或多个值(右插入)
`rpop key`移除并输出列表最后一个元素
`lpop key`移出并输出列表的第一个元素
`llen key`获取列表长度
`lindex key index` 通过索引获取列表中的元素
`lrange key start stop`获取列表指定范围内的元素
127.0.0.1:6379> lpush list 3 2 1
(integer) 3
127.0.0.1:6379> rpush list 4 5 6
(integer) 6
127.0.0.1:6379> lrange list 0 -1 # 相当于lrange list 0 5 ,-1表示末尾
-
“1”
-
“2”
-
“3”
-
“4”
-
“5”
-
“6”
127.0.0.1:6379> rpop list
“6”
127.0.0.1:6379> lpop list
“1”
127.0.0.1:6379> llen list
(integer) 4
127.0.0.1:6379> lindex list 3
“5”
### []( )3.1.2 对已有列表进行更新、截取元素
`lrem key count value`根据value移除指定数量的值
`lset key index value`通过索引更新元素
`linsert key before|after pivot value`在列表的元素前或者后插入元素
`lpushx key value` 将一个或多个值插入到已存在的列表头部
`rpushx key value`将一个或多个值插入到已存在的列表尾部
`ltrim key start stop`裁剪列表元素,只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
`rpoplpush source destination`移除列表的最后一个元素,并将该元素添加到另一个列表并返回
127.0.0.1:6379> lpush mylist a 1 a 2 b 3 b 4 c 5 a 6
(integer) 12
127.0.0.1:6379> lrem mylist 2 a #删除前两个a
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
-
“6”
-
“5”
-
“c”
-
“4”
-
“b”
-
“3”
-
“b”
-
“2”
-
“1”
-
“a”
127.0.0.1:6379> lset mylist 1 12
OK
127.0.0.1:6379> linsert mylist before 3 111 #在3前面插入111
(integer) 11
127.0.0.1:6379> lrange mylist 0 -1
-
“6”
-
“12”
-
“c”
-
“4”
-
“b”
-
“111”
-
“3”
-
“b”
-
“2”
-
“1”
-
“a”
127.0.0.1:6379> lpushx mylist aaa
(integer) 12
127.0.0.1:6379> rpushx mylist bbb
(integer) 13
127.0.0.1:6379> lrange mylist 0 -1
-
“aaa”
-
“6”
-
“12”
-
“c”
-
“4”
-
“b”
-
“111”
-
“3”
-
“b”
-
“2”
-
“1”
-
“a”
-
“bbb”
127.0.0.1:6379> ltrim mylist 0 5
OK
127.0.0.1:6379> lrange mylist 0 -1
-
“aaa”
-
“6”
-
“12”
-
“c”
-
“4”
-
“b”
127.0.0.1:6379> rpoplpush mylist newlist
“b”
[]( )3.2 使用场景
---------------------------------------------------------------------------
* 消息队列:生产者通过lpush命令从列表左侧插入元素;消费者通过brpop命令从列表右侧弹出元素;
* 内容列表:有序存储用户的待办事项、收藏文章等内容;
[]( )4.集合
=======================================================================
> 1.集合中的元素是无序、不可重复的,一个集合最多能存储232-1个元素;
> 2.集合除了支持对元素的增删改查之外,还支持对多个集合取交集、并集、差集。
[]( )4.1 常用命令
---------------------------------------------------------------------------
### []( )4.1.1 添加、删除
`sadd key member1 member2`向集合中添加一个或多个成员
`scard key`获取集合成员数
`spop key`移除并返回集合中的一个随机元素
`smembers key`返回集合中的所有成员
`sismember key member`判断member是否是集合key的成员
`srem key member1 member2`移除集合中的一个或多个成员
`smove source destination member`将 member 元素从 source 集合移动到 destination 集合
127.0.0.1:6379> sadd myset1 a b c d e f
(integer) 6
127.0.0.1:6379> sadd myset2 d e f g h i
(integer) 6
127.0.0.1:6379> scard myset1
(integer) 6
127.0.0.1:6379> smembers myset1
-
“b”
-
“a”
-
“c”
-
“f”
-
“d”
-
“e”
127.0.0.1:6379> spop myset1 2 # 随机移除2个成员
-
“e”
-
“b”
127.0.0.1:6379> sismember myset1 c #查询集合中是否存在c
(integer) 1
127.0.0.1:6379> srem myset1 f #将集合中的f移除
(integer) 1
127.0.0.1:6379> smove myset1 newset a #将a从集合myset1移动到newset
(integer) 1
127.0.0.1:6379> smembers newset
- “a”
### []( )4.1.2 交集、并集、差集
`sinter key1 key2返`回给定的集合的交集
`sunion key1 key2`返回给定的集合的并集
`sdiff key1 key2`返回给定的集合的差集
`sinterstore destination key1 key2`返回给定的集合的交集并存到destination中
`sunionstore destination key1 key2`返回给定的集合的并集并存到destination中
`sdiffstore destination key1 key2`返回给定的集合的差集并存到destination中
127.0.0.1:6379> sinter myset1 myset2
-
“d”
-
“e”
127.0.0.1:6379> sunion myset1 myset2
-
“d”
-
“e”
-
“a”
-
“c”
-
“g”
-
“h”
-
“f”
-
“b”
-
“i”
127.0.0.1:6379> sdiff myset1 myset2
-
“a”
-
“b”
-
“c”
127.0.0.1:6379> sinterstore newset1 myset1 myset2
(integer) 2
127.0.0.1:6379> smembers newset1
-
“d”
-
“e”
127.0.0.1:6379> sunionstore newset2 myset1 myset2
(integer) 9
127.0.0.1:6379> smembers newset2
-
“d”
-
“e”
-
“a”
-
“c”
-
“g”
-
“h”
-
“f”
-
“b”
-
“i”
127.0.0.1:6379> sdiffstore newset3 myset1 myset2
(integer) 3
127.0.0.1:6379> smembers newset3
-
“a”
-
“b”
-
“c”
### []( )4.1.3 随机数
`srandmember key count`随机返回集合中的一个或多个元素
127.0.0.1:6379> srandmember myset1 2 #随机返回两个元素
-
“b”
-
“a”
127.0.0.1:6379> srandmember myset1
“a”
127.0.0.1:6379> srandmember myset1
“d”
[]( )4.2 使用场景
---------------------------------------------------------------------------
* 点赞:统计一篇文章的点赞数量
* 命令:scard like
* 抽奖:在一组数据中随机弹出一个元素以达到抽奖的目的
* 命令:spop user
* 共同关注:通过求两个集合的交集来达到目的
* 命令:sinterstore follow follow1 follow2
[]( )5.有序集合
=========================================================================
> 1.有序集合保留了集合元素不能重复的特点;
> 2.有序集合会给每个元素设置一个分数,并以此作为排序的依据;
> 3.有序集合不能包含相同的元素,但是不同元素的分数可以相同。
[]( )5.1 常用命令
---------------------------------------------------------------------------
### []( )5.1.1 添加、查询
`zadd key score1 member1 score2 member2`向有序集合添加一个或多个成员,或者更新已存在成员的分数
`zrange key start stop [WITHSCORES]`通过索引区间返回有序集合成指定区间内的成员
`zrangebyscore key min max [WITHSCORES] [LIMIT]`通过分数返回有序集合指定区间内的成员
`zcount key min max`计算在有序集合中指定区间分数的成员数
127.0.0.1:6379> zadd scores 70 tom
(integer) 1
127.0.0.1:6379> zadd scores 80 lucy 85 lily
(integer) 2
127.0.0.1:6379> zrange scores 0 -1
-
“tom”
-
“lucy”
-
“lily”
127.0.0.1:6379> zrange scores 0 -1 withscores
-
“tom”
-
“70”
-
“lucy”
-
“80”
-
“lily”
-
“85”
127.0.0.1:6379> zrangebyscore scores 70 85 withscores
-
“tom”
-
“70”
-
“lucy”
-
“80”
-
“lily”
-
“85”
127.0.0.1:6379> zrangebyscore scores -inf 80 withscores #负无穷到80
-
“tom”
-
“70”
-
“lucy”
-
“80”
127.0.0.1:6379> zrangebyscore scores 80 +inf withscores #80到正无穷
-
“lucy”
-
“80”
-
“lily”
-
“85”
127.0.0.1:6379> zcount scores 70 80
(integer) 2
### []( )5.1.2 排序、成员值的更新
`zrevrange key start stop [WITHSCORES]`返回有序集中指定区间内的成员,由大到小
`zrevrangebyscore key max min [WITHSCORES]`返回有序集中指定分数区间内的成员,分数由大到小
`zrank key member`返回有序集合中指定成员的索引
`zscore key member`返回有序集中,成员的分数值
`zincrby key increment member`有序集合中对指定成员的分数加上增量 increment
`zcard key`获取有序集合的成员数
![img](https://img-blog.csdnimg.cn/img_convert/990410b7df2fa95fed833527f60c588a.png)
![img](https://img-blog.csdnimg.cn/img_convert/16ab8b3509e31bc1b216e6c5d9fab2e1.png)
![img](https://img-blog.csdnimg.cn/img_convert/4eda0ab884e39206623e1d6faa0e96c6.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
127.0.0.1:6379> zrangebyscore scores 80 +inf withscores #80到正无穷
1) "lucy"
2) "80"
3) "lily"
4) "85"
127.0.0.1:6379> zcount scores 70 80
(integer) 2
5.1.2 排序、成员值的更新
zrevrange key start stop [WITHSCORES]
返回有序集中指定区间内的成员,由大到小
zrevrangebyscore key max min [WITHSCORES]
返回有序集中指定分数区间内的成员,分数由大到小
zrank key member
返回有序集合中指定成员的索引
zscore key member
返回有序集中,成员的分数值
zincrby key increment member
有序集合中对指定成员的分数加上增量 increment
zcard key
获取有序集合的成员数
[外链图片转存中…(img-degTI9tH-1714658022027)]
[外链图片转存中…(img-jr57YYTl-1714658022028)]
[外链图片转存中…(img-IPGZMGiO-1714658022028)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新