mirror of
https://github.com/redis/redis.git
synced 2026-01-11 04:58:00 -05:00
This commit adds support for the "touches-arbitrary-keys" command flag in Redis modules, allowing module commands to be properly marked when they modify keys not explicitly provided as arguments, to avoid wrapping replicated commands with MULTI/EXEC. Changes: - Added "touches-arbitrary-keys" flag parsing in commandFlagsFromString() - Updated module command documentation to describe the new flag - Added test implementation in zset module with zset.delall command to demonstrate and verify the flag functionality The zset.delall command serves as a test case that scans the keyspace and deletes all zset-type keys, properly using the new flag since it modifies keys not provided via argv. This commit adds a new `zset.delall` command to the zset test module that iterates through the keyspace and deletes all keys of type "zset". Key changes: - Added zset_delall() function that uses RedisModule_Scan to iterate through all keys in the keyspace - Added zset_delall_callback() that checks each key's type and deletes zset keys using RedisModule_Call with "DEL" command - Registered the new command with "write touches-arbitrary-keys" flags since it modifies arbitrary keys not provided via argv - Added support for "touches-arbitrary-keys" flag in module command parsing - Added comprehensive tests for the new functionality The command returns the number of deleted zset keys and properly handles replication by using the "s!" format specifier with RedisModule_Call to ensure DEL commands are replicated to slaves and AOF. Usage: ZSET.DELALL Returns: Integer count of deleted zset keys