python淺學【網絡服務中間件】之Redis


一、關於NoSQL:

NoSQL(NoSQL = Not Only SQL ),"不僅僅是SQL"。

相比MySQL等關系型數據庫,NoSQL為非關系型的數據存儲

 

Nosql中比較火的三個數據庫有:Redis、Memchache、MongoDb。

 

為什么使用NoSQL:

為了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。

易擴展性:NoSQL數據庫種類繁多,但是一個共同的特點都是去掉關系數據庫的關系型特性。數據之間無關系,這樣就非常容易擴展。無形之間也在架構的層面上帶來了可擴展的能力。

高性能性:NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。這得益於它的無關系性,數據庫的結構簡單。

 

 

 

二、關於Redis:

 

REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。

 

Redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫,並提供多種語言的API。

 

它通常被稱為數據結構服務器,因為值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。

 

與memcached的對比:

 

 

 

三、redis簡單操作:

以windows下為例:

連接redis:> redis-cli.exe -h host -p port -a password   # 不輸入則為默認連接

 

PS D:\redis> .\redis-cli.exe
127.0
.0.1:6379> ping # 查詢redis服務是否開通 PONG 127.0.0.1:6379> set test hello # 設置key的value OK 127.0.0.1:6379> get test # 查詢key "hello" 127.0.0.1:6379> set test hi # 再次設置key即更改 OK 127.0.0.1:6379> get test "hi" 127.0.0.1:6379> del test # 刪除key (integer) 1 127.0.0.1:6379> get test (nil)

 

四、使用python實現redis發布訂閱功能:

 

 

 

 

 

連接redis:

import redis

sr = StrictRedis(host='localhost',port=6379,db=0)    #不輸入為默認連接

 

發布資訊:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Riy


import redis


client = redis.Redis() 
channels = ["NoSQL", "redis"]


def main():
    print("可以發布到任意一個頻道:")
    for i in channels:
        print(i)

    while True:
        ch = input("輸入頻道:")
        print("輸入發送的信息(q:退出)")
        msg = input(">>")
        if msg == 'q':
            break
        client.publish(ch, msg)

if __name__ == '__main__':
    main()

 

 

訂閱資訊:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Riy


import redis


client = redis.StrictRedis(decode_responses=True)    # 設置編碼,不設置則為字節流
s = client.pubsub()

name = input('選擇監聽頻道:')
s.subscribe(name)

print('開始監聽......\n')

for item in s.listen():
    if item['type'] == 'message':
        print (item)

 

設置 decode_responses = True 收到的中文信息:

 

 

 不設置則收到的 data 為字節流:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM