既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
127.0.0.1:6379> set name tom
OK
127.0.0.1:6379> get name
"tom"
#当值为字符串时要加双引号,或者之间加逗号隔开,空格代表命令结束
127.0.0.1:6379> set address "bei jing"
OK
127.0.0.1:6379> set hobby basketball,football
OK
127.0.0.1:6379> get address
"bei jing"
127.0.0.1:6379> get hobby
"basketball,football"
127.0.0.1:6379> append hobby "music" #追加字符串
(integer) 24
127.0.0.1:6379> get hobby
"basketball,footballmusic"
127.0.0.1:6379> getrange address 0 2 #截取字符串,下标从0开始
"bei"
127.0.0.1:6379> strlen address
(integer) 8
1.1.2 批量插入和查询
mset key value [key value ...]
同时设置一个或多个 键值对
mget key1 [key2...]
获取一个或多个给定key的值
msetnx key value [key value ...]
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
127.0.0.1:6379> mset a 1 b 2 c 3
OK
127.0.0.1:6379> mget a b c
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> msetnx weight "170" height "100"
(integer) 1
127.0.0.1:6379> mget weight height
1) "170"
2) "100"
1.1.3 设置key值的生存时间
setex key seconds value
设置key-value ,并设置key的生存时间(秒)
psetex key milliseconds value
设置key-value ,并设置key的生存时间(毫秒)
setnx key value
在 key 不存在时设置 key 的值
127.0.0.1:6379> setex id 10 "1001"
OK
127.0.0.1:6379> get id
"1001"
127.0.0.1:6379> get id #10s之后就过期了
(nil)
127.0.0.1:6379> psetex key 10000 abc
OK
127.0.0.1:6379> get key
"abc"
127.0.0.1:6379> get key
(nil)
127.0.0.1:6379> setnx id "1002"
(integer) 1
127.0.0.1:6379> get id
"1002"
1.1.4 key值的自增和自减
incr key key
值自动增一
decr key key
值自动减一
incrby key increment
将 key 所储存的值加上给定的增量值(increment)
incrbyfloat key increment
将 key 所储存的值加上给定的浮点增量值(increment)
decrby key decrementkey
所储存的值减去给定的减量值(decrement)
127.0.0.1:6379> set age "15"
OK
127.0.0.1:6379> get age
"15"
127.0.0.1:6379> incr age
(integer) 16
127.0.0.1:6379> incrby age 5
(integer) 21
127.0.0.1:6379> decr age
(integer) 20
127.0.0.1:6379> decrby age 5
(integer) 15
127.0.0.1:6379> incrbyfloat age 1.5
"16.5"
-
缓存
set user:1 “{id:1,name:tom,…}” ex 300
-
计数:比如计算页面的访问次数或者某个链接的点击次数
set post:1 “0”
incr post:1 …
-
限速:限制一分钟只能设置5次密码
set pwd:1 5 ex 60
decr pwd:1
=======================================================================
Redis的键所对应的值本身又是一个键值对结构
与关系型数据库的区别:
1.关系型数据库是结构化的,若添加新的列,会影响到所有的行,而哈希类型是稀疏的,每个键可以有不同的哈希数据;
2.关系型数据库则可以支持复杂的关系查询
2.1.1 添加、查询、删除、获取长度以及是否存在
hset key field value
将哈希表 key 中的字段 field 的值设为 value
hget key field
获取存储在哈希表中指定字段的值/td>
hdel key field2 [field2]
删除一个或多个哈希表字段
hkeys key
获取所有哈希表中的字段
hvals key
获取哈希表中所有值
hgetall key
获取在哈希表中指定 key 的所有字段和值
hlen key
获取哈希表中字段的数量
hexists key field
查看哈希表 key 中,指定的字段是否存在
127.0.0.1:6379> hset user name tom age "18"
(integer) 2
127.0.0.1:6379> hget user name
"tom"
127.0.0.1:6379> hgetall user
1) "name"
2) "tom"
3) "age"
4) "18"
127.0.0.1:6379> hdel user age
(integer) 1
127.0.0.1:6379> hgetall user
1) "name"
2) "tom"
127.0.0.1:6379> hkeys user
1) "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
1) "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
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
![img](https://img-blog.csdnimg.cn/img_convert/a5e64fd323251000ca1afdcc560bc0c2.png)
![img](https://img-blog.csdnimg.cn/img_convert/9ca849ff46967951e969c013ae3e3043.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
ce 集合移动到 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
[外链图片转存中…(img-ga2WpavO-1714866780944)]
[外链图片转存中…(img-dA8AMPOw-1714866780944)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!