1. 按照redis模块

  1. # 在cmd中
  2. pip3 install redis

2. 测试代码

插入单挑数据

  1. import redis
  2. conn = redis.Redis(host='10.0.0.10',port=6379)
  3. conn.set('k1','v1') # 向远程redis中写入了一个键值对
  4. val = conn.get('k1') # 获取键值对
  5. print(val)
  6.  
  7. ###############
  8.  
  9. C:\Python3\python.exe E:/day103/redis_test.py
  10. b'v1'

3 批量插入多条数据

  1. conn = redis.Redis(host='10.0.0.10',port=6379)
  2.  
  3. conn.lpush('names_list',*['把几个','鲁宁']) #
  4. v = conn.llen('names_list')
  5. #
  6. for i in range(v):
  7. val = conn.rpop('names_list')
  8. #从右边第一条开始pop数据
  9. # val = conn.lpop('names_list')
  10. # 从左边第一条开始pop数据
  11. print(val.decode('utf-8'))
  12. v = conn.llen('namessssss_list')
  13. print(v)
  14.  
  15. #########
  16. C:\Python3\python.exe E:/day103/redis_test.py
  17. 把几个
  18. 鲁宁
  19. 0

3. 项目实战

给公司销售人员自动分配客户资源:

1. 创建一张新的表,关联到销售人员,配置权限和每天可分配的客户数量;

2 . 通过权重表控制销售人员的分配权重,权重数越大,越优先分配客户;

3. Django代码通过order_by从大到小排序;

4. 然后以销售人员的可分配的数据作为列表出现的个数

  1. 自动分配
  2. 分配表:
  3. 姓名 数量 权重
  4. 番禺 3 7
  5. 富贵 3 6
  6. 短期 2 9
  7. 秦晓 10 1
  8.  
  9. 先获取并排序:
  10. 短期 2
  11. 番禺 3
  12. 富贵 3
  13. 秦晓 10

4. 代码实现

  1. import redis
  2. from crm import models
  3.  
  4. POOL = redis.ConnectionPool(host='10.0.0.10',port=6379)
  5. CONN = redis.Redis(connection_pool=POOL)
  6.  
  7. class AutoSale(object):
  8.  
  9. iter_users = None # iter([1,2,1,2,3,1,...])
  10. reset_status = False
  11.  
  12. @classmethod
  13. def fetch_users(cls):
  14. # [obj(销售顾问id,num),obj(销售顾问id,num),obj(销售顾问id,num),obj(销售顾问id,num),]
  15. ret = models.SaleRank.objects.all().order_by('-weight')
  16. sale_id_list = []
  17.  
  18. for row in ret:
  19. for i in range(row.num):
  20. sale_id_list.append(row.user.id)
  21.  
  22. # cls.users = sale_id_list
  23.  
  24. if sale_id_list:
  25. CONN.rpush('saleid_list',*sale_id_list) # 自动pop数据
  26. CONN.rpush('saleid_list_copy',*sale_id_list) # 原来的数据
  27. return True
  28. return False
  29.  
  30. @classmethod
  31. def get_sale_id(cls):
  32. # 查看原来数据是否存在
  33. sale_id_origin_count = CONN.llen('saleid_list_copy')
  34. if not sale_id_origin_count:
  35. # 去数据库中获取数据,并赋值给: 原数据,pop数据
  36. status = cls.fetch_users()
  37. if not status:
  38. return None
  39. user_id = CONN.lpop('saleid_list')
  40. if user_id:
  41. return user_id
  42. reset = CONN.get('saleid_reset')
  43.  
  44. if reset:
  45. CONN.delete('saleid_list_copy')
  46. status = cls.fetch_users()
  47. if not status:
  48. return None
  49. CONN.delete('saleid_reset')
  50. return CONN.lpop('saleid_list')
  51. else:
  52. ct = CONN.llen('saleid_list_copy')
  53. for i in range(ct):
  54. v = CONN.lindex('saleid_list_copy',i)
  55. CONN.rpush('saleid_list',v)
  56. return CONN.lpop('saleid_list')
  57.  
  58. @classmethod
  59. def reset(cls):
  60. CONN.set('saleid_reset',1)
  61.  
  62. @classmethod
  63. def rollback(cls,nid):
  64. CONN.lpush('saleid_list',nid)

5. 使用

  1. form = SingleModelForm
  2. from xxxxxx import AutoSale
  3. sale_id = AutoSale.get_sale_id()
  4. print(sale_id)
    # 每次请求就会从redis中pop出一条数据,当pop完之后,则AutoSale会自动拷贝saleid_list_copy中的数据到saleid_list中,以便下次pop出数据

  

Django 连接redis方法的更多相关文章

  1. Django连接redis

    CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", &q ...

  2. 如何使用phpredis连接Redis的方法

    本文跟大家介绍使用同一VPC内弹性云服务器ECS上的phpredis连接Redis的方法. 更多的客户端的使用方法,请参考https://redis.io/clients 前提条件 已成功申请Redi ...

  3. Django中redis的使用方法(包括安装、配置、启动)

    一.安装redis: 1.下载: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 2.解压 tar -zxvf redis-3.2. ...

  4. python连接redis、redis字符串操作、hash操作、列表操作、其他通用操作、管道、django中使用redis

    今日内容概要 python连接redis redis字符串操作 redis之hash操作 redis之列表操作 redis其他 通用操作,管道 django中使用redis 内容详细 1.python ...

  5. [技术博客]django连接mysql数据库的方法及部分问题的解决方法

    配置机器介绍 操作系统:Ubuntu 18.04.2 LTS 64位 python版本:Python 3.6.7 Django版本:Django 2.2 MySql版本:5.7.26 数据库选择 我们 ...

  6. redis在.net架构中的应用(1)--使用servicestack连接redis(转)

    引言:作为少有的.net架构下的大型网站,stackoverflow曾发表了一篇文章,介绍了其技术体系,原文链接http://highscalability.com/blog/2011/3/3/sta ...

  7. django+celery+redis环境搭建

    初次尝试搭建django+celery+redis环境,记录下来,慢慢学习~ 1.安装apache 下载httpd-2.0.63.tar.gz,解压tar zxvf httpd-2.0.63.tar. ...

  8. php安装redis扩展连接redis服务器

    扩展包的下载地址:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz tar xf phpredis-2.2.4.tar.gz cd ...

  9. Java连接redis的使用演示样例

    Java连接redis的使用演示样例 Redis是开源的key-value存储工具,redis通经常使用来存储结构化的数据,由于redis的key能够包括String.hash.listset和sor ...

随机推荐

  1. LeetCode 40 Combination Sum II(数组中求和等于target的所有组合)

    题目链接:https://leetcode.com/problems/combination-sum-ii/?tab=Description   给定数组,数组中的元素均为正数,target也是正数. ...

  2. input type="number"时,maxlength不起作用怎么解决

    最近小颖在做公司的angular项目时,发现当input type="number"时,maxlength不起作用,百度了下解决方式,顺便记录下,以便后期查看嘻嘻 <inpu ...

  3. The request associated with the AsyncContext has already completed processing

    Some time ago there was a problem with the servlet3.0, is in servlet in asynchronous processing data ...

  4. 单例模式全面学习(C++版)

    单例模式:用来创建独一无二的,只能够有一个实例的对象. 单例模式的结构是设计模式中最简单的,但是想要完全实现一个线程安全的单例模式还是有很多陷阱的,所以面试的时候属于一个常见的考点~ 单例模式的应用场 ...

  5. 在pycharm中运行nose测试框架

    之前一直在pydev上或命令行上运行nosetests. pycharm上如果运行nosetests,在看了管网后,总结果如下: 全新的pycharm: 填加完成后,打开你要的脚本,运行,即可以以no ...

  6. jmeter函数助手之time函数实操

    在一个接口测试中,需要提交的请求中要带时间,在看完jmeter帮忙文档,正好总结一下 1.需求 在一个XML请求中请求数据要带有时间,如下 "><ID>/lte/pdeta ...

  7. iOS - 视频播放处理全屏/横屏时候遇见的坑

    视频播放想要全屏,使用shouldAutorotate方法禁止主界面,tabbar控制器横屏,导致push进入播放页面不能横屏的问题... - (BOOL)shouldAutorotate { ret ...

  8. tomcat+redis会话共享

    1.基础环境: jdk1. tomcat7 redis nginx 2.添加依赖的jar包到tomcat的lib目录(http://pan.baidu.com/s/1eRAwN0Q) 3.配置tomc ...

  9. CAT偶现NPE的问题

    1.背景 我们公司的调用链系统是基于大众点评的CAT客户端改造的,服务端完全有自己设计开发的.在是用CAT客户端收集dubbo调用信息的时候,我们发现了一个CAT偶现NPE的bug,该bug隐藏的很深 ...

  10. ubuntu16.04下安装Sophus

    git clone https://github.com/strasdat/Sophus.git 下载完成后 cd Sophus git checkout a621ffmkdir buildcd bu ...