Carade v0.3.0 #3
No reviewers
Labels
No labels
bug
dependencies
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
rust
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
codetease/carade!3
Loading…
Reference in a new issue
No description provided.
Delete branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal: 60-70% compatibility with Redis
In this commit:
Implemented "useful" commands:
Organized into core/commands subpackages and registered in CommandRegistry.
In this commit:
In this commit:
In this commit:
In this commit:
In this commit:
SORTcommand with support forBY,LIMIT,GET,ASC/DESC,ALPHA, andSTORE.SINTERSTORE,SUNIONSTORE,SDIFFSTOREfor Set operations.ZUNIONSTOREandZINTERSTOREfor Sorted Set operations withWEIGHTSandAGGREGATE.BRPOPLPUSHwith proper database isolation.APPEND,GETRANGE,SETRANGEcommands.SCANto supportTYPEfiltering.ClientHandlerand command execution flow.In this commit:
ZPOPMINandZPOPMAXfor efficient score-based popping.HSETNXandHINCRBYFLOAT.LMOVEandBLMOVEfor flexible list manipulation.UNLINKwhich performs key removal immediately and value cleanup asynchronously.BloomFilterstruct andBF.ADD/BF.EXISTScommands.ClientHandlerto support these new commands and fixed formatting for float responses.In this commit:
Moved the following commands from
ClientHandler.javaswitch-case to standalone classes incore.commands:Registered all new commands in
CommandRegistry.Removed the legacy switch-case blocks for these commands in
ClientHandler.java.In this commit:
In this commit:
MonitorCommandclass incore.commands.server.MONITORinCarade.java.ClientHandlerto:isMonitorstate.monitorsset inCarade.In this commit:
CommandRegistryto properly registerHEXPIREandHTTL.CaradeHashto support expiration logic.CaradeHash.In this commit:
In this commit:
RENAMENXinRenameNxCommand.SWAPDBinSwapDbCommand(Server group).MOVEinMoveCommand.COPYinCopyCommandwith deep copy support.EXPIRETIMEandPEXPIRETIMEinExpireTimeCommandandPExpireTimeCommand.copy()method inValueEntryand supporting structs (CaradeZSet,BloomFilter,HyperLogLog,TDigest,Centroid) to enableCOPYcommand.CommandRegistryto register new commands.TDigestTestto use JUnit 5.In this commit:
Implemented several missing Redis commands across various categories:
Refactored
Carade.javato support tracking connected clients and safe background saving.Deleted unused
LexUtils.javacreated during development.In this commit:
Implemented additional Redis commands across various categories:
Enhanced
RdbEncoderto support single-value encoding forDUMP.Implemented client pausing mechanism in
CaradeandClientHandler.In this commit:
Implemented INCRBYFLOAT, SMOVE, ZRANDMEMBER, CONFIG (SET/RESETSTAT), RESET, LMPOP, BLMPOP, LCS, LOLWUT, SORT_RO, and fixed HSCAN in ScanCommand. Also updated ClientCommand for ID/KILL.
In this commit:
HSCAN,SSCAN,ZSCANBZPOPMAX,BZPOPMIN(with generic blocking support inCarade.java)GEOSEARCH,GEOSEARCHSTOREBITFIELD,BITFIELD_ROMEMORY USAGE,MEMORY STATS,LATENCY(stub)WAIT(stub),MIGRATECLIENT ID,CLIENT KILL,CLIENT LISTZREVRANGEBYLEX,ZREVRANGEBYSCORERefactored
CLIENTcommand to use dedicated classes. IntroducedMEMORYrouter command. UpdatedCommandRegistryfor all new commands.This commit introduces a fully functional Lua scripting engine using
luaj-jse.Key features:
EVALandEVALSHAcommands support.SCRIPT LOAD,SCRIPT EXISTS,SCRIPT FLUSHcommands.redis.callandredis.pcallbinding for executing commands from Lua.ScriptManager.LuaConverter) handling binary safety and Redis protocol mapping (e.g., Simple Strings ->{ok: ...}).ClientHandlerto capture command output during script execution.Tests included for type conversion and binary safety.
In this commit:
executeInternalswitch-case withexecuteAofCommandthat leveragesCommandRegistryfor robust and maintainable AOF replay.Janitorthread to use a stochastic, high-frequency (100ms) active expiration loop to reduce latency spikes, and a separate low-frequency (30s) maintenance loop for heavy tasks.ReplicationManagerto use the newexecuteAofCommandlogic.In this commit:
ReplicationManageroffset reporting to useWriteSequencerbacklog.WAITcommand (returns connected replica count immediately).PSYNCto support Partial Resync via backlog before falling back to full RDB sync.In this commit:
Introduces the following commands:
Also includes fixes for exception handling in JSON.DEL and correct response formatting for BF commands.
Finally, removes every tests.
In this commit:
In this commit:
In this commit:
ClientHandlerreference toBlockingRequestto enable tracking of requests by client.Carade.removeBlockingRequests(ClientHandler)to clean up pending blocking requests when a client disconnects, preventing memory leaks.ClientHandler.cleanup()to invoke the new blocking request removal logic.BLPOP,BRPOP,BLMOVE, etc.) to pass theClientHandlerwhen creatingBlockingRequest.Carade.shutdownInitiatedflag to coordinate shutdown sequence.ShutdownCommandto setshutdownInitiated = true.Carade.saveDatato log a warning instead of throwing aRuntimeExceptionif a save is already in progress.Caradeshutdown hook to checkshutdownInitiatedbefore attempting a save, preventing double-save attempts and crash logs.