What maps to what: migrate from Hazelcast to KiviDB
What maps to what. Migrate to KiviDB: Move from Redis, Valkey, ElastiCache, Redis Cloud, Aiven, Aerospike, Hazelcast and more: getting the data out, loading i
| Hazelcast | KiviDB | Notes |
|---|---|---|
IMap<K, V> of objects | One hash per entry (HSET customer:42 name Ana age 31) | Or one JSON document per entry (JSON.SET) for nested objects. |
IMap<K, V> of strings or numbers | One string per entry (SET stock:7 21) | |
IMap TTL (put(k, v, ttl, unit), time-to-live-seconds) | EXPIRE / PEXPIREAT on the key | Per key. A hash field can have its own TTL too (HEXPIRE). |
IMap max-idle (max-idle-seconds) | No direct equivalent | Set a TTL and refresh it on read with GETEX key EX <seconds> (strings) or EXPIRE (hashes). |
IMap eviction (eviction-policy LRU/LFU, max-size-policy) | maxmemory with maxmemory-policy allkeys-lru or allkeys-lfu | One limit for the whole server, not per map. |
IMap entry listener (added, updated, removed, evicted, expired) | Keyspace notifications (notify-keyspace-events) over pub/sub | At-most-once: a subscriber that is disconnected misses events. Self-hosted only for now: KiviDB Cloud cannot turn them on yet. |
IMap entry processor | MULTI/EXEC, WATCH, or a Lua script in a lua build | Runs on the server, but there is no Java code on the server. |
IMap predicates, SqlPredicate, SQL SELECT | Search: FT.CREATE an index over the hashes or JSON, then FT.SEARCH / FT.AGGREGATE | Built in. No joins. |
IMap indexes (addIndex, HASH or SORTED) | Fields in an FT.CREATE schema (TAG, NUMERIC ... SORTABLE, TEXT) | |
| Near cache | Client-side caching with CLIENT TRACKING | See Near cache: check your client. |
MapStore / MapLoader (read-through, write-through) | No equivalent | Do it in the application: read the database on a miss, write both. |
MultiMap | One set per key (SADD) | Or a list (RPUSH) if the MultiMap keeps duplicates (value-collection-type: LIST). |
ReplicatedMap | One hash (HSET config key value) | Every read goes to the server; there is no copy in each member. |
IQueue | List: RPUSH to offer, LPOP / BLPOP to poll or take | BLMOVE to a processing list for at-least-once hand-off. |
ISet | Set (SADD, SISMEMBER) | |
IList | List (RPUSH, LRANGE, LINDEX) | |
Ringbuffer | Stream (XADD ... MAXLEN ~ n, XRANGE, XREAD) | Readers keep their own position, as with a ringbuffer sequence. |
ITopic | Pub/sub (PUBLISH, SUBSCRIBE) | Fire and forget, as ITopic is. |
ReliableTopic | Stream, with consumer groups (XREADGROUP, XACK) for at-least-once | |
FencedLock (CP subsystem) | SET lock:<name> <token> NX PX <ms>, released with DELEX ... IFEQ <token> | Not the same guarantees: see Locks. |
IAtomicLong (CP subsystem) | INCR, INCRBY, DECR, SET ... IFEQ for compare-and-set | |
PNCounter | INCR / INCRBY | |
FlakeIdGenerator | INCR on a sequence key, or keep generating IDs in the application | |
CardinalityEstimator | HyperLogLog (PFADD, PFCOUNT) | Estimator state can't be copied; start counting again. |
JCache (javax.cache) | A Redis client's cache API, or Spring Cache over Redis | |
Compact, Portable, IdentifiedDataSerializable, Java Serializable | Your choice of encoding: hash fields, JSON, or bytes | See Serialization. |
Jet pipelines, IExecutorService, IScheduledExecutorService, ISemaphore, ICountDownLatch | No equivalent | Run that compute in your own services. |
| Cluster membership, partition backups | KiviDB replicas, cluster mode, or KiviDB Cloud's Pro tier |