基于python实现操作redis及消息队列


Posted in Python onAugust 27, 2020

操作 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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python简单实现计算过期时间的方法
Jun 09 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
python实现txt文件格式转换为arff格式
May 31 Python
Python列表list排列组合操作示例
Dec 18 Python
Python元组知识点总结
Feb 18 Python
让Python脚本暂停执行的几种方法(小结)
Jul 11 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 Python
python基于爬虫+django,打造个性化API接口
Jan 21 Python
如何在Python项目中引入日志
May 31 Python
Python3如何在服务器打印资产信息
Aug 27 #Python
python 8种必备的gui库
Aug 27 #Python
Django静态文件加载失败解决方案
Aug 26 #Python
Python趣味入门教程之循环语句while
Aug 26 #Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 #Python
如何把python项目部署到linux服务器
Aug 26 #Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 #Python
You might like
长波知识介绍
2021/03/01 无线电
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
javascript回到顶部特效
2016/07/30 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python 正则表达式(转义问题)
2014/12/15 Python
Python去除列表中重复元素的方法
2015/03/20 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
详解python tkinter模块安装过程
2020/01/06 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
总经理岗位职责
2013/11/09 职场文书
路政管理专业个人自荐信范文
2013/11/30 职场文书
个人自荐书
2013/12/20 职场文书
大学学习生活感言
2014/01/18 职场文书
怎么写自荐书范文
2014/02/12 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
公司人事管理制度
2015/08/05 职场文书
《风筝》教学反思
2016/02/23 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle
分享几个简单MySQL优化小妙招
2022/03/31 MySQL
利用Python实时获取steam特惠游戏数据
2022/06/25 Python