Releases: XimalayaCloud/xcache
Releases · XimalayaCloud/xcache
V4.8
v4.1
优化&新特性
- 支持单独设置binlog路径,避免binlog和普通日志文件耦合在一起
- 调整异步写binlog队列大小限制,binlog队列阻塞时每5s输出一次日志
- slowlog计数器不中断
- 异步加载key时,队列满后每5s输出一次日志
- rocksdb compact删除数据时忽略快照,避免读命令高时,垃圾数据无法删除
- 细化慢日志处理时间
- 支持redis rdb版本为7的数据格式slot迁移到pika,跳过了quicklist结构,后续会支持
- rocksdb日志移到pika日志目录下
- 静态链接lzma库
- 限制单条慢日志大小为256字节(之前为1kb)
Bug修复
- 修复slave-priority配置参数读取错误问题
- 修复发送异常二进制流命令,可能导致进程崩溃问题
v3.7
优化&新特性
- 优化gc加锁流程,解决gc时锁竞争导致读命令产生的延时抖动
- 慢日志统计细化,统计命令排队时间,操作缓存时间,读rocksdb时间,写binlog时间
- info信息中显示快慢线程池中的任务数量
- 移除部分不需要的配置项
Bug修复
- 修复debug模式下,rocksdb coredump问题
v3.6
优化&新特性
- 增加命令延时信息统计功能
- 支持快慢线程池,高优先级命令可以走快线程池,低优先级命令可以走慢线程池,避免命令之间互相影响
- 支持动态设置是否写binlog
Bug修复
- 修复全同步替换DB时执行Info命令可能导致进程崩溃的问题
v3.5
优化&新特性
- ehset命令支持ex,nx,xx可选参数,使用方法类似set的ex,nx,xx参数
- ehincrby和ehincrbyfloat命令支持ex,nxex,xxex可选参数
- ex:表示直接设置field的生存时间
- nxex:表示只有field不存在时才设置生存时间
- xxex:表示只有field存在时才设置生存时间
v3.4
优化&新特性
- zset数据类型支持限长功能
- 支持动态设置检测操作系统free内存周期
- 调整min_free_kbytes为系统总内存的3%,目的是加快系统cache内存回收,避免free内存太少,导致写QPS较高时产生延时毛刺
- zcount/zrangebyscore/zremrangebyscore/zrevrangebyscore接口从用户传入的min值开始迭代,而不是从score最小值开始迭代
- zrange接口,当起始索引大于元素总量的70%时采用反向迭代;zrevrange接口,当起始索引大于元素总量30%,采用正向迭代
Bug修复
- 修复scan命令,如果每次使用相同的游标,会导致存储游标的list持续增大,发生内存泄露
v3.3
优化&新特性
- 优化GC算法,每次GC任务结束后继续递归判断是否需要GC,而不是依赖compact触发GC任务,提升GC速度
- 支持动态设置GC每次采样数据总量,文件采样检查周期,垃圾回收比例以及GC任务队列大小
v3.2
Bug修复
- 修复服务重启后,每个blob的可回收率的分数被清为0,只有被访问到的sst文件中的blob数据会重新计算,导致很多blob文件分数虽然高,但采样时又不满足回收条件的文件一直被选中,后面的无效数据很多但分数为0的真正需要回收的blob文件无法被删除,从而导致gc速度变慢
v3.1
优化&新特性
- 使用限速器对flush和compact磁盘限速,避免瞬间产生大量磁盘IO
- binlog每生成8M数据时sync一次,避免数据一次性落盘,产生大量磁盘IO
- 支持动态打开和关闭rocksdb的写WAL
- 配置中添加是否使用direct IO
- blob文件gc时,先判断blobindex中的ttl是否过期,如果过期则直接删除,避免回查sst文件
- gc时将较小的blob文件直接作为gc的候选文件,不需要再进行采样判断是否要gc。这样避免了小文件每次gc时都会被选中,但由于可回收空间小于50%,而无法被回收的问题。
- 在info中显示cache是否打开状态,如果关闭则不现实cache信息
- 统计key数量时,只读取sst文件,不需要读取blob文件
- 周期检测操作系统free内存剩余大小,如果小于用户设定值,则清理。只有master时执行该操作
- 增大select命令db上限
Bug修复
- 修复incr/incrby/incrbyfloat/decr/decrby会把key的expire属性消除的bug
- blob文件gc时,在更新BlobIndex时没有设置timestamp参数,导致BlobIndex中的timestamp被设置成默认的0,而0代表没有过期时间,如果该条记录一直没有被访问更新,则blob中的记录将无法被删除。
v3.0
新特性
- 支持string数据类型key和value分离存储,分离存储的value阈值可以通过配置文件中的min-blob-size配置
Bug修复
- bgsave时没有dump出ehash数据类型目录
- ehsetex命令没有对meta信息中的count加1