django项目之中对influxdb 数据库的使用(django缓存实现原理):

Influxdb数据库是互联网级监控系统
Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。 它有三大特性:
  时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
  度量(Metrics):对实时大量数据进行计算;
  事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作

Influxdb数据库的使用场景:
  1. 实时采集监控数据,按时间写入Influxdb
  2. 按不同纬度聚合查询监控数据,用于监控展现
  3. 持续查询,定时归集指定时间的数据,用于更大时间范围监控数据的展现
  4,......
from django.conf import settings
from django.core.cache.backends.base import BaseCache
from influxdb import InfluxDBClient


'''BaseCache是自定义缓存的基类 '''
class Cache(BaseCache):
    def __init__(self, server, params):
        super(Cache, self).__init__(params)
        self._client = InfluxDBClient(**settings.INFLUXDB)

    def get(self, sql, default=None, version=None, **kwargs):
        return self._client.query(sql, **kwargs)

    def set(self, json, default=None, version=None, **kwargs):
        return self._client.write_points(json, **kwargs)

    def delete_series(self, measurement=None, tags=None):
        return self._client.delete_series(measurement=measurement, tags=tags)
在项目之中 influx 的使用是与自定义缓存配合使用的:
django 自定义的缓存:
CACHES = {
    'default': {
        'BACKEND': 'antilles.common.cache.Cache',
    }
}
对缓存的使用!
_GPU_SQL = """\
SELECT LAST(value) as value FROM node_gpu_mem_pct;
"""

cache.get(_GPU_SQL)
执行流程:
1,创建缓存的过程是:
1,导入配置文件,根据指定的参数调用指定缓存类的方法,比如 cache.get会调用指定类的get方法
2,缓存使用线程变量 threading.local() ,当前线程的全局变量
3,创建缓存完成存储到 self._caches.caches[alias] 之中 下一次查询先在这里寻找

转载于:https://www.cnblogs.com/shi-qi/articles/9476030.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值