MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

我开发了一套硬盘Redis数据库(我开发了一套硬盘redis数据库)

2025-03-28 17:04 huorong 精选文章 4 ℃ 0 评论

公司有一个小程序,采用的是Redis数据库,由于数据增长,Redis已经不能满足性能需求,于是我自己开发了一个基于硬盘的数据库,该数据库具备以下特点:

  1. 基于硬盘:数据全部存储在硬盘上,不但大幅节省了内存使用,而且安全可靠;


  1. 兼容Redis协议:各种编程语言和Redis客户端,采用Redis单节点连接模式,连接该数据库即可。



从以上两张图可以看出,本数据库高度兼容Redis,各种编程语言和Redis可视化工具,只需要修改IP和端口号,就可以使用该数据库。并且内存占用低,上述数据大约3.3G左右,但是实际内存占用只有300多M,而且其中150MB是数据库自身固定占用。

  1. 高性能:测试机是DDR4 3200MHz,机械硬盘ST4000NM0035-1V4107,执行hget指令,结果如下:

测试场景:某个Hash表,有30万个key-value,每个value大约1280字节,测试hget一万次。


从上图可以看出,本数据库的性能已经可以与Redis相媲美了。而且只是在机械硬盘中取得的速度哦,如果换成SSD固态硬盘,这个速度一定会超越Redis的。

  1. 完全自主开发:基于GO语言开发,完全自主开发,没有参考任何开源或闭源代码。只要Go语言支持的操作系统,本数据库都支持。
  2. 超越Redis:hash表支持使用lrange指令,这对于存储历史流水来说,尤其有用,再也不用一张list流水表存储流水历史,一张hash表用来更新流水详情。
  3. 同一个数据表,有卸载和安装两种状态,卸载状态下:数据表完全不占用任何内存,但是性能会降低。安装状态下:以一个30万key-value的hash表为例,占用内存大约30万*14字节=4200KB,无论每个value有10个字节还是100MB,这个数据表都只占用4200KB的内存。
  4. list优化:针对list,进一步进行了优化,经过测试,某个有30万条记录的list,执行一万次lrange 0 50 ,Redis消耗1.60秒,本数据库在最快模式下2.61秒,在最慢模式下6.6秒。
  5. 无限可能:得益于完全自主开发,可以有无限可能,比如,如果让Redis支持条件查询,那会带来多少惊喜?

Tags:redis客户端

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言