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
1) "tom"
2) "20"
3) "3"
127.0.0.1:6379> hmset user gender M class 1
OK
127.0.0.1:6379> hgetall user
1) "name"
2) "tom"
3) "age"
4) "20"
5) "score"
6) "91.5"
7) "grade"
8) "3"
9) "gender"
10) "M"
11) "class"
12) "1"
-
常规的字符串
优点:每个键都可以单独设置过期时间;
缺点:键占用大量内存,信息内聚性差;
-
序列化字符串
优点︰编程简单;
缺点:全量更新(反序列化->更新->序列化);
-
哈希类型
优点:每个键都可以单独更新;
缺点:如果没有控制好编码,会消耗更多内存。
=======================================================================
1.列表是线性有序的数据结构;
2.列表中的元素是可以重复的;
3.—个列表最多能存储232-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) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "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
1) "6"
2) "5"
3) "c"
4) "4"
5) "b"
6) "3"
7) "b"
8) "2"
9) "1"
10) "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
1) "6"
2) "12"
3) "c"
4) "4"
5) "b"
6) "111"
7) "3"
8) "b"
9) "2"
10) "1"
11) "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
1) "aaa"
2) "6"
3) "12"
4) "c"
5) "4"
6) "b"
7) "111"
8) "3"
9) "b"
10) "2"
11) "1"
12) "a"
13) "bbb"
127.0.0.1:6379> ltrim mylist 0 5
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "aaa"
2) "6"
3) "12"
4) "c"
5) "4"
6) "b"
127.0.0.1:6379> rpoplpush mylist newlist
"b"
-
消息队列:生产者通过lpush命令从列表左侧插入元素;消费者通过brpop命令从列表右侧弹出元素;
-
内容列表:有序存储用户的待办事项、收藏文章等内容;
=======================================================================
1.集合中的元素是无序、不可重复的,一个集合最多能存储232-1个元素;
2.集合除了支持对元素的增删改查之外,还支持对多个集合取交集、并集、差集。
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
1) "b"
2) "a"
3) "c"
4) "f"
5) "d"
6) "e"
127.0.0.1:6379> spop myset1 2 # 随机移除2个成员
1) "e"
2) "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
1) "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
1) "d"
2) "e"
127.0.0.1:6379> sunion myset1 myset2
1) "d"
2) "e"
3) "a"
4) "c"
5) "g"
6) "h"
7) "f"
8) "b"
9) "i"
127.0.0.1:6379> sdiff myset1 myset2
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> sinterstore newset1 myset1 myset2
(integer) 2
127.0.0.1:6379> smembers newset1
1) "d"
2) "e"
127.0.0.1:6379> sunionstore newset2 myset1 myset2
(integer) 9
127.0.0.1:6379> smembers newset2
1) "d"
2) "e"
3) "a"
4) "c"
5) "g"
6) "h"
7) "f"
8) "b"
9) "i"
127.0.0.1:6379> sdiffstore newset3 myset1 myset2
(integer) 3
127.0.0.1:6379> smembers newset3
1) "a"
2) "b"
3) "c"
4.1.3 随机数
srandmember key count
随机返回集合中的一个或多个元素
127.0.0.1:6379> srandmember myset1 2 #随机返回两个元素
1) "b"
2) "a"
127.0.0.1:6379> srandmember myset1
"a"
127.0.0.1:6379> srandmember myset1
"d"
-
点赞:统计一篇文章的点赞数量
- 命令:scard like
-
抽奖:在一组数据中随机弹出一个元素以达到抽奖的目的
- 命令:spop user
-
共同关注:通过求两个集合的交集来达到目的
- 命令:sinterstore follow follow1 follow2
=========================================================================
1.有序集合保留了集合元素不能重复的特点;
2.有序集合会给每个元素设置一个分数,并以此作为排序的依据;
3.有序集合不能包含相同的元素,但是不同元素的分数可以相同。
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
1) "tom"
2) "lucy"
3) "lily"
127.0.0.1:6379> zrange scores 0 -1 withscores
1) "tom"
2) "70"
3) "lucy"
4) "80"
5) "lily"
6) "85"
127.0.0.1:6379> zrangebyscore scores 70 85 withscores
1) "tom"
2) "70"
3) "lucy"
4) "80"
5) "lily"
6) "85"
127.0.0.1:6379> zrangebyscore scores -inf 80 withscores #负无穷到80
1) "tom"
2) "70"
3) "lucy"
4) "80"
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
获取有序集合的成员数
zrem key member [member...]
移除有序集合中的一个或多个成员
127.0.0.1:6379> zrevrange scores 0 -1 withscores
1) "jery"
2) "90"
3) "dady"
4) "88"
5) "lily"
6) "85"
7) "lucy"
8) "80"
9) "tom"
10) "70"
127.0.0.1:6379> zrevrangebyscore scores 88 80
1) "dady"
2) "lily"
3) "lucy"
127.0.0.1:6379> zrank scores tom
(integer) 0
127.0.0.1:6379> zscore scores lucy
"80"
127.0.0.1:6379> zincrby scores 5 lucy
"85"
![img](https://img-blog.csdnimg.cn/img_convert/160d12f7b28a27a2dd7ec2a5ad859f5e.png)
![img](https://img-blog.csdnimg.cn/img_convert/9c30848e0912756475aff82e80da3937.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
crement member`有序集合中对指定成员的分数加上增量 increment
`zcard key`获取有序集合的成员数
`zrem key member [member...]`移除有序集合中的一个或多个成员
127.0.0.1:6379> zrevrange scores 0 -1 withscores
-
“jery”
-
“90”
-
“dady”
-
“88”
-
“lily”
-
“85”
-
“lucy”
-
“80”
-
“tom”
-
“70”
127.0.0.1:6379> zrevrangebyscore scores 88 80
-
“dady”
-
“lily”
-
“lucy”
127.0.0.1:6379> zrank scores tom
(integer) 0
127.0.0.1:6379> zscore scores lucy
“80”
127.0.0.1:6379> zincrby scores 5 lucy
“85”
[外链图片转存中…(img-hSrneTJQ-1714261589792)]
[外链图片转存中…(img-POAH6VUx-1714261589792)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!