redis 操作

?

一、自動分配(redis)

數據放緩存了,為的是速度快

redis是支持持久化的,如果關機了以后,數據已經會放在文件里了

先買上一臺電腦:裝上redis服務器軟件

  - 這個服務器有個工網IP:47.93.4.198

  - 端口:6379

我們的電腦:裝上鏈接redis的模塊

  - pip instaill redis

redis:說白了就是一個服務器的一個軟件,幫助我們在內存里面存數據

?conn.lpush("names":"sss")? ?#往里邊放入值

?conn.lpush("names":*[地方法規","dfgdf"])? #放多個值? ,從左邊添加,相當于insert

?conn.rpush("names":*[地方法規","dfgdf"])? #放多個值? ,從后面添加,相當于append

conn.lpop("names")? ?#一個一個從里面取值 ,bytes類型

conn.rpop("names")? ?#從里面取值 ,bytes類型

?conn.llen("names")? ?#查看長度

import redis
conn = redis.Redis(host="192.168.20.150",port=6379)
#===========對于字符串用set,get設置,得到值===========
conn.set("k13","v2")    #向遠程redis中寫入了一個鍵值對
val = conn.get("k13")   #獲取鍵值對
print(val)
conn.set("names","ss")
val2 = conn.get("names")
print(val2)#===========對于列表的操作:  lpush操作和lpop操作,(從左邊放值,從左邊取值)=============
val4 = conn.lpush("names_s",*["海燕","劉偉"])
conn.lpush('names_s',*['把幾個','魯寧'])  #'魯寧','把幾個',"劉偉","海燕",
conn.delete("names_s")
v = conn.llen("names_s")
print(conn.llen("names_s"))  #4
for i in range(v):print(conn.lpop("names_s").decode("utf-8"))# ==========對于列表的操作:  rpush操作和rpop操作,(從右邊放值,從右邊取值)======
conn.rpush("abcd",[1,2,3])
conn.rpush("abcd",*["a","b","c"])   #[1,2,3],a,b,c   #*代表是解包,如果不加*,放進去的就是一個列表
# conn.delete("abcd")
v = conn.llen("abcd")
# print(v)    #
for i in range(v):print(conn.rpop("abcd").decode("utf-8"))  #c,b,a,[1,2,3]

?

在項目中應用

鏈接redis,吧所有的數據列表放在redis里,吧回滾的也放在redis里面

?

原來是迭代器一個一個取值,現在我們可以用鏈接redis,rpop一個一個取值

當出問題回滾的時候(或者沒有使用),我們可以用rpush吧它再添加進去,然后在取出來

conn.lindex("said_id_list_origin",0)? ?#查看索引0對應的值

?

第一次運行,只有數據庫有數據

如果數據庫中沒有取到值,那么直接返回None

接下來一個一個獲取,如果取到了None,已經取完,再把備用的列表里面的數據在放回去

分配表里面的數據如果更新的話就需要重置了。

?

import redis
from crm import modelsPOOL = redis.ConnectionPool(host='47.93.4.198', port=6379, password='123123')
CONN = redis.Redis(connection_pool=POOL)class AutoSale(object):@classmethoddef fetch_users(cls):# [obj(銷售顧問id,num),obj(銷售顧問id,num),obj(銷售顧問id,num),obj(銷售顧問id,num),]sales = models.SaleRank.objects.all().order_by('-weight')sale_id_list = []count = 0while True:flag = Falsefor row in sales:if count < row.num:sale_id_list.append(row.user_id)flag = Truecount += 1if not flag:breakif sale_id_list:CONN.rpush('sale_id_list', *sale_id_list)  # 自動pop數據CONN.rpush('sale_id_list_origin', *sale_id_list)  # 原來的數據return Truereturn False@classmethoddef get_sale_id(cls):# 查看原來數據是否存在sale_id_origin_count = CONN.llen('sale_id_list_origin')if not sale_id_origin_count:# 去數據庫中獲取數據,并賦值給: 原數據,pop數據status = cls.fetch_users()if not status:return Noneuser_id = CONN.lpop('sale_id_list')if user_id:return user_idreset = CONN.get('sale_id_reset')# 要重置if reset:CONN.delete('sale_id_list_origin')status = cls.fetch_users()if not status:return NoneCONN.delete('sale_id_reset')return CONN.lpop('sale_id_list')else:ct = CONN.llen('sale_id_list_origin')for i in range(ct):v = CONN.lindex('sale_id_list_origin', i)CONN.rpush('sale_id_list', v)return CONN.lpop('sale_id_list')@classmethoddef reset(cls):CONN.set('sale_id_reset',1)@classmethoddef rollback(cls,nid):CONN.lpush('sale_id_list',nid)

?

總結:

  1、什么是redis?

  2、set,get對字符串做操作的,

  3、lpush,rpush,lpop,rpop對于列表做操作的

?    lindex:取索引

   ? llen() :長度

  4、?delete :刪除 :公共的

?擴展:

redis和我們的數據庫一樣,不能每次都鏈接,redis支持連接池

?不推薦

?推薦:

二、批量導入

上傳excel文件,頁面上顯示

上傳文件

1、拿到文件名和文件大小

file_obj.field_name:??文件名,

file_obj.size :文件大小

2、打開文件讀取,以寫的方式存起來

3、安裝xlrd-1.1.0的兩種方式

python setup.py? build

pip instail xlrd

4、打開excle文件做操作。拿到每一個單元格的數據,寫入數據庫

吧第一行排除,可以吧列表轉換成字典,錄入到數據庫

5、作業

  自動獲取ID

  錄入客戶表

 ? ? 錄入分配表

  不在創建臨時xlsx文件,寫在內存里面,

  寫上一個模板文件,讓用戶去下載

6、文件,用戶下載文件的兩種方式

  吧文件寫在靜態文件里面,用a標簽去跳轉。但是這種當是可能不行

  設置響應頭(搜索django如何實現文件下載)

三、微信自動綁定

前提:公司里的每一個人都得關注公眾號,才可以給推送消息

?

=================================

1、自動分配、你在什么時候用到了自動分配?

答:市場部或運營部招來的新的客戶,單條(批量)錄入數據的時候,進行自動分配。

2、那你們是怎么自動分配的呢?

答:基于redis的列表實現的。相當于隊列用了。

====================================

轉載于:https://www.cnblogs.com/TheLand/p/9140697.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451493.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451493.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GroupID和ArtifactID

GroupID是項目組織唯一的標識符&#xff0c;實際對應JAVA的包的結構&#xff0c;是main目錄里java的目錄結構。 ArtifactID就是項目的唯一的標識符&#xff0c;實際對應項目的名稱&#xff0c;就是項目根目錄的名稱。

解決報錯:java.lang.NoSuchMethodException: com.tangyuan.entity.RicherProduct.<init>()

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.報錯;java.lang.NoSuchMethodException: com.tangyuan.entity.RicherProduct.<init>() 2. 我看到網上有人說是因為少寫這一句&…

從另一個角度看大數據量處理利器:布隆過濾器

思路&#xff1a;從簡單的排序談到BitMap算法&#xff0c;再談到數據去重問題&#xff0c;談到大數據量處理利器&#xff1a;布隆過濾器。 情景1&#xff1a;對無重復的數據進行排序 給定數據&#xff08;2&#xff0c;4&#xff0c;1&#xff0c;12&#xff0c;9&#xff0c…

例題練習

1,購物車 功能要求&#xff1a;要求用戶輸入自己擁有總資產&#xff0c;例如&#xff1a;2000顯示商品列表&#xff0c;讓用戶根據序號選擇商品&#xff0c;加入購物車購買&#xff0c;如果商品總額大于總資產&#xff0c;提示賬戶余額不足&#xff0c;否則&#xff0c;購買成功…

A端,B端,C端

A端是開發界面。即管理員所接觸的界面。 B端是商家界面。即瀏覽器界面&#xff0c;依托于web界面。 C端是用戶界面。即app的界面&#xff0c;用戶所接觸最為廣泛的界面。

怎么用js動態 設置select中的某個值為選中項

可以使用javascript和jQuery兩種實現方式 1&#xff1a;使用javascript實現 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org…

java常用簡略語含義

首先這些對象都應用都是一些單詞的簡稱&#xff0c;也是一種應用思想&#xff0c;故其他語言也可以使用&#xff0c;在 Java 里比較常見這些對象吧。下面來一一解釋。 一、POJO&#xff08;Plain Ordinary Java Object&#xff09;。 簡單而言&#xff0c;就是一個簡單的對象&…

并行計算的強大

最近在處理一批數據&#xff0c;10的8次方&#xff0c;處理完畢大概要一個月&#xff0c;并且這個程序占用的CPU只有一個&#xff08;我從來沒有注意到這個問題啊啊啊&#xff09;。 突然師兄提醒我可以把10的8次方條數據拆成10個10的7次方&#xff0c;作為10條任務并行處理&a…

Kubernetes集群(概念篇)

Kubernetes介紹 2013年docker誕生&#xff0c;自此一發不可收拾&#xff0c;它的發展如火如荼&#xff0c;作為一個運維如果不會docker&#xff0c;那真的是落伍了。 而2014年出現的kubernetes&#xff08;又叫k8s&#xff09;更加炙手可熱&#xff0c;我想大部分人僅僅是聽說過…

cannot resolve symbol xxxx問題

1.File->Invalidate Caches/Restart 清除緩存重啟 2.還不行就maven -> Reinport

$(“#addLowForm“).serialize()同時提交其它參數的寫法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 原本寫法&#xff1a; 2. 不光傳表單參數&#xff0c;還有別的參數的寫法&#xff1a;

JAVA自學筆記25

JAVA自學筆記25 1、GUI 1&#xff09;圖形用戶接口&#xff0c;以圖形的方式&#xff0c;來顯示計算機操作的界面&#xff0c;更方便更直觀 2&#xff09;CLI 命令行用戶接口&#xff0c;就是常見的Dos&#xff0c;操作不直觀 3&#xff09; 類Dimension 類內封裝單個對象…

360——新式的流氓

360確實是一種新式的流氓。提供一些很多用戶有用的工具&#xff0c;然后在同時&#xff0c;也提供一些流氓性的工具或者流浪性的推廣方法&#xff0c;比如&#xff1a;對360瀏覽器&#xff0c;360桌面等工具&#xff0c;通過暗示性的廣告語進行推廣&#xff0c;而對于安裝的諸多…

跳板機

現在一定規模互聯網企業&#xff0c;往往都擁有大量服務器&#xff0c;如何安全并高效的管理這些服務器是每個系統運維或安全運維人員必要工作。現在比較常見的方案是搭建堡壘機環境作為線上服務器的入口&#xff0c;所有服務器只能通過堡壘機進行登陸訪問&#xff0c;合格的堡…

Map是不是集合?

Map是不是集合&#xff1f; 一、起因 今天在一個群里跟幾位朋友就“map是不是集合“”爭執了起來&#xff1b;幾位朋友一致認為map不是集合&#xff0c;他們說只有Collection接口下的才是集合&#xff0c;而我認為Collection和Map下的實現類都是集合類。二、發展 于是我開始在…

JAVA自學筆記08

JAVA自學筆記08 1、構造方法私有&#xff0c;外界就不能再創建對象 2、說明書的制作過程 1&#xff09;寫一個工具類&#xff0c;在同一文件夾下&#xff0c;測試類需要用到工具類&#xff0c;系統將自動編譯工具類&#xff1b;工具類的成員方法一般是靜態的&#xff0c;因此…

創業,不能兼職

一直在尋找靠譜的技術人才加入自己的創業團隊。這個靠譜&#xff0c;不僅是技術靠譜&#xff0c;還要有相同的價值觀。價值觀的概念也很廣泛&#xff0c;除了人品&#xff0c;還有對一些涉及到做人做事最本質的一些理念要相同。最起碼的一條是&#xff0c;你是不是真的想好了決…

Java 集合系列07之 Stack詳細介紹(源碼解析)和使用示例

轉載 http://www.cnblogs.com/skywang12345/p/3308852.html轉載于:https://www.cnblogs.com/lizhouwei/p/9162251.html

@Controller和@RestController的區別

RestController注解相當于ResponseBody &#xff0b; Controller合在一起的作用。 1)如果只是使用RestController注解Controller&#xff0c;則Controller中的方法無法返回jsp頁面&#xff0c;配置的視圖解析器InternalResourceViewResolver不起作用&#xff0c;返回的內容就是…

spring AOP解說

1.aop切面編程就是在常規的執行java類中方法前或執行后加入自定義的方法。 比如你本來每天都去打醬油&#xff0c;去&#xff0c;打醬油&#xff0c;回。 現在我每天在你打醬油路上等著&#xff0c;你去打醬油的時候我打你一頓&#xff0c;回來的時候給你點糖果吃。 你根本不…