Python爬虫--数据存储 (4)

Redis发布订阅命令

publish # 将信息发送到指定的频道 pubsub # 查看订阅与发布系统状态 subscribe # 订阅给定的一个或多个频道的信息 psubscribe # 订阅一个或多个符合给定模式的频道 unsubscribe # 只退订给定的频道 punsubscribe # 退订所有给定模式的频道

Redis事务命令

exec # 执行所有事务块内的命令 discard # 取消事务,放弃执行事务块内的所有命令 multi # 标记一个事务块的开始 watch # 监视一个(或多个)key,如果在事务执行之前这个(这些)key被其他命令所改动,则事务将被打断 unwatch # 取消watch命令对所有key的监视

Redis脚本命令

eval # 执行Lua脚本 evalsha # 执行Lua脚本 scriptexists # 查看指定的脚本是否已经被在缓存中 scriptflush # 从脚本缓存中移除所有脚本 scriptload # 将脚本script添加到脚本缓存中,但并不立即执行这个脚本 scriptkill # 杀死当前正在运行的Lua脚本

Redis连接命令

bgrewriteaof # 异步执行一个AOF(Append Only File)文件重写操作 bgsave # 在后台异步保存当前数据库的数据到磁盘 client kill # 关闭客户端连接 client list # 获取连接到服务器的客户端连接列表 client getname # 获取连接的名称 client pause # 在指定时间内终止运行来自客户端的命令 client setname # 设置当前连接的名称 cluster slots # 获取集群节点的映射数组 command # 获取详情数组 command count # 获取总数 command getkeys # 获取给定的所有键 time # 返回当前服务器时间 command info # 获取指定描述的数组 config get # 获取指定配置参数的值 config rewrite # 对启动服务器时所指定的.conf配置文件进行改写 config set # 修改配置参数,无须重启 config resetstat # 重置INFO中的某些统计数据 dbsize # 返回当前数据库的key的数量 debug object # 获取key的调试信息 debug segfault # 让服务器崩溃 flushall # 删除所有数据库的所有key flushdb # 删除当前数据库的所有key info # 获取服务器的各种信息和统计数值 , db= lastsave # 返回最近一次成功将数据保存到磁盘上的时间,以UNIX时间戳格式表示 monitor # 实时打印出服务器接收到的命令,调试用 role # 返回主从实例所属的角色 save # 异步保存数据到硬盘 shutdown # 异步保存数据到硬盘,并关闭服务器 slaveof # 将当前服务器转变为指定服务器的从属服务器 showlog # 管理Redis的慢日志 sync # 用于复制功能的内部命令 Python与Redis交互

安装模块

pip install redis

创建连接

\'\'\'Python与Redis交互-创建连接\'\'\' import redis client = redis.StrictRedis(host=\'localhost\', port=6379, db=0) print(client) # 简写 # client = redis.StrictRedis()

说明:
Redis的服务器必须启动才可以连接成功
redis默认无密
redis.StrictRedis用来创建数据库连接对象
参数,
host:连接主机
port:主机端口号
db:要连接的数据库
连接对象不需要手动关闭。
当用Redis和StrictRedis创建连接时,内部实现没有主动创建一个连接,获得的连接是连接池提供的,由连接池管理,所以无法关注连接是否需要主动释放。
连接池有自己关闭连接的接口,一旦调用该接口,所有连接都将被关闭。

增删改查

# Python与Redis交互-增删改查 from redis import * def insert_update(): \'\'\'新增/修改\'\'\' try: # 创建StrictRedis对象,与Redis服务器建立连接 sr = StrictRedis() # 添加键name,值为python # 如果键name不存在,则为新增,否则为修改 result = sr.set(\'name\', \'python\') # 输出响应结果,如果添加成功,则返回True,否则返回False print(result) except Exception as e: print(e) def select(): \'\'\'查询\'\'\' try: # 连接 sr = StrictRedis() # 获取键name的值 result = sr.get(\'name\') # 输出键的值,如果键不存在,则返回None print(result) except Exception as e: print(e) def delete(): \'\'\'删除\'\'\' try: # 连接 sr = StrictRedis() # 删除 result = sr.delete(\'name\') # 输出响应结果,删除成功,返回受影响的键数,否则返回0 print(result) except Exception as e: print(e) if __name__ == \'__main__\': insert_update() select() delete() MongoDB

概念

基于分布式(主从复制,负载均衡)文件存储的NoSQL数据库,由C++语言编写,运行稳定,性能高,旨在为Web应用提供可扩展的高性能数据存储解决方案

特性

模式自由:可以把不同结构的文档存储在同一个数据库中

面向集合存储:适合存储对象及JSON形式的数据

完整的索引支持:对任何属性可索引

复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制,复制的主要目的是提供冗余及自动故障转移

自动分片以支持云级别的伸缩性:自动分片功能 支持水平的数据库集群,可动态添加额外的机器

丰富的查询:支持丰富的查询表达方式,查询指令使用形式的标记,可轩昂查询文档中内嵌的对象及数组

快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划

高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)

优势

更高的写负载

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpjgd.html