Python操作redis和mongoDB的方法


Posted in Python onDecember 19, 2019

一、操作redis

redis是一个key-value存储系统,value的类型包括string(字符串),list(链表),set(集合),zset(有序集合),hash(哈希类型)。为了保证效率,数据都是缓冲在内存中,在处理大规模数据读写的场景下运用比较多。

备注:默认redis有16个数据库,即db0~db15, 一般存取数据如果不指定库的话,默认都是存在db0中。

resid提供2种连接方式:直接连接、连接池连接

1、直接连接示例:

import redis             # pip3 install redis
# 创建redis连接对象
def init_redis():
  redis_config = {
    "host": "172.29.0.17",
    "port": 6379
  }
  global Redis_Conn
  Redis_Conn = redis.Redis(**redis_config)
  # Redis_Conn = redis.Redis(host='172.29.0.17', port=6379, db=1)  # 指定数据库
  
# 插入值,Value为str类型为例
def insert_redis_key_value(key,value):  
  Redis_Conn.set("name","Zhu")
# 获取值,Value为str类型为例
def get_redis_key_value(key):
  global Redis_Conn
  print("redis key value: %s" % Redis_Conn.get(key))

连接池的原理是, 通过预先创建多个连接, 当进行redis操作时, 直接获取已经创建的连接进行操作, 而且操作完成后, 不会释放, 用于后续的其他redis操作,这样就达到了避免频繁的redis连接创建和释放的目的, 从而提高性能。

redis模块采用ConnectionPool来管理对redis server的所有连接。

2、连接池连接示例:

import redis
pool = redis.ConnectionPool(host='172.29.0.17', port=6379,db=1) 
red = redis.Redis(connection_pool=pool) 
red.set('key1', 'value1') 
red.set('key2', 'value2')

二、操作mongoDB

1、mongoDB 是一个非关系型数据库(NoSQL),介于关系数据库和非关系数据库之间的产品。拥有很多优秀特性,例如高性能、高可用、支持丰富的查询语句、无需预定义数据模型和水平可伸缩等。

2、mongoDB是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

3、mongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

4、mongoDB 的适用场景为:数据不是特别重要(例如通知,推送)、数据表结构变化较为频繁、数据量特别大、数据的并发性特别高、数据结构比较特别(例如地图的位置坐标),

这些情况下用 mongoDB , 其他情况就还是用MySQL ,这样组合使用就可以达到最大的效率。

import pymongo            # pip3 install pymongo
# 创建mongo连接对象
def init_mongo():
  global Mongo_Conn
  Mongo_Conn = pymongo.MongoClient(host="172.29.0.14", port=27017)
  admin = Mongo_Conn.admin
  admin.authenticate('root', '')
# 数据操作  
def get_mongo_key_value(token_id):
  db = Mongo_Conn['device_center']             # 创建数据库"device_center",命名为"db"
  col = db['token_info']                  # 创建集合"token_info",命名为"col"
  mydict = {"name": "Zhuyu", "alexa": "160", "sex": "male"}
  col.insert_one(mydict)                  # 插入一条数据
  mylist = [
  {"name": "ating", "alexa": "168", "sex": "male"},
  {"name": "Liang", "alexa": "165", "sex": "female"},
  {"name": "Libai", "alexa": "156", "sex": "female"}
  ]
  col.insert_one(mylist)                    # 插入一组数据
  query1 = col.find_one()                # 查询一条数据
  query2 = col.find({},{"alexa": 1})           # 查询指定字段的数据
  query3 = col.find()                  # 查询集合中的所有数据
  query4 = col.find({"name": "ating"})          # 根据指定条件查询
  myquery1 = { "alexa": "160" }
  newvalues1 = { "$set": { "alexa": "161" } }
  col.update_one(myquery1, newvalues1)           # 修改匹配到的第一条记录
  myquery2 = { "name": { "$regex": "^L" } }
  newvalues2 = { "$set": { "alexa": "123" } }
  col.update_many(myquery2, newvalues2)          # 修改所有匹配到的记录,将查找所有以 L 开头的 name 字段,并将匹配到所有记录的 alexa 字段修改为 123
  query5 = col.find().sort("alexa")           # sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序
  for x in query5 :
    print(x)
  # 结果
  {"name": "Libai", "alexa": "156", "sex": "female"}
  {"name": "Zhuyu", "alexa": "160", "sex": "male"}
  {"name": "Liang", "alexa": "165", "sex": "female"}
  {"name": "ating", "alexa": "168", "sex": "male"}
  query6 = col.find().sort("alexa",-1)          # 降序
  for x in query6:
    print(x)
  # 结果
  {"name": "ating", "alexa": "168", "sex": "male"}
  {"name": "Liang", "alexa": "165", "sex": "female"}
  {"name": "Zhuyu", "alexa": "160", "sex": "male"}
  {"name": "Libai", "alexa": "156", "sex": "female"}
  myquery3 = { "name": "Libai" }             # 删除一条数据
  mycol.delete_one(myquery3)
  myquery4 = { "name": {"$regex": "^L"} }        # 删除多个数据
  x1 = mycol.delete_many(myquery4)
  print(x1.deleted_count, "个文档已删除")        # 2个文档已删除
  x2 = mycol.delete_many({})               # 删除集合中的所有数据
  print(x2.deleted_count, "个文档已删除")        # 4个文档已删除
# 断开mongo连接  
def disconnect_mongo():
  Mongo_Conn.disconnect()

总结

以上所述是小编给大家介绍的Python操作redis和mongoDB的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python利用前序和中序遍历结果重建二叉树的方法
Apr 27 Python
Python中的字符串查找操作方法总结
Jun 27 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
在cmder下安装ipython以及环境的搭建
Oct 19 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
python实现计数排序与桶排序实例代码
Mar 28 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
Django中的session用法详解
Mar 09 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 #Python
实现Python与STM32通信方式
Dec 18 #Python
利用pandas将非数值数据转换成数值的方式
Dec 18 #Python
python 浅谈serial与stm32通信的编码问题
Dec 18 #Python
基于numpy中的expand_dims函数用法
Dec 18 #Python
Python.append()与Python.expand()用法详解
Dec 18 #Python
python getopt模块使用实例解析
Dec 18 #Python
You might like
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
自考生毕业自我鉴定
2013/10/10 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
主题团日活动总结
2014/06/25 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
应届生简历自我评价
2015/03/11 职场文书
医院保洁员管理制度
2015/08/05 职场文书
大学生党课感想
2015/08/11 职场文书
全民创业工作总结
2015/08/13 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
python画条形图的具体代码
2022/04/20 Python