缓存的设计

本文探讨了如何设计TTS缓存以有效利用有限的TTS资源,借鉴Linux内核策略,采用MD5加密作为唯一标识,结合LRU替换算法。在用户高峰期和低谷期,提出调整策略,并考虑缓存最低限和资源锁的使用,以优化TTS的利用率。
摘要由CSDN通过智能技术生成

    要最大限度的利用有限的资源, 缓存是不可不用的技术。而如何设计、管理缓存资源就是一个至关重要的问题,并且也是充满挑战的。现在遇到的问题就是如何利用好极其有限的TTS,TTS资源的数量是以线为单位计算的。购买了N线的TTS,就以为着同时只可能有N个用户在同时使用TTS。从成本角度来说,TTS的线数越少越好;从开发的角度,如果不使用缓存,再多的TTS线数也无法在高峰期满足用户的需求,而在空闲期又是对资源的浪费。 所以现在的问题就是如何设计好TTS缓存,以最大限度的利用有限的TTS资源。

    参照Linux内核的设计策略,我目前对TTS缓存的实现如下:设置一个全局的map,作为缓存资源的容器。map的第一个元素为关键字 key ,第二个元素为 记录实体record。其中 key 是一个包含 md5 加密串的类;record 是一个包含转换后语音文件路径 audioPath ,语音文件年龄 age ,语音文件最后访问时间 lastAccessTime属性的类。之所以考虑到使用md5加密,是因为想将不定长字符串唯一的且定长的标示出来。

    在程序运行初始,每来一个新的TTS资源请求都真实占用TTS资源进行实际转换,对TTS串 md5 加密得到key,并填写 record 相应的属性,audioPath设置为转换后语音文件的路径,age初始值根据需要任意设定,lastAccessTime设为当前时间。当一个串被请求时,我们md5加密后,将得到的加密串与map中的所有key做比较,如果相同,证明此串已经被转换过,则取出其对应record的audioPath,并将record的age加一,lastAccessTime置为当前时间。但是map的大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值