redis是一个速度极快的NOSQL数据库,数据存在内存中没有磁盘的io它是io多路复用的,由C语言编写,只存K:V形式的数据,有五种数据类型
- String:字符串k:v
- Hash: key: k1:v1 k2:v2…
- List: key: 0 1 2 3…
- Set: key: v1 v2 v3
- zSet:有序的set集合
Tip:看视频学习的笔记
大佬视频地址:https://www.bilibili.com/video/av67317363
安装redis:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10?redirectedfrom=MSDN
打开redis-server.exe启动redis服务在6379端口
打开客户端redis-cli.exe
String:
设置一个string键值对,key为"k1"
127.0.0.1:6379> set k1 hzy
OK
获取
127.0.0.1:6379> get k1 "hzy"
设值
127.0.0.1:6379> set k1 edc
OK
删除
127.0.0.1:6379> del k1
(integer) 1
批量设置
127.0.0.1:6379> mset k1 edc k2 hzy
OK
批量获取
127.0.0.1:6379> mget k1 k2
1) "edc"
2) "hzy"
Hash:
设置一个哈希key为"h1"其中有一个键值对name : liming
127.0.0.1:6379> hset h1 name liming
(integer) 1
取值
127.0.0.1:6379> hget h1
name "liming"
设值
127.0.0.1:6379> hset h1 name li
(integer) 0
批量设置
127.0.0.1:6379> hmset h1 name li age 11
OK
获取所有键值对
127.0.0.1:6379> hgetall h1
1) "name"
2) "li"
3) "age"
4) "11"
删除
127.0.0.1:6379> hdel h1 age
(integer) 1
List:
设置一个list
127.0.0.1:6379> lpush L1 v1
(integer) 1
下标范围取值
127.0.0.1:6379> lrange L1 0 0
1) "v1"
添加元素 lpush(左push)
127.0.0.1:6379> lpush L1 v2 v3
(integer) 3
127.0.0.1:6379> lrange L1 0 2
1) "v3"
2) "v2"
3) "v1"
右push
127.0.0.1:6379> rpush L1 r1 r2 r3
(integer) 6
127.0.0.1:6379> lrange L1 0 5
1) "v3"
2) "v2"
3) "v1"
4) "r1"
5) "r2"
6) "r3"
获取第一个到最后一个元素
127.0.0.1:6379> lrange L1 0 -1
1) "v3"
2) "v2"
3) "v1"
4) "r1"
5) "r2"
6) "r3"
删除 左pop
127.0.0.1:6379> lpop L1 "v3"
删除 右pop
127.0.0.1:6379> rpop L1 "r3"
Set:
设置一个set集合
127.0.0.1:6379> sadd S1 v1
(integer) 1
添加
127.0.0.1:6379> sadd S1 v2
(integer) 1
获取
127.0.0.1:6379> smembers S1
1) "v2"
2) "v1"
添加重复值会失败
127.0.0.1:6379> sadd S1 v2
(integer) 0
订阅和发布功能
打开两个客户端,在其中一个客户端执行订阅,并指定一个主题为"foo"
127.0.0.1:6379> SUBSCRIBE foo
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "foo"
3) (integer) 1
另一个客户端在foo发布一条消息"hahaha"
127.0.0.1:6379> PUBLISH foo hahaha
(integer) 1
可以看到订阅的那个客户端就打印了这样一条消息
127.0.0.1:6379> SUBSCRIBE foo
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "foo"
3) (integer) 1
1) "message"
2) "foo"
3) "hahaha"
这就是redis的发布订阅或者说是消息队列功能
它还支持根据通配符的订阅方式,PSUBSCRIBE
比如订阅 以a开头以b结尾 的主题
127.0.0.1:6379> PSUBSCRIBE a*b
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "a*b"
3) (integer) 1
这时候就可以发布 a一坨东西b 发布一个"haha"
127.0.0.1:6379> PUBLISH afewrupdb haha
(integer) 1
订阅的客户端也可以收到
127.0.0.1:6379> PSUBSCRIBE a*b
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "a*b"
3) (integer) 1
1) "pmessage"
2) "a*b"
3) "afewrupdb"
4) "haha"