您好,登錄后才能下訂單哦!
一、操作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的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。