1. 程式人生 > 資料庫 >Python操作redis和mongoDB的方法

Python操作redis和mongoDB的方法

一、操作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',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","sex": "female"}
  {"name": "Zhuyu","sex": "male"}
  {"name": "Liang","sex": "female"}
  {"name": "ating","sex": "male"}
  query6 = col.find().sort("alexa",-1)          # 降序
  for x in query6:
    print(x)
  # 結果
  {"name": "ating","sex": "male"}
  {"name": "Libai","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的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!