当前位置: 首页 > 软件库 > 开发工具 > Java开发工具 >

AresKV

AresKV 类似Redis的内存KV数据库
授权协议 Apache
开发语言 Java
所属分类 开发工具、 Java开发工具
软件类型 开源软件
地区 国产
投 递 者 汪文光
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

AresKV

类似Redis的内存kv数据库,分单机版本和网络版本,1.x之后为网络版本。

特点:

  • 支持String类型的Key,以及基本数据类型及其包装类的Value,至于其他数据结构,童鞋们可以自己添加支持;

  • 支持单机和网络版本,网络IO使用Netty4.1,地址:https://www.oschina.net/p/netty;

  • 支持缓存有效期、watch事务,没有支持mulit,使用handler责任链模式;

  • 支持主从复制,主动复制模式,支持从服务器的从零复制、KVObject重新复制;

  • 支持无中心集群,支持请求的路由转发,没有支持集群的重新分片,集群的高可用问题。

  软件的逻辑处理部分架构,主要使用责任链模式,童鞋们可以方便的添加自己想要的功能;
  网络IO方面,使用json序列化,复制功能是java序列化,童鞋们可以使用netty的protobuf、或自定义传输协议。
  软件可能的bug,以及需要添加的功能,在readme文本里都有说明,那个 这东西仅供学习,大神可以跳过。

线程模型:serial thread

架构模式:分层+责任链

 相关资料
  • 问题内容: 我需要将代码替换为使用内存字节缓冲区(例如或类似的派生类)的代码。是否有一些API(字节数组包装器)具有与,相似的接口,并且我可以一对一地插入? 问题答案: 可以做到: 工作原理相同。 可以替换为

  • 本文向大家介绍内存型数据库Redis持久化小结,包括了内存型数据库Redis持久化小结的使用技巧和注意事项,需要的朋友参考一下 因为Redis是内存型数据库,所以为了防止因为系统崩溃等原因导致数据丢失的问题,Redis提供了两种不同的持久化方法来将数据存储在硬盘里面,一种方法是快照(RDB),它可以将存在于某一个时刻的所有数据都写入到硬盘里面,另外一种方法是只追加文件(AOF),它会在执行写命令时

  • 问题内容: 我有一个小问题。 我正在尝试将单词表存储在Redis中。表现很棒。 我的方法是制作一个称为“单词”的集合,并通过“添加”添加每个新单词。 这是添加15.9mb且包含约一百万个单词的文件时的问题,redis服务器进程消耗160mb的ram。我为什么要使用10倍的内存,有没有更好的方法来解决此问题? 提前致谢 问题答案: 好吧,这是对任何有效数据存储的期望:字必须在内存中以指针链接的单元的

  • 主要内容:string字符串,hash散列,list列表,set集合,zset有序集合经过前面介绍,我们知道 Redis 是 Key-Value 类型缓存型数据库,Redis 为了存储不同类型的数据,提供了五种常用数据类型,如下所示: string(字符串) hash(哈希散列) list(列表) set(集合) zset(sorted set:有序集合) 注意:这里指的数据类型是 Value(值) 的数据类型,而非 key。 string字符串 String 是 Redis 最基

  • 我需要在一个调用中获得一组已知的REDIS哈希密钥的所有数据字段。我使用MGET的字符串键,如: MGET键[键…] 从1.0开始提供。0 时间复杂度:O(N),其中N是要检索的密钥数。 返回所有指定键的值。对于不包含字符串值或不存在的每个键,将返回特殊值nil。因此,操作从未失败。 HMGET只为一个键带来所有字段。我需要许多键所有字段按键。

  • 一、内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如: rc = sqlite3_open(":memory:", &db); 在调用完以上函数后,不会有任何磁盘文件被生成,取而代之的是,一个新的数据库在纯内存中被成功创建了。

  • 问题内容: 如果数据超出可用内存,Redis数据存储将如何处理? 问题答案: 我认为redisconfig中有一个商店大小设置,它将阻止您添加超出已设置商店容纳的数据的数据。如果您设置了一个不适合物理内存的存储,它只会向操作系统请求更多的内存,并且其中一些将被分页到磁盘上,这会明显提高性能。 下一个版本的Redis具有自己的虚拟内存实现,可以在磁盘上存储较少使用的密钥-http: //antire

  • 使用table()方法查看结构化数据并比较数据对象。 table()方法提供了一种简单的方法来查看包含类似数据的对象和数组。当调用时,它将获取到的对象属性创建为标题。每一行数据来自每个索引下的属性值。 基本示例: 记录对象的数组 在它最基本的形式中,你需要的是一个具有相同属性的对象数组。 table() 命令将完整剩下的工作: console.table([{a:1, b:2, c:3}, {a: