- 22 11月, 2019 1 次提交
-
-
由 zhaozhao.zz 提交于
Random command like SPOP with count is replicated as some SREM operations, and store them in also_propagate array to propagate after the call, but this would break atomicity. To keep the command's atomicity, wrap also_propagate array with MULTI/EXEC.
-
- 21 11月, 2019 1 次提交
-
-
由 antirez 提交于
-
- 19 11月, 2019 1 次提交
-
-
由 Yossi Gottlieb 提交于
RM_Call() will now use EBADF and ENONET in addition to EINVAL in order to provide more information about errors (i.e. when return value is NULL).
-
- 14 11月, 2019 3 次提交
-
-
由 Oran Agra 提交于
trimming talk about RESP protocol from API docs (should be independent to that anyway)
-
由 Oran Agra 提交于
-
由 Yossi Gottlieb 提交于
This is a light-weight replace function, useful for use cases such as realloc()ing an existing value, etc. Using RM_ModuleTypeSetValue() in such cases is wasteful and complex as it attempts to delete the old value, call its destructor, etc.
-
- 11 11月, 2019 2 次提交
-
-
由 Oran Agra 提交于
- Adding RM_ScanKey - Adding tests for RM_ScanKey - Refactoring RM_Scan API Changes in RM_Scan - cleanup in docs and coding convention - Moving out of experimantal Api - Adding ctx to scan callback - Dont use cursor of -1 as an indication of done (can be a valid cursor) - Set errno when returning 0 for various reasons - Rename Cursor to ScanCursor - Test filters key that are not strings, and opens a key if NULL
-
由 meir@redislabs.com 提交于
The implementation expose the following new functions: 1. RedisModule_CursorCreate - allow to create a new cursor object for keys scanning 2. RedisModule_CursorRestart - restart an existing cursor to restart the scan 3. RedisModule_CursorDestroy - destroy an existing cursor 4. RedisModule_Scan - scan keys The RedisModule_Scan function gets a cursor object, a callback and void* (used as user private data). The callback will be called for each key in the database proving the key name and the value as RedisModuleKey.
-
- 10 11月, 2019 1 次提交
-
-
由 Oran Agra 提交于
- the API name was odd, separated to two apis one for LRU and one for LFU - the LRU idle time was in 1 second resolution, which might be ok for RDB and RESTORE, but i think modules may need higher resolution - adding tests for LFU and for handling maxmemory policy mismatch
-
- 06 11月, 2019 5 次提交
-
-
由 meir@redislabs.com 提交于
-
由 Guy Benoish 提交于
Fixes GitHub issue #6492 Added stream support in RM_KeyType and RM_ValueLength. Also moduleDelKeyIfEmpty was updated, even though it has no effect now (It will be relevant when stream type direct API will be coded - i.e. RM_StreamAdd)
-
由 meir@redislabs.com 提交于
-
由 meir@redislabs.com 提交于
-
由 meir@redislabs.com 提交于
The exposed functions: 1. RedisModule_GetUsedMemoryPercentage - return the used memory 2. RedisModue_MallocSize - return for a given pointer, the amount of memory allocated for this pointer
-
- 05 11月, 2019 3 次提交
-
-
由 Yossi Gottlieb 提交于
Add two new functions that leverage the RedisModuleDataType mechanism for RDB serialization/deserialization and make it possible to use it to/from arbitrary strings: * RM_SaveDataTypeToString() * RM_LoadDataTypeFromString()
-
由 artix 提交于
-
由 artix 提交于
New API: - RedisModule_StringToLongDouble - RedisModule_CreateStringFromLongDouble - RedisModule_ReplyWithLongDouble
-
- 04 11月, 2019 3 次提交
- 03 11月, 2019 2 次提交
-
-
由 Oran Agra 提交于
looks like each platform implements long double differently (different bit count) so we can't save them as binary, and we also want to avoid creating a new RDB format version, so we save these are hex strings using "%La". This commit includes a change in the arguments of ld2string to support this. as well as tests for coverage and short reads. coded by @guybe7
-
由 Oran Agra 提交于
- Add RM_GetServerInfo and friends - Add auto memory for new opaque struct - Add tests for new APIs other minor fixes: - add const in various char pointers - requested_section in modulesCollectInfo was actually not sds but char* - extract new string2d out of getDoubleFromObject for code reuse Add module API for
-
- 01 11月, 2019 2 次提交
- 31 10月, 2019 4 次提交
-
-
由 antirez 提交于
-
由 antirez 提交于
-
由 antirez 提交于
Using the is_key_ready() callback plus the reply callback later, creates different issues AFAIK: 1. More complex API. 2. We need to call the reply callback() ASAP if the is_key_ready() interface returned success, however the internals do not work in that way, so when the reply callback is called the setup could be different. To fix that, there is to break the current design that handles the unblocked clients asyncrhonously, and run the list ASAP.
-
由 antirez 提交于
Now we handle propagation when we free the context.
-
- 30 10月, 2019 3 次提交
- 29 10月, 2019 2 次提交
-
-
由 Oran Agra 提交于
* replication hooks: role change, master link status, replica online/offline * persistence hooks: saving, loading, loading progress * misc hooks: cron loop, shutdown, module loaded/unloaded * change the way hooks test work, and add tests for all of the above startLoading() now gets flag indicating what is loaded. stopLoading() now gets an indication of success or failure. adding startSaving() and stopSaving() with similar args and role.
-
由 Oran Agra 提交于
Some commands would want to open a key without touching it's LRU/LFU similarly to the OBJECT or DEBUG command do. Other commands may want to implement logic similar to what RESTORE does (and in the future MIGRATE) and get/set the LRU or LFU.
-
- 28 10月, 2019 5 次提交
-
-
由 Oran Agra 提交于
Adding a test for coverage for RM_Call in a new "misc" unit to be used for various short simple tests also solves compilation warnings in redismodule.h and fork.c
-
由 Guy Benoish 提交于
Also, add an API for getting server.notify_keyspace_events Other (unrelated) changes: Add RM_GetKeynameFromModuleKey
-
由 Oran Agra 提交于
This commit also fixes an uninitialized module struct member (that luckily never got released)
-
由 swilly22 提交于
Introduce ReplyWithVerbatimString, ReplyWithEmptyArray, ReplyWithNullArray and ReplyWithEmptyString to redis module API
-
由 zhaozhao.zz 提交于
As we know if a module exports module-side data types, unload it is not allowed. This rule is the same with blocked clients in module, because we use background threads to implement module blocked clients, and it's not safe to unload a module if there are background threads running. So it's necessary to check if any blocked clients running in this module when unload it. Moreover, after that we can ensure that if no modules, then no module blocked clients even module unloaded. So, we can call moduleHandleBlockedClients only when we have installed modules.
-
- 24 10月, 2019 2 次提交