zoukankan      html  css  js  c++  java
  • EasyRTC通过Golang缓存库fastcache实现在线用户存储在内存中加快速度

    EasyRTC是TSINGSEE青犀视频团队在音视频领域多年的技术积累而研发的一款产品。它是覆盖全球的实时音频开发平台,支持一对一、一对多等视频通话。

    EasyRTC拥有MCU和SFU两种架构,无需安装客户端与插件,纯H5在线视频会议系统,支持微信小程序、H5页面、APP、PC客户端等接入方式,极大地满足了语音视频社交、在线教育和培训、视频会议和远程医疗等场景需求。

    在 EasyRTC 中,需要将所有的在线用户存储在内存中加快速度。在最开始的设计中,会将所有的在线用户存储在 map 中,但是map是存在垃圾回收的,在垃圾回收的时候会出现停顿,并且还需要考虑后期数据量的增加,因此采用缓存库。经过调研一段时间后,确认使用 fastcache。

    package main

    import (

    "fmt"

    "github.com/VictoriaMetrics/fastcache"

    func main() {

    // 初始化 cache, 其中 1024 为存储的最大数据,可以根据使用场景调整

    c := fastcache.New(1024)

    defer c.Reset()

    for i := 0; i < 100; i++ {

    k := []byte(fmt.Sprintf("key %d", i))

    v := []byte(fmt.Sprintf("value %d", i))

    fmt.Println(len(v))

    // 设置 key

    c.Set(k, v)

    vv := c.Get(nil, k)

    if string(vv) != string(v) {

    fmt.Println("unexpected value for key %q; got %q; want %q", k, vv, v)

    } else {

    fmt.Println("set value ok", string(vv))

    }

    c.Del(k)

    vv = c.Get(nil, k)

    if len(vv) > 0 {

    fmt.Println("unexpected non-empty value got for key %q: %q", k, vv)

    } else {

    fmt.Println("delete value ok", string(vv), string(k))

    }

    }

    }

    拓展:

    FAST Cache,即高速缓冲存储器,其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,也有快取记忆体的名称。

    FAST CACHE为存储系统提供Flash驱动器级别的性能,增加了IOPS处理能力的同时,仅将热点数据置于Flash盘内,降低成本。

  • 相关阅读:
    记一次模型调试问题:使用TextLSTM/RNN学习不动,损失和acc均无变化
    机器学习常用损失函数
    java多线程使用mdc追踪日志
    搜索笔记整理
    pytorch加载bert模型报错
    Transformer源代码解释之PyTorch篇
    matplotlib画图并设置风格
    PyTorch实现断点继续训练
    通过sklearn使用tf-idf提取英文关键词
    通过依存关系生成邻接矩阵
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14990369.html
Copyright © 2011-2022 走看看