• Viktor Söderqvist's avatar
    Modules: Add remaining list API functions (#8439) · ea36d4de
    Viktor Söderqvist authored
    List functions operating on elements by index:
    
    * RM_ListGet
    * RM_ListSet
    * RM_ListInsert
    * RM_ListDelete
    
    Iteration is done using a simple for loop over indices.
    The index based functions use an internal iterator as an optimization.
    This is explained in the docs:
    
    ```
     * Many of the list functions access elements by index. Since a list is in
     * essence a doubly-linked list, accessing elements by index is generally an
     * O(N) operation. However, if elements are accessed sequentially or with
     * indices close together, the functions are optimized to seek the index from
     * the previous index, rather than seeking from the ends of the list.
     *
     * This enables iteration to be done efficiently using a simple for loop:
     *
     *     long n = RM_ValueLength(key);
     *     for (long i = 0; i < n; i++) {
     *         RedisModuleString *elem = RedisModule_ListGet(key, i);
     *         // Do stuff...
     *     }
    ```
    ea36d4de
t_list.c 42.1 KB