u/EgeEgey

▲ 2 r/redis

Hey everyone!

Just pushed the v1.4 update for Nexus Core, and it’s a big quality-of-life improvement for both the developer (me, lol) and the network performance.

What’s new?

  • No More Manual Setup: I was tired of typing DB/Redis credentials every time I launched the app. Added a persistent Config system. Now it’s "set and forget"—the app handles auto-login and smart initialization on startup.
  • Global Ranking Protocols: Implemented a high-performance ranking system. You can now fetch Top-N leaderboards (ASC/DESC) across the entire network asynchronously.
  • Rank Finder: Added a specialized protocol to calculate a specific key’s position in real-time. No more fetching the whole list just to see one player's rank!
  • Fluid Data Cleanup: Added a .remove(key) method to my custom DataContainer. I can now strip MongoDB _ids or sensitive metadata on the fly before broadcasting to Redis.
  • Serialization Fixes: Finally nuked those annoying Jackson InvalidDefinitionException errors by refactoring internal maps. Everything is smooth now.

The goal was to make the system more data-driven and less hard-coded. v1.4 feels like a solid milestone for the project’s maturity.

Would love to hear your thoughts on the architecture! 🚀🔥

reddit.com
u/EgeEgey — 14 days ago

Hey everyone!

Just pushed the v1.4 update for Nexus Core, and it’s a big quality-of-life improvement for both the developer (me, lol) and the network performance.

What’s new?

  • No More Manual Setup: I was tired of typing DB/Redis credentials every time I launched the app. Added a persistent Config system. Now it’s "set and forget"—the app handles auto-login and smart initialization on startup.
  • Global Ranking Protocols: Implemented a high-performance ranking system. You can now fetch Top-N leaderboards (ASC/DESC) across the entire network asynchronously.
  • Rank Finder: Added a specialized protocol to calculate a specific key’s position in real-time. No more fetching the whole list just to see one player's rank!
  • Fluid Data Cleanup: Added a .remove(key) method to my custom DataContainer. I can now strip MongoDB _ids or sensitive metadata on the fly before broadcasting to Redis.
  • Serialization Fixes: Finally nuked those annoying Jackson InvalidDefinitionException errors by refactoring internal maps. Everything is smooth now.

The goal was to make the system more data-driven and less hard-coded. v1.4 feels like a solid milestone for the project’s maturity.

Would love to hear your thoughts on the architecture! 🚀🔥

reddit.com
u/EgeEgey — 14 days ago

Hey everyone! 👋

I’ve been working on a cross-platform data engine called Nexus for a while now (connecting Minecraft servers and Unity instances), and I just pushed the v1.3 update. I wanted to share a few improvements because I’m pretty hyped about how the caching logic turned out!

The Problem: I was struggling with L1 (local RAM) and L2 (Redis) cache synchronization. Sometimes Redis keys would expire, but my application’s local cache would stay "stale," leading to some nasty data ghosts.

What’s new in 1.3:

  • Dynamic TTLs: I’ve moved to a modular "DataAddon" system. Now, each module (like player profiles, game stats, or dungeons) defines its own TTL. No more "one size fits all" for cache duration.
  • The "Silent Sync": I integrated Redis Keyspace Notifications. Now, the moment a key expires in Redis, the application gets a "ping" and automatically purges the local L1 cache. It’s like magic—no manual cleanup needed.
  • Sliding Expiration: Added a "touch-to-renew" logic. As long as the data is being accessed, the TTL keeps resetting. If it goes quiet, it cleans itself up.

Tech Stack:

  • Java (PaperMC/Spigot API)
  • Redis (Jedis)
  • Jackson for JSON tree manipulation

I’m really curious to hear what you guys think about this approach to cache invalidation. Is Keyspace Notifications the "industry standard" for this, or am I over-engineering it? lol.

Would love to hear your thoughts or answer any questions! 🦾🚀

reddit.com
u/EgeEgey — 16 days ago