Skip to content

Commit 8adc031

Browse files
committed
更新了爬虫第3天文档
1 parent b3a8873 commit 8adc031

12 files changed

+191
-4
lines changed

Day36-40/非关系型数据库Redis.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
### Redis安装和配置
88

9-
9+
1010

1111
### Redis的数据类型
1212

Day66-75/03.存储数据.md

+189-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,196 @@
66

77
### 使用NoSQL
88

9-
#### Redis
9+
#### Redis简介
10+
11+
Redis是REmote DIctionary Server的缩写,它是一个用ANSI C编写的高性能的key-value存储系统,与其他的key-value存储系统相比,Redis有以下一些特点(也是优点):
12+
13+
- Redis的读写性能极高,并且有丰富的特性(发布/订阅、事务、通知等)。
14+
- Redis支持数据的持久化(RDB和AOF两种方式),可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
15+
- Redis不仅仅支持简单的key-value类型的数据,同时还提供hash、list、set,zset、hyperloglog、geo等数据类型。
16+
- Redis支持主从复制(实现读写分析)以及哨兵模式(监控master是否宕机并调整配置)。
17+
18+
#### Redis的安装和配置
19+
20+
可以使用Linux系统的包管理工具(如yum)来安装Redis,也可以通过在Redis的[官方网站](https://redis.io/)下载Redis的[源代码](http://download.redis.io/releases/redis-3.2.11.tar.gz)解压缩解归档之后进行构件安装。
21+
22+
```Shell
23+
24+
# wget http://download.redis.io/releases/redis-3.2.11.tar.gz
25+
# gunzip redis-3.2.11.tar.gz
26+
# tar -xvf redis-3.2.11.tar
27+
# cd redis-3.2.11
28+
# make && make install
29+
```
30+
31+
接下来我们将redis-3.2.11目录下的redis.conf配置文件复制到用户主目录下并修改配置文件(如果你对配置文件不是很有把握就不要直接修改而是先复制一份再修改这个副本)。
32+
33+
```Shell
34+
35+
# cd ..
36+
# cp redis-3.2.11/redis.conf redis.conf
37+
# vim redis.conf
38+
```
39+
40+
配置将Redis服务绑定到指定的IP地址和端口。
41+
42+
![](./res/redis-bind.png)
43+
44+
![](./res/redis-port.png)
45+
46+
配置底层有多少个数据库。
47+
48+
![](./res/redis-database.png)
49+
50+
配置Redis的持久化机制 - RDB。
51+
52+
![](./res/redis-save.png)
53+
54+
![](./res/redis-rdb.png)
55+
56+
配置Redis的持久化机制 - AOF。
57+
58+
![](./res/redis-aof.png)
59+
60+
配置访问Redis服务器的验证口令。
61+
62+
![](./res/redis-security.png)
63+
64+
配置Redis的主从复制,通过主从复制可以实现读写分离。
65+
66+
![](./res/redis-replication.png)
67+
68+
配置慢查询日志。
69+
70+
![](./res/redis-slow-log.png)
71+
72+
这样我们就完成了Redis的基本配置,如果对上面的东西感到困惑,可以先系统的了解一下Redis,[《Redis开发与运维》](https://item.jd.com/12121730.html)是一本不错的入门读物,而[《Redis实战》](https://item.jd.com/11791607.html)是不错的进阶读物。
73+
74+
#### Redis的服务器和客户端
75+
76+
接下来启动Redis服务器,可以将服务器放在后台去运行。
77+
78+
```Shell
79+
80+
# redis-server redis.conf &
81+
82+
_.-``__ ''-._
83+
_.-`` `. `_. ''-._ Redis 3.2.11 (00000000/0) 64 bit
84+
.-`` .-```. ```\/ _.,_ ''-._
85+
( ' , .-` | `, ) Running in standalone mode
86+
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
87+
| `-._ `._ / _.-' | PID: 12345
88+
`-._ `-._ `-./ _.-' _.-'
89+
|`-._`-._ `-.__.-' _.-'_.-'|
90+
| `-._`-._ _.-'_.-' | http://redis.io
91+
`-._ `-._`-.__.-'_.-' _.-'
92+
|`-._`-._ `-.__.-' _.-'_.-'|
93+
| `-._`-._ _.-'_.-' |
94+
`-._ `-._`-.__.-'_.-' _.-'
95+
`-._ `-.__.-' _.-'
96+
`-._ _.-'
97+
`-.__.-'
98+
```
99+
100+
接下来,我们尝试用Redis客户端去连接服务器。
101+
102+
```Shell
103+
104+
# redis-cli -h 172.18.61.250 -p 6379
105+
172.18.61.250:6379> auth 1qaz2wsx
106+
OK
107+
172.18.61.250:6379> ping
108+
PONG
109+
172.18.61.250:6379>
110+
```
111+
112+
Redis有着非常丰富的数据类型,也有很多的命令来操作这些数据,具体的内容可以查看[Redis命令参考](http://redisdoc.com/),在这个网站上,除了Redis的命令参考,还有Redis的详细文档,其中包括了通知、事务、主从复制、持久化、哨兵、集群等内容。
113+
114+
```Shell
115+
116+
172.18.61.250:6379> set username admin
117+
OK
118+
172.18.61.250:6379> get username
119+
"admin"
120+
172.18.61.250:6379> hset student1 name hao
121+
(integer) 0
122+
172.18.61.250:6379> hset student1 age 38
123+
(integer) 1
124+
172.18.61.250:6379> hset student1 gender male
125+
(integer) 1
126+
172.18.61.250:6379> hgetall student1
127+
1) "name"
128+
2) "hao"
129+
3) "age"
130+
4) "38"
131+
5) "gender"
132+
6) "male"
133+
172.18.61.250:6379> lpush num 1 2 3 4 5
134+
(integer) 5
135+
172.18.61.250:6379> lrange num 0 -1
136+
1) "5"
137+
2) "4"
138+
3) "3"
139+
4) "2"
140+
5) "1"
141+
172.18.61.250:6379> sadd fruits apple banana orange apple grape grape
142+
(integer) 4
143+
172.18.61.250:6379> scard fruits
144+
(integer) 4
145+
172.18.61.250:6379> smembers fruits
146+
1) "grape"
147+
2) "orange"
148+
3) "banana"
149+
4) "apple"
150+
172.18.61.250:6379> zadd scores 90 zhao 78 qian 66 sun 95 lee
151+
(integer) 4
152+
172.18.61.250:6379> zrange scores 0 -1
153+
1) "sun"
154+
2) "qian"
155+
3) "zhao"
156+
4) "lee"
157+
172.18.61.250:6379> zrevrange scores 0 -1
158+
1) "lee"
159+
2) "zhao"
160+
3) "qian"
161+
4) "sun"
162+
```
163+
164+
#### 在Python程序中使用Redis
165+
166+
可以使用pip安装redis模块。redis模块的核心是名为Redis的类,该类的对象代表一个Redis客户端,通过该客户端可以向Redis服务器发送命令并获取执行的结果。上面我们在Redis客户端中使用的命令基本上就是Redis对象可以接收的消息,所以如果了解了Redis的命令就可以在Python中玩转Redis。
167+
168+
```Shell
169+
170+
$ pip3 install redis
171+
$ python3
172+
```
173+
174+
```Python
175+
176+
>>> import redis
177+
>>> client = redis.Redis(host='1.2.3.4', port=6379, password='1qaz2wsx')
178+
>>> client.set('username', 'admin')
179+
True
180+
>>> client.hset('student', 'name', 'hao')
181+
1
182+
>>> client.hset('student', 'age', 38)
183+
1
184+
>>> client.keys('*')
185+
[b'username', b'student']
186+
>>> client.get('username')
187+
b'admin'
188+
>>> client.hgetall('student')
189+
{b'name': b'hao', b'age': b'38'}
190+
```
191+
192+
#### MongoDB简介
193+
194+
#### MongoDB的安装和配置
195+
196+
#### 使用MongoDB实现CRUD操作
197+
10198

11-
#### Mongo
12199

13200

14201

Day66-75/code/example05.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def get_matched_parts(page_html, pattern_str, pattern_ignore_case=re.I):
4848
return pattern_regex.findall(page_html) if page_html else []
4949

5050

51-
# 开始执行爬虫程序并对指定的数据进行持久化操作
51+
# 开始执行爬虫程序
5252
def start_crawl(seed_url, match_pattern, *, max_depth=-1):
5353
client = redis.Redis(host='120.77.222.217', port=11223, password='1qaz2wsx')
5454
charsets = ('utf-8', 'gbk', 'gb2312')

Day66-75/res/redis-aof.png

340 KB
Loading

Day66-75/res/redis-bind.png

168 KB
Loading

Day66-75/res/redis-database.png

65.5 KB
Loading

Day66-75/res/redis-port.png

134 KB
Loading

Day66-75/res/redis-rdb.png

244 KB
Loading

Day66-75/res/redis-replication.png

352 KB
Loading

Day66-75/res/redis-save.png

292 KB
Loading

Day66-75/res/redis-security.png

198 KB
Loading

Day66-75/res/redis-slow-log.png

346 KB
Loading

0 commit comments

Comments
 (0)