日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis 操作

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的redis 操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。