中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python 操作 redis + 消息隊列使用例子

發布時間:2020-07-29 11:29:05 來源:網絡 閱讀:538 作者:295631788 欄目:系統運維

操作 redis


import redis
redisPool = redis.ConnectionPool(host='192.168.100.50', port=6379, db=8)
redis= redis.Redis(connection_pool=redisPool)

redis.set('key','values')
redis.get('com')
redis.append('keys','values')
redis.delete('keys')

print(redis.getset('name','Mike'))  #賦值name為Mike并返回上一次的value
print(redis.mget(['name','age']))   #輸出name鍵和age鍵的value
print(redis.setnx('newname','james'))  #如果鍵值不存在,則賦值
print(redis.mset({'name1':'smith','name2':'curry'}))  #批量賦值
print(redis.msetnx({'name3':'ltf','name4':'lsq'}))    #不存在才批量賦值
print(redis.incr('age',1))   #age對應的value 加1
print(redis.decr('age',5))   #age對應的value 減5
print(redis.append('name4','is a sb'))   #在name4的value后追加 is a sb 返回字符串長度
print(redis.substr('name',1,4))   #截取鍵 name

print(redis.sadd('tags','Book','Tea','Coffee'))  #返回集合長度 3
print(redis.srem('tags','Book'))  #返回刪除的數據個數
print(redis.spop('tags'))   #隨機刪除并返回該元素
print(redis.smove('tags','tags1','Coffee'))
print(redis.scard('tags'))  # 獲取tags集合的元素個數
print(redis.sismember('tags', 'Book'))  # 判斷Book是否在tags的集合中
print(redis.sinter('tags', 'tags1'))  # 返回集合tags和集合tags1的交集
print(redis.sunion('tags', 'tags1'))  # 返回集合tags和集合tags1的并集
print(redis.sdiff('tags', 'tags1'))  # 返回集合tags和集合tags1的差集
print(redis.smembers('tags'))  # 返回集合tags的所有元素

print(redis.hset('price','cake',5))  # 向鍵名為price的散列表添加映射關系,返回1 即添加的映射個數
print(redis.hsetnx('price','book',6)) # 向鍵名為price的散列表添加映射關系,返回1 即添加的映射個數
print(redis.hget('price', 'cake'))  # 獲取鍵名為cake的值 返回5
print(redis.hmset('price',{'banana':2,'apple':3,'pear':6,'orange':7}))   #批量添加映射
print(redis.hmget('price', ['apple', 'orange']))  # 查詢apple和orange的值 輸出 b'3',b'7'
print(redis.hincrby('price','apple',3))   #apple映射加3 為6
print(redis.hexists('price', 'banana'))  # 在price中banana是否存在  返回True
print(redis.hdel('price','banana'))    #從price中刪除banana 返回1
print(redis.hlen('price'))  # 輸出price的長度
print(redis.hkeys('price'))  # 輸出所有的映射鍵名
print(redis.hvals('price'))  # 輸出所有的映射鍵值
print(redis.hgetall('price'))  # 輸出所有的映射鍵對

print(redis.rpush('list',1,2,3)) #向鍵名為list的列表尾部添加1,2,3 返回長度
print(redis.lpush('list',0))   #向鍵名為list的列表頭部添加0 返回長度
print(redis.llen('list'))   #返回列表的長度
print(redis.lrange('list',1,3))  #返回起始索引為1 終止索引為3的索引范圍對應的列表
print(redis.lindex('list',1))   #返回索引為1的元素-value
print(redis.lset('list',1,5))  #將list的列表索引為1的重新賦值為5
print(redis.lpop('list'))  #刪除list第一個元素
print(redis.rpop('list'))   #刪除list最后一個元素
print(redis.blpop('list'))   #刪除list第一個元素
print(redis.brpop('list'))    #刪除最后一個元素
print(redis.rpoplpush('list','list1'))   #刪除list的尾元素并將其添加到list1的頭部

消息隊列使用例子


import redis
import json
redisPool = redis.ConnectionPool(host='192.168.100.50', port=6379, db=8)
client = redis.Redis(connection_pool=redisPool)

# 順序插入五條數據到redis隊列,sort參數是用來驗證彈出的順序
while True:
    num = 0
    for i in range(0, 100):
        num = num + 1
        # params info
        params_dict = {"name": f"test {num}", "sort":num}

        client.rpush("test", json.dumps(params_dict))

    # 查看目標隊列數據
    result = client.lrange("test", 0, 100)
    print(result)
    import time
    time.sleep(10)
import redis
import time
import multiprocessing
import time
import os
import random

redisPool = redis.ConnectionPool(host='192.168.100.50', port=6379, db=8)
client = redis.Redis(connection_pool=redisPool)

def test1(msg):
    t_start = time.time()
    print("%s開始執行,進程號為%d" % (msg, os.getpid()))
    time.sleep(random.random() * 2)
    t_stop = time.time()
    print("%s執行完成,耗時%.2f" % (msg, t_stop - t_start))

while True:
    number = client.llen('test')
    print("現在的隊列任務 條數是 ", number)
    p = 100
    if number > p-1:
        print("-----start-----")
        a = []
        for i in range(p):
            result = client.lpop("test")
            a.append(result)
        print("每10條讀取一次", a)
        po = multiprocessing.Pool(p)
        for i in range(0, p):
            # Pool().apply_async(要調用的目標,(傳遞給目標的參數元祖,))
            # 每次循環將會用空閑出來的子進程去調用目標
            po.apply_async(test1, (a[i],))
        po.close()  # 關閉進程池,關閉后po不再接收新的請求
        po.join()  # 等待po中所有子進程執行完成,必須放在close語句之后
        print("-----end-----")
        time.sleep(2)
    elif number < p and number > 0:
        print("-----start-----")
        a = []
        for i in range(number):
            a = []
            result = client.lpop("test")
            a.append(result)
        print("小于10條的 讀取一次 ", a)
        po = multiprocessing.Pool(number)
        for i in a:
            # Pool().apply_async(要調用的目標,(傳遞給目標的參數元祖,))
            # 每次循環將會用空閑出來的子進程去調用目標
            po.apply_async(test1, (a,))

        po.close()  # 關閉進程池,關閉后po不再接收新的請求
        po.join()  # 等待po中所有子進程執行完成,必須放在close語句之后
        print("-----end-----")
        time.sleep(2)
    elif number == 0:
        print("沒有任務需要處理")
        time.sleep(2)
    else:
        time.sleep(2)
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥宁县| 鄂托克前旗| 宿迁市| 安新县| 渭源县| 新干县| 高碑店市| 安达市| 扎兰屯市| 红安县| 平阴县| 宜都市| 高唐县| 长海县| 伊通| 依兰县| 阆中市| 东宁县| 怀集县| 仲巴县| 阳原县| 崇义县| 上林县| 黄龙县| 贵南县| 长子县| 定州市| 海兴县| 中超| 库尔勒市| 郎溪县| 邢台县| 师宗县| 曲麻莱县| 富宁县| 桐梓县| 勐海县| 邹平县| 江城| 进贤县| 五家渠市|