[База данных] Типы данных Redis

Содержание:

  1, автоматическое распределение (Redis)

    - Batch Import

  2, микро-канал автоматической привязки

  3, ORM Джанго не может сделать операцию, как настроить операции с базами данных

    дополнительный

    '

  4, отчет

    ежемесячно показатели продаж компании

  5, привилегии

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

1, автоматическое назначение, можно использовать автоматическое распределение в какое время?

A: маркетинг или операции привлекают новых клиентов, один (партия) время ввода данных, автоматическое назначение.

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 ( «имена») # значение а из внутренней части, байт типа

conn.rpop ( «имена») # значения с внутренней стороны, байт типа

 conn.llen ( "имена") # Просмотр Длина

Redis Импорт 
Conn = redis.Redis (Host = "192.168.20.150", Port = 6379) # =========== для струнного набора, получить набор, значение , полученное ======= ==== 
conn.set ( "K13", "v2") # написаны на ключ к удаленным Redis в 
Валу = conn.get ( "k13") # получить пар ключ-значение 
Print (Val) 
conn.set ( "имена", "СС") 
val2 = conn.get ( "имена") 
Print (val2) # =========== для работы в списке: операции lpush и lpop операции, (слева поставить значение, значение слева) ============= 
VAL4 = conn.lpush ( "names_s" * [ "поглощающие", "Лю"]) 
conn.lpush ( 'names_s', * [ 'число', 'Luning']) # 'Лу Нин', 'число', "Лю", "Ласточка", 
conn.delete ( "names_s") 
V = conn.llen ( " names_s ") 
Print (conn.llen (" names_s ")) 4 #. 
Для ввода в диапазоне (V) 
    . Печать (conn.lpop ( "names_s") декодирования ()) "UTF - 8" . # ========== для списка операций: операции rpush и RPOP операции (справа поставить значения, начиная справа) ======






conn.rpush ( "ABCD", [л, 2,3]) 
conn.rpush ( "ABCD", * [ "А", "В", "С"]) # [л, 2,3], А, б, # * представители распакованы, если не вдаваться в * список 
# conn.delete ( "ABCD") 
V = conn.llen ( "ABCD") 
# Печать (v) # 
для г в диапазоне (V): в 
    печати (. "8 UTF - " conn.rpop ( "ABCD") декодирования ()) # С, В, А, [л, 2,3]
 

 

Применение в проекте

Redis ссылка, перечисляет все данные о Redis, где Откат также помещенные внутри Redis

 

Оказалось, чтобы быть итератор значение, мы можем теперь ссылка Redis, RPOP значение

Когда проблема отката (или не используется), мы можем использовать его, чтобы добавить его в rpush, а затем вынимают

conn.lindex ( "said_id_list_origin", 0) # 0, соответствующий значению индекса View

 

Первый запуск, только данные базы данных

Если значение не доступна в базе данных, то прямое возвращение None

Получение следующего, если принять в 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
рекомендация