python如何使用redis的消息队列
亿联云IDC
2022年07月28日 14:40

这篇文章给大家分享的是有关python使用redis消息队列的方法。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 操作 redisimport redisredisPool = redis.ConnectionPool(host='192.168.100.50&#​39;, port=6379, db=8)redis= redis.Redis(connection_pool=redisPool)redis.set('key&#​39;,'values&#​39;)redis.get('com&#​39;)redis.append('keys&#​39;,'values&#​39;)redis.delete('keys&#​39;)print(redis.getset('name&#​39;,'Mike&#​39;)) #赋值name为Mike并返回上一次的valueprint(redis.mget(['name&#​39;,'age&#​39;]))  #输出name键和age键的valueprint(redis.setnx('newname&#​39;,'james&#​39;)) #如果键值不存在,则赋值print(redis.mset({&#​39;name1':&#​39;smith',&#​39;name2':&#​39;curry'})) #​批量赋值print(redis.msetnx({'name3&#​39;:'ltf&#​39;,'name4&#​39;:'lsq&#​39;}))  #不存在才批量赋值print(redis.incr(&#​39;age',1))  #​age对应的value 加1print(redis.decr('age&#​39;,5))  #age对应的value 减5print(redis.append('name4&#​39;,'is a sb&#​39;))  #在name4的value后追加 is a sb 返回字符串长度print(redis.substr('name&#​39;,1,4))  #截取键 nameprint(redis.sadd(&#​39;tags',&#​39;Book',&#​39;Tea',&#​39;Coffee')) #​返回集合长度 3print(redis.srem('tags&#​39;,'Book&#​39;)) #返回删除的数据个数print(redis.spop(&#​39;tags'))  #​随机删除并返回该元素print(redis.smove('tags&#​39;,'tags1&#​39;,'Coffee&#​39;))print(redis.scard('tags&#​39;)) # 获取tags集合的元素个数print(redis.sismember('tags&#​39;, 'Book&#​39;)) # 判断Book是否在tags的集合中print(redis.sinter('tags&#​39;, 'tags1&#​39;)) # 返回集合tags和集合tags1的交集print(redis.sunion('tags&#​39;, 'tags1&#​39;)) # 返回集合tags和集合tags1的并集print(redis.sdiff('tags&#​39;, 'tags1&#​39;)) # 返回集合tags和集合tags1的差集print(redis.smembers('tags&#​39;)) # 返回集合tags的所有元素print(redis.hset(&#​39;price',&#​39;cake',5)) #​ 向键名为price的散列表添加映射关系,返回1 即添加的映射个数print(redis.hsetnx('price&#​39;,'book&#​39;,6)) # 向键名为price的散列表添加映射关系,返回1 即添加的映射个数print(redis.hget('price&#​39;, 'cake&#​39;)) # 获取键名为cake的值 返回5print(redis.hmset('price&#​39;,{'banana&#​39;:2,'apple&#​39;:3,'pear&#​39;:6,'orange&#​39;:7}))  #批量添加映射print(redis.hmget(&#​39;price', [&#​39;apple', &#​39;orange'])) #​ 查询apple和orange的值 输出 b'3&#​39;,b'7&#​39;print(redis.hincrby('price&#​39;,'apple&#​39;,3))  #apple映射加3 为6print(redis.hexists('price&#​39;, 'banana&#​39;)) # 在price中banana是否存在 返回Trueprint(redis.hdel('price&#​39;,'banana&#​39;))  #从price中删除banana 返回1print(redis.hlen('price&#​39;)) # 输出price的长度print(redis.hkeys(&#​39;price')) #​ 输出所有的映射键名print(redis.hvals('price&#​39;)) # 输出所有的映射键值print(redis.hgetall(&#​39;price')) #​ 输出所有的映射键对print(redis.rpush('list&#​39;,1,2,3)) #向键名为list的列表尾部添加1,2,3 返回长度print(redis.lpush('list&#​39;,0))  #向键名为list的列表头部添加0 返回长度print(redis.llen('list&#​39;))  #返回列表的长度print(redis.lrange(&#​39;list',1,3)) #​返回起始索引为1 终止索引为3的索引范围对应的列表print(redis.lindex('list&#​39;,1))  #返回索引为1的元素-valueprint(redis.lset('list&#​39;,1,5)) #将list的列表索引为1的重新赋值为5print(redis.lpop('list&#​39;)) #删除list第一个元素print(redis.rpop(&#​39;list'))  #​删除list最后一个元素print(redis.blpop('list&#​39;))  #删除list第一个元素print(redis.brpop(&#​39;list'))  #​删除最后一个元素print(redis.rpoplpush('list&#​39;,'list1&#​39;))  #删除list的尾元素并将其添加到list1的头部消息队列使用例子import redis import json redisPool = redis.ConnectionPool(host='192.168.100.50&#​39;, 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 = {&#​34;name": f&#​34;test {num}", &#​34;sort":num}    client.rpush(&#​34;test", json.dumps(params_dict))  #​ 查看目标队列数据  result = client.lrange("test&#​34;, 0, 100)  print(result)  import time  time.sleep(10)import redisimport timeimport multiprocessingimport timeimport osimport randomredisPool = redis.ConnectionPool(host='192.168.100.50&#​39;, port=6379, db=8)client = redis.Redis(connection_pool=redisPool)def test1(msg):  t_start = time.time()  print("%s开始执行,进程号为%d&#​34; % (msg, os.getpid()))  time.sleep(random.random() * 2)  t_stop = time.time()  print("%s执行完成,耗时%.2f&#​34; % (msg, t_stop - t_start))while True:  number = client.llen('test&#​39;)  print("现在的队列任务 条数是 &#​34;, number)  p = 100  if number > p-1:    print("-----start-----&#​34;)    a = []    for i in range(p):      result = client.lpop("test&#​34;)      a.append(result)    print("每10条读取一次&#​34;, 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-----&#​34;)    time.sleep(2)  elif number < p and number > 0:    print("-----start-----&#​34;)    a = []    for i in range(number):      a = []      result = client.lpop("test&#​34;)      a.append(result)    print("小于10条的 读取一次 &#​34;, 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-----&#​34;)    time.sleep(2)  elif number == 0:    print("没有任务需要处理&#​34;)    time.sleep(2)  else:    time.sleep(2)关于python使用redis消息队列的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

了解更多相关内容欢迎关注http://www.kd010.com/