[データベース] Redisのデータ型

内容:

  図1に示すように、自動割り当て(Redisの)

    - バッチインポート

  図2に示すように、マイクロチャネルの自動結合

  図3は、DjangoのORMは、操作を行うことができない、データベース操作をカスタマイズする方法

    エクストラ

    "

  4、レポート

    同社の月次販売実績

  5、特権

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

1、自動割り当ては、あなたはどのような時に自動割り当てを使うのか?

:マーケティングやオペレーションは、単一の(バッチ)データ入力時、自動割り当てを新規顧客を引き付けました。

2、それはあなたがそれを自動的に割り当てる方法ですか?

A:実装され、リストのRedisに基づいて。これは、キューに対応します。

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

自動計量(Redisの)

高速化するために、データ・キャッシュを置きます

データがファイルに既にあるの後に配置されますシャットダウンした場合のRedisは、永続的なサポート

Redisのサーバーソフトウェアのインストール:コンピュータを購入するには

  - サーバが動作中のネットワークのIPを持っている:47.93.4.198

  - ポート:6379

当社のコンピュータ:モジュールのリンクRedisのインストール

  - ピップinstaillのRedis

Redisの:白はソフトウェアサーバであることを、私たちは内部のメモリにデータを保存することができます

 conn.lpush( "名前": "SSS")#王Libianは値を入れます

 conn.lpush(「名前」:* [現地の法律や規制「」dfgdf「])#を挿入するのと同等、左から追加されたより多くの価値を置きます

 conn.rpush(「名前」:* [現地の法律や規制「」dfgdf「])#を追加する同等の、背後から追加されたより多くの価値を置きます

conn.lpop(「名前」)#内部から値A、バイトタイプ

conn.rpop(「名前」)の内側から#値、バイトタイプ

 conn.llen( "名前")#ビューの長さ

Redisのインポート
コネティカット= redis.Redis(ホスト= "192.168.20.150"、ポート= 6379)#===========文字列のセット、セットされます、得られた値のため======= ==== 
でリモートのRedisの鍵に書かれconn.set( "K13"、 "V2")#
ヴァル= conn.get( "K13") #を取得、キーと値のペア
を印刷(ヴァル)
conn.set ( "名前"、 "SS")
とval2 = conn.get( "名前")
印刷(val2の)リストの操作のための#===========:lpush操作とLPOP操作、(置く左から値は、左から値)============= 
VAL4 = conn.lpush( "names_s" * [ "飲み込む"、 "劉"])
conn.lpush( 'names_s'、 * [ '番号'、 'Luning'])# 'ル・ニング'、 '数'、 "劉"、 "ツバメ"、
conn.delete( "names_s")
conn.llen V =( " names_s ")
を印刷(conn.llen(" names_s」))4#。 
レンジでのIのための(V): 印刷(conn.lpop( "names_s")(デコード)) "UTF-8"を#==========オペレーションリストのため:rpush操作そして======(右至るまで、値を入れて右から)の操作をRPOP






conn.rpush( "ABCD"、[1,2,3])
conn.rpush( "ABCD"、* [ "A"、 "B"、 "C"])#[1,2,3]、A、 B *に入るのリストでない場合は、C#の*代表は、アンパックされ
#1 conn.delete( "ABCD")
、V = conn.llen( "ABCD") 印刷(V)#は
レンジでのiについて(V):
    印刷(conn.rpop( "ABCD")をデコード( "UTF-8"))#のC、B、A、[1,2,3]
 

 

プロジェクト内のアプリケーション

Redisのリンクが、それはまた、Redisの内部に配置されたにロールバックRedisの上のすべてのデータを一覧表示します

 

値イテレータであることが判明し、我々は今の値をRPOP、Redisのをリンクすることができます

問題のロールバック(またはではないが、使用される)とき、私たちはrpushにそれを追加するためにそれを使用して、取り出しすることができます

インデックス表示の値に対応するconn.lindex(「said_id_list_origin」、0)#0

 

最初の実行、唯一のデータベースのデータ

値は、データベースにアクセス可能でない場合は、直接リターンなし

Noneに取られた場合、次のいずれかを取得、あなたが戻って放電内部の完全な、スタンバイリストデータを取らなければなりません

更新が必要な場合は、リセット内部アロケーションテーブルデータ。

 

 
import redis
from crm import models

POOL = redis.ConnectionPool(host='47.93.4.198', port=6379, password='123123')
CONN = redis.Redis(connection_pool=POOL)

class AutoSale(object):

    @classmethod
    def 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 = 0
        while True:
            flag = False
            for row in sales:
                if count < row.num:
                    sale_id_list.append(row.user_id)
                    flag = True
            count += 1
            if not flag:
                break

        if sale_id_list:
            CONN.rpush('sale_id_list', *sale_id_list)  # 自动pop数据
            CONN.rpush('sale_id_list_origin', *sale_id_list)  # 原来的数据
            return True
        return False

    @classmethod
    def 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 None

        user_id = CONN.lpop('sale_id_list')
        if user_id:
            return user_id

        reset = CONN.get('sale_id_reset')
        # 要重置
        if reset:
            CONN.delete('sale_id_list_origin')
            status = cls.fetch_users()
            if not status:
                return None
            CONN.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')


    @classmethod
    def reset(cls):
        CONN.set('sale_id_reset',1)

    @classmethod
    def 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如何实现文件下载)

三、微信自动绑定

前提:公司里的每一个人都得关注公众号,才可以给推送消息

おすすめ

転載: www.cnblogs.com/xqjoker/p/11127649.html