Coder Social home page Coder Social logo

alibaba / tairhash Goto Github PK

View Code? Open in Web Editor NEW
223.0 10.0 38.0 1.57 MB

A redis module, similar to redis hash, but you can set expiration and version for field.

License: Apache License 2.0

CMake 0.63% C 84.46% Tcl 14.68% Dockerfile 0.23%
redis module hash expiration version

tairhash's Introduction

Build CI Docker codecov

Introduction 中文说明

     TairHash is a hash data structure developed based on the redis module. TairHash not only has the same rich data interface and high performance as the native hash, but also can set the expiration and version for the field. TairHash provides an active expiration mechanism, even if the field is not accessed after expiration, it can be actively deleted to release the memory.

The main features:

  • Supports all redis hash commands
  • Supports setting expiration and version for field
  • Support efficient active expiration (SCAN mode, SORT mode and SLAB mode) and passivity expiration for field
  • Support field expired event notification (based on pubsub)

Active expiration

SCAN_MODE(default):

  • Do not sort TairHash globally (Smaller memory overhead)
  • Each TairHash will still use a sort index to sort the fields internally (For expiration efficiency)
  • The built-in timer will periodically use the SCAN command to find the TairHash that contains the expired field, and then check the sort index inside the TairHash to eliminate the field
  • All keys and fields in the sorting index are pointer references, no memory copy, no memory expansion problem

Supported redis version: redis >= 5.0

Advantages: can run in the low version of redis (redis >= 5.0)

Disadvantages: low efficiency of expire elimination (compared with SORT mode and SLAB mode)

Usage: cmake with default option, and recompile

SORT_MODE:

  • Use a two-level sort index, the first level sorts the main key of tairhash, and the second level sorts the fields inside each tairhash
  • The first-level uses the smallest ttl in the second-level for sorting, so the main key is globally ordered
  • The built-in timer will periodically scan the first-level index to find out a key that has expired, and then check the secondary index of these keys to eliminate the expired fields. This is the active expire
  • All keys and fields in the sorting index are pointer references, no memory copy, no memory expansion problem

Supported redis version: redis >= 7.0

Advantages: higher efficiency of expire elimination

Disadvantages: More memory consumption

Usage: cmake with -DSORT_MODE=yes option, and recompile

SLAB_MODE:

  • Slab mode is a low memory usage (compared with SORT mode), cache-friendly, high-performance expiration algorithm
  • Like SORT mode, keys are globally sorted to ensure that keys that need to be expired can be found faster. Unlike SORT mode, SLAB does not sort the fields inside the key, which saves memory overhead.
  • The SLAB expiration algorithm uses SIMD instructions (when supported by the hardware) to speed up the search for expired fields

Supported redis version: redis >= 7.0

Advantages: Efficient elimination, low memory consumption, and fast access bring new ideas to expiration algorithms

Disadvantages: More memory consumption

Usage: cmake with -DSLAB_MODE=yes option, and recompile

Passivity expiration

  • Every time you read or write a field, it will also trigger the expiration of the field itself
  • Every time you write a field, tairhash also checks whether other fields (may belong to other keys) are expired (currently up to 3 at a time), because fields are sorted by TTL, so this check will be very efficient (Note: SLAB_MODE does not support this feature)

Event notification

tairhash will send an event notification when the field expires (triggered by active or passive expiration). The notification is sent in pubsub mode. The format of the channel is: tairhash@<db>@<key>__:<event> , currently only supports expired event type, so The channel is: tairhash@<db>@<key>__:expired, and the message content is the expired field.

Quick Start

127.0.0.1:6379> EXHSET k f v ex 10
(integer) 1
127.0.0.1:6379> EXHGET k f
"v"
127.0.0.1:6379> EXISTS k
(integer) 1
127.0.0.1:6379> debug sleep 10
OK
(10.00s)
127.0.0.1:6379> EXISTS k
(integer) 0
127.0.0.1:6379> EXHGET k f
(nil)
127.0.0.1:6379> EXHSET k f v px 10000
(integer) 1
127.0.0.1:6379> EXHGET k f
"v"
127.0.0.1:6379> EXISTS k
(integer) 1
127.0.0.1:6379> debug sleep 10
OK
(10.00s)
127.0.0.1:6379> EXISTS k
(integer) 0
127.0.0.1:6379> EXHGET k f
(nil)
127.0.0.1:6379> EXHSET k f v  VER 1
(integer) 1
127.0.0.1:6379> EXHSET k f v  VER 1
(integer) 0
127.0.0.1:6379> EXHSET k f v  VER 1
(error) ERR update version is stale
127.0.0.1:6379> EXHSET k f v  ABS 1
(integer) 0
127.0.0.1:6379> EXHSET k f v  ABS 2
(integer) 0
127.0.0.1:6379> EXHVER k f
(integer) 2

Docker

docker run -p 6379:6379 tairmodule/tairhash:latest

BUILD

mkdir build  
cd build  
cmake ../ && make -j

then the tairhash_module.so library file will be generated in the lib directory

./redis-server --loadmodule /path/to/tairhash_module.so

TEST

  1. Modify the path in the tairhash.tcl file in the tests directory to set testmodule [file your_path/tairhash_module.so]
  2. Add the path of the tairhash.tcl file in the tests directory to the all_tests of redis test_helper.tcl
  3. run ./runtest --single tairhash

Client

language GitHub
Java https://github.com/alibaba/alibabacloud-tairjedis-sdk
Python https://github.com/alibaba/tair-py
Go https://github.com/alibaba/tair-go
.Net https://github.com/alibaba/AlibabaCloud.TairSDK

API

Reference

Our modules

TairHash: A redis module, similar to redis hash, but you can set expire and version for the field
TairZset: A redis module, similar to redis zset, but you can set multiple scores for each member to support multi-dimensional sorting
TairString: A redis module, similar to redis string, but you can set expire and version for the value. It also provides many very useful commands, such as cas/cad, etc.

tairhash's People

Contributors

alibaba-oss avatar ashtonian avatar bug-superman avatar chenyang8094 avatar yangbodong22011 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tairhash's Issues

Question about module functionality

Hello, could you please tell me if it is possible to implement the following functionality with this module: Fields with expired TTL values are not deleted at all, but transferred to another hash or db?, for example with the name of the original + ":expired". Often we need to understand that the TTL has expired, but the data itself which is stored is also needed.

rdb save may sometimes cause downtime

Hello, during the process of using tairHash, when saving the RDB, I found that an error occurred. Through the debug source code, I found that some functions do not exist in the header file of the redis module.
In the redis official website code, I found that you are in Redis submitted No. 8999 on June 16. If a function lower than this version is used, the redis instance will be down.

ps: I developed a simple client in python language, which is compatible with tairHash commands. If you have time, please help me and take a look. https://github.com/631086083/tairClient

[NEW] 能否给hashmap本身的key添加一个version呢

如果有基本不会变化的数据在redis中采用hashmap来存储, 那么,当应用访问这个map的时候,就可以先查看一下map的版本号.类似于http 202状态码.version 什么时候会变更呢,hashmap set remove的时候会变更

Potential performance inconsistency

Hey guys,

Just rolled that time series PR into prod so, its working and seems to be working well for the most part. We are doing around ~300ops/s. It seems that some of the operations are not consistent time though. Any suggestions on profiling this further?

image

image

[BUG] how to listener field expired event?

how to listener field expired event?
I have a project that needs to listen for field expiration events, but I don't find field expiration event responses in the event list.

使用tarhash 频繁给一个key设置带EX 的field。当filed过期,但该key占用的内存大小并没有改变,再次访问已过期的key,造成redis奔溃,重启

Crash report

EIP:
/lib64/libc.so.6(gsignal+0x10f)[0x7f341940337f]

Backtrace:
/lib64/libpthread.so.0(+0x12c20)[0x7f34197a3c20]
/lib64/libc.so.6(gsignal+0x10f)[0x7f341940337f]
/lib64/libc.so.6(abort+0x127)[0x7f34193eddb5]
/lib64/libc.so.6(+0x21c89)[0x7f34193edc89]
/lib64/libc.so.6(+0x2fa76)[0x7f34193fba76]
/opt/tair/TairHash/lib/tairhash_module.so(+0x2585)[0x7f3418339585]
/opt/tair/TairHash/lib/tairhash_module.so(+0x1a7c)[0x7f3418338a7c]
/opt/tair/TairHash/lib/tairhash_module.so(+0x52bb)[0x7f341833c2bb]
/opt/tair/TairHash/lib/tairhash_module.so(+0x75b2)[0x7f341833e5b2]
./redis-server *:6379(RedisModuleCommandDispatcher+0x43)[0x4a79a3]
./redis-server *:6379(call+0x140)[0x55b1d0]
./redis-server *:6379(processCommand+0xa54)[0x55c214]
./redis-server *:6379(processInputBuffer+0xe9)[0x53de99]
./redis-server *:6379(readQueryFromClient+0x338)[0x53e3c8]
./redis-server *:6379[0x45e2ca]
./redis-server *:6379[0x460a6e]
./redis-server *:6379(aeMain+0x109)[0x564859]
./redis-server *:6379(main+0x39a)[0x450bea]
/lib64/libc.so.6(__libc_start_main+0xf3)[0x7f34193ef493]
./redis-server *:6379(_start+0x2e)[0x45131e]

------ REGISTERS ------
89654:M 08 Oct 2023 06:09:15.560 #
RAX:0000000000000000 RBX:0000000000000006
RCX:00007f341940337f RDX:0000000000000000
RDI:0000000000000002 RSI:00007ffe0b491470
RBP:00007f3419556698 RSP:00007ffe0b491470
R8 :0000000000000000 R9 :00007ffe0b491470
R10:0000000000000008 R11:0000000000000246
R12:00007f3418348fb0 R13:00007f3418349068
R14:00000000000000c3 R15:00007f3418c70420
RIP:00007f341940337f EFL:0000000000000246
CSGSFS:002b000000000033
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147f) -> 0000000000000000
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147e) -> 0000000000000000
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147d) -> 0000000000000000
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147c) -> 00000000011a39cc
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147b) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147a) -> 00000000011a39cc
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491479) -> 00000000011a3913
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491478) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491477) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491476) -> 00000000011a3905
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491475) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491474) -> 00000000fbad8000
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491473) -> 00007f34194454a7
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491472) -> 00007f3418c70420
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491471) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491470) -> 0000000000000000

------ INFO OUTPUT ------

Server

redis_version:7.2.1
redis_git_sha1:cc244370
redis_git_dirty:0
redis_build_id:a595560e21015e74
redis_mode:standalone
os:Linux 4.18.0-348.7.1.el8_5.x86_64 x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:c11-builtin
gcc_version:8.5.0
process_id:89654
process_supervised:no
run_id:6433d781d25f5024537e4ceb314f4f1d07174736
tcp_port:6379
server_time_usec:1696759755559414
uptime_in_seconds:895
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:2260939
executable:/ida/redis-stack-server-7.2.0-v2/bin/./redis-server
config_file:
io_threads_active:0
listener0:name=tcp,bind=,bind=-::,port=6379

Clients

connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:20480
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0
total_blocking_keys:0
total_blocking_keys_on_nokey:0

Memory

used_memory:1156664
used_memory_human:1.10M
used_memory_rss:13881344
used_memory_rss_human:13.24M
used_memory_peak:1351896
used_memory_peak_human:1.29M
used_memory_peak_perc:85.56%
used_memory_overhead:951656
used_memory_startup:928928
used_memory_dataset:205008
used_memory_dataset_perc:90.02%
allocator_allocated:1606704
allocator_active:1839104
allocator_resident:4907008
total_system_memory:16573603840
total_system_memory_human:15.44G
used_memory_lua:31744
used_memory_vm_eval:31744
used_memory_lua_human:31.00K
used_memory_scripts_eval:0
number_of_cached_scripts:0
number_of_functions:0
number_of_libraries:0
used_memory_vm_functions:32768
used_memory_vm_total:64512
used_memory_vm_total_human:63.00K
used_memory_functions:184
used_memory_scripts:184
used_memory_scripts_human:184B
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:1.14
allocator_frag_bytes:232400
allocator_rss_ratio:2.67
allocator_rss_bytes:3067904
rss_overhead_ratio:2.83
rss_overhead_bytes:8974336
mem_fragmentation_ratio:12.03
mem_fragmentation_bytes:12727216
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_total_replication_buffers:0
mem_clients_slaves:0
mem_clients_normal:22400
mem_cluster_links:0
mem_aof_buffer:0
mem_allocator:jemalloc-5.3.0
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0

Persistence

loading:0
async_loading:0
current_cow_peak:0
current_cow_size:0
current_cow_size_age:0
current_fork_perc:0.00
current_save_keys_processed:0
current_save_keys_total:0
rdb_changes_since_last_save:50
rdb_bgsave_in_progress:0
rdb_last_save_time:1696758860
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_saves:0
rdb_last_cow_size:0
rdb_last_load_keys_expired:0
rdb_last_load_keys_loaded:2
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_rewrites:0
aof_rewrites_consecutive_failures:0
aof_last_write_status:ok
aof_last_cow_size:0
module_fork_in_progress:0
module_fork_last_cow_size:0

Stats

total_connections_received:3
total_commands_processed:89
instantaneous_ops_per_sec:0
total_net_input_bytes:5143
total_net_output_bytes:623519
total_net_repl_input_bytes:0
total_net_repl_output_bytes:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
instantaneous_input_repl_kbps:0.00
instantaneous_output_repl_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:8
evicted_keys:0
evicted_clients:0
total_eviction_exceeded_time:0
current_eviction_exceeded_time:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
pubsubshard_channels:0
latest_fork_usec:0
total_forks:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
total_active_defrag_time:0
current_active_defrag_time:0
tracking_total_keys:0
tracking_total_items:0
tracking_total_prefixes:0
unexpected_error_replies:0
total_error_replies:1
dump_payload_sanitizations:0
total_reads_processed:93
total_writes_processed:96
io_threaded_reads_processed:0
io_threaded_writes_processed:0
reply_buffer_shrinks:3
reply_buffer_expands:0
eventloop_cycles:10443
eventloop_duration_sum:690677
eventloop_duration_cmd_sum:3189
instantaneous_eventloop_cycles_per_sec:10
instantaneous_eventloop_duration_usec:66
acl_access_denied_auth:0
acl_access_denied_cmd:0
acl_access_denied_key:0
acl_access_denied_channel:0

Replication

role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:cc698a37ce4d31daed6c88336761552ce1cbff62
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

CPU

used_cpu_sys:0.129024
used_cpu_user:0.630906
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000
used_cpu_sys_main_thread:0.134329
used_cpu_user_main_thread:0.624881

Modules

module:name=tairhash,ver=1,api=1,filters=0,usedby=[],using=[],options=[]

Commandstats

cmdstat_exhget:calls=3,usec=42,usec_per_call=14.00,rejected_calls=0,failed_calls=0
cmdstat_exhset:calls=23,usec=586,usec_per_call=25.48,rejected_calls=0,failed_calls=0
cmdstat_exhgetall:calls=13,usec=147,usec_per_call=11.31,rejected_calls=0,failed_calls=0
cmdstat_memory|usage:calls=46,usec=307,usec_per_call=6.67,rejected_calls=0,failed_calls=0
cmdstat_command|docs:calls=3,usec=2102,usec_per_call=700.67,rejected_calls=0,failed_calls=0
cmdstat_keys:calls=1,usec=5,usec_per_call=5.00,rejected_calls=0,failed_calls=0

Errorstats

errorstat_ERR:count=1

Latencystats

latency_percentiles_usec_exhget:p50=8.031,p99=27.007,p99.9=27.007
latency_percentiles_usec_exhset:p50=16.063,p99=87.039,p99.9=87.039
latency_percentiles_usec_exhgetall:p50=12.031,p99=14.015,p99.9=14.015
latency_percentiles_usec_memory|usage:p50=6.015,p99=27.007,p99.9=27.007
latency_percentiles_usec_command|docs:p50=704.511,p99=811.007,p99.9=811.007
latency_percentiles_usec_keys:p50=5.023,p99=5.023,p99.9=5.023

Cluster

cluster_enabled:0

Keyspace

db0:keys=2,expires=0,avg_ttl=0

------ CLIENT LIST OUTPUT ------
id=8 addr=127.0.0.1:56550 laddr=127.0.0.1:6379 fd=8 name= age=74 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=78 qbuf-free=20396 argv-mem=55 multi-mem=0 rbs=1024 rbp=6 obl=0 oll=0 omem=0 tot-mem=22479 events=r cmd=exhget user=default redir=-1 resp=2 lib-name= lib-ver=

------ CURRENT CLIENT INFO ------
id=8 addr=127.0.0.1:56550 laddr=127.0.0.1:6379 fd=8 name= age=74 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=78 qbuf-free=20396 argv-mem=55 multi-mem=0 rbs=1024 rbp=6 obl=0 oll=0 omem=0 tot-mem=22479 events=r cmd=exhget user=default redir=-1 resp=2 lib-name= lib-ver=
argc: '3'
argv[0]: '"exhget"'
argv[1]: '"us:123456"'
argv[2]: '"session:00022580259e42a699bc241c8e537803"'
89654:M 08 Oct 2023 06:09:15.560 # key 'us:123456' found in DB containing the following object:
89654:M 08 Oct 2023 06:09:15.560 # Object type: 5
89654:M 08 Oct 2023 06:09:15.560 # Object encoding: 0
89654:M 08 Oct 2023 06:09:15.560 # Object refcount: 1

------ EXECUTING CLIENT INFO ------
id=8 addr=127.0.0.1:56550 laddr=127.0.0.1:6379 fd=8 name= age=74 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=78 qbuf-free=20396 argv-mem=55 multi-mem=0 rbs=1024 rbp=6 obl=0 oll=0 omem=0 tot-mem=22479 events=r cmd=exhget user=default redir=-1 resp=2 lib-name= lib-ver=
argc: '3'
argv[0]: '"exhget"'
argv[1]: '"us:123456"'
argv[2]: '"session:00022580259e42a699bc241c8e537803"'
89654:M 08 Oct 2023 06:09:15.560 # key 'us:123456' found in DB containing the following object:
89654:M 08 Oct 2023 06:09:15.560 # Object type: 5
89654:M 08 Oct 2023 06:09:15.560 # Object encoding: 0
89654:M 08 Oct 2023 06:09:15.560 # Object refcount: 1

------ MODULES INFO OUTPUT ------

tairhash_Statistics

tairhash_active_expire_enable:1
tairhash_active_expire_period:1000
tairhash_active_expire_keys_per_loop:1000
tairhash_active_expire_dbs_per_loop:16
tairhash_active_expire_last_time_msec:0
tairhash_active_expire_max_time_msec:1
tairhash_active_expire_avg_time_msec:0
tairhash_passive_expire_keys_per_loop:3

tairhash_ActiveExpiredFields

tairhash_db0:42

tairhash_PassiveExpiredFields

tairhash_db0:0

------ CONFIG DEBUG OUTPUT ------
io-threads 1
repl-diskless-load disabled
activedefrag no
lazyfree-lazy-user-flush no
lazyfree-lazy-eviction no
repl-diskless-sync yes
client-query-buffer-limit 1gb
lazyfree-lazy-user-del no
lazyfree-lazy-expire no
slave-read-only yes
proto-max-bulk-len 512mb
replica-read-only yes
lazyfree-lazy-server-del no
list-compress-depth 0
io-threads-do-reads no
sanitize-dump-payload no

------ FAST MEMORY TEST ------
89654:M 08 Oct 2023 06:09:15.560 # Bio worker thread #0 terminated
89654:M 08 Oct 2023 06:09:15.561 # Bio worker thread #1 terminated
89654:M 08 Oct 2023 06:09:15.561 # Bio worker thread #2 terminated
*** Preparing to test memory region 8eb000 (2273280 bytes)
*** Preparing to test memory region 1171000 (270336 bytes)
*** Preparing to test memory region 7f3410000000 (135168 bytes)
*** Preparing to test memory region 7f3415367000 (2621440 bytes)
*** Preparing to test memory region 7f3415800000 (8388608 bytes)
*** Preparing to test memory region 7f3416000000 (2097152 bytes)
*** Preparing to test memory region 7f3416334000 (8388608 bytes)
*** Preparing to test memory region 7f3416b35000 (8388608 bytes)
*** Preparing to test memory region 7f3417336000 (8388608 bytes)
*** Preparing to test memory region 7f3417b37000 (8388608 bytes)
*** Preparing to test memory region 7f3418551000 (8192 bytes)
*** Preparing to test memory region 7f3418800000 (8388608 bytes)
*** Preparing to test memory region 7f34193cb000 (4096 bytes)
*** Preparing to test memory region 7f341978d000 (16384 bytes)
*** Preparing to test memory region 7f34199ad000 (16384 bytes)
*** Preparing to test memory region 7f3419e95000 (20480 bytes)
*** Preparing to test memory region 7f341a12d000 (4096 bytes)
*** Preparing to test memory region 7f341aad5000 (32768 bytes)
*** Preparing to test memory region 7f341aae0000 (4096 bytes)
.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O
Fast memory test PASSED, however your memory can still be broken. Please run a memory test for several hours if possible.

------ DUMPING CODE AROUND EIP ------
Symbol: gsignal (base: 0x7f3419403270)
Module: /lib64/libc.so.6 (base 0x7f34193cc000)
$ xxd -r -p /tmp/dump.hex /tmp/dump.bin
$ objdump --adjust-vma=0x7f3419403270 -D -b binary -m i386:x86-64 /tmp/dump.bin

89654:M 08 Oct 2023 06:09:15.731 # dump of function (hexdump of 399 bytes):
f30f1efa5349c7c0ffffffff89fb41ba0800000031ff4881ec1001000064488b042528000000488984240801000031c04989e148b8ffffff7ffeffffff4c8984248800000048898424800000004c89ca488db42480000000b80e0000004c898424900000004c898424980000004c898424a00000004c898424a80000004c898424b00000004c898424b80000004c898424c00000004c898424c80000004c898424d00000004c898424d80000004c898424e00000004c898424e80000004c898424f00000004c898424f80000000f05b92700000089c80f054889c7b8ba0000000f0589c689dab8ea0000000f05483d00f0ffff773b4189c041ba0800000031d24c89cebf02000000b80e0000000f05488b8c24080100006448330c25280000004489c075194881c4100100005bc36690488b15c17a3800f7d8648902ebbae8dd5f0d00662e0f1f8400000000000f1f00f30f1efa85ff7808f7dfe9a102000090488b05917a380064c70016000000b8ffffffffc3662e0f1f84000000000066909066662e0f1f8400000000000f1f40
Function at 0x7f34194d9390 is __stack_chk_fail

=== REDIS BUG REPORT END. Make sure to include from START to END. ===

   Please report the crash by opening an issue on github:

       http://github.com/redis/redis/issues

If a Redis module was involved, please open in the module's repo instead.

Suspect RAM error? Use redis-server --test-memory to verify it.

Additional information

  1. OS distribution and version :centos8
  2. Steps to reproduce (if any)
    首先连续给 us:123456 这个key添加field,并这是过期时间
    exhset us:123456 session:00022580259e42a699bc241c8e537800 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537801 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537801 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537801 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537801 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537801 "" EX 120

[CRASH] 在redis6.2.12中偶现崩溃

=== REDIS BUG REPORT START: Cut & paste starting from here ===
20232:M 19 Jun 2023 17:16:19.484 # Redis 6.2.12 crashed by signal: 11, si_code: 128
20232:M 19 Jun 2023 17:16:19.484 # Accessing address: (nil)
20232:M 19 Jun 2023 17:16:19.484 # Crashed running the instruction at: 0x7febea236891

------ STACK TRACE ------
EIP:
/usr/local/redis/bin/module/tair_hash.so(+0x1891)[0x7febea236891]

Backtrace:
/lib64/libpthread.so.0(+0xf630)[0x7febe9727630]
/usr/local/redis/bin/module/tair_hash.so(+0x1891)[0x7febea236891]
/usr/local/redis/bin/module/tair_hash.so(+0x532f)[0x7febea23a32f]
/usr/local/redis/bin/redis-server 0.0.0.0:6379(RedisModuleCommandDispatcher+0x4e)[0x4c201e]
/usr/local/redis/bin/redis-server 0.0.0.0:6379(call+0xd5)[0x43ac95]
/usr/local/redis/bin/redis-server 0.0.0.0:6379(processCommand+0x57d)[0x43c8dd]
/usr/local/redis/bin/redis-server 0.0.0.0:6379(processInputBuffer+0xf3)[0x44f6b3]
/usr/local/redis/bin/redis-server 0.0.0.0:6379[0x4e2878]
/usr/local/redis/bin/redis-server 0.0.0.0:6379(aeProcessEvents+0x292)[0x433b42]
/usr/local/redis/bin/redis-server 0.0.0.0:6379(aeMain+0x1d)[0x433dad]
/usr/local/redis/bin/redis-server 0.0.0.0:6379(main+0x311)[0x430031]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7febe936c555]
/usr/local/redis/bin/redis-server 0.0.0.0:6379[0x4304f9]

------ REGISTERS ------
20232:M 19 Jun 2023 17:16:19.485 #
RAX:00007febea24f5e0 RBX:0000000000000002
RCX:0000000000000020 RDX:00007febea23ed91
RDI:00007febd6fd0960 RSI:00007febd6fd0960
RBP:0000000000000000 RSP:00007ffcab943910
R8 :0000000000000010 R9 :ffffffffffffffff
R10:00007febea251778 R11:0000000000000080
R12:0000000000000001 R13:00007febd5b98080
R14:00007febd5c2d140 R15:653a5f5f6e6f6974
RIP:00007febea236891 EFL:0000000000010202
CSGSFS:0000000000000033
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab94391f) -> 00007ffcab943a5f
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab94391e) -> 0000000000000006
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab94391d) -> 00007febea23a32f
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab94391c) -> 00007febd698cbb0
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab94391b) -> 00007ffcab943a10
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab94391a) -> 0005fe77fcce2319
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943919) -> 00007febd5c2d140
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943918) -> 00007febd6006ac0
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943917) -> 00007febea236740
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943916) -> 00007febe91531e0
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943915) -> 00007febd698ba40
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943914) -> 00007febd5add500
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943913) -> 00007febd5b995b0
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943912) -> 00000000e915c538
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943911) -> 00007ffcab943a10
20232:M 19 Jun 2023 17:16:19.485 # (00007ffcab943910) -> 00007febe915f538

------ INFO OUTPUT ------

Server

redis_version:6.2.12
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:2f403e6148073f44
redis_mode:standalone
os:Linux 3.10.0-1160.90.1.el7.x86_64 x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:c11-builtin
gcc_version:10.2.1
process_id:20232
process_supervised:no
run_id:511d833fcf6ecca6c8f1971421f98e4e7a9766ef
tcp_port:6379
server_time_usec:1687166179484441
uptime_in_seconds:66
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:9444579
executable:/usr/local/redis/bin/redis-server
config_file:/usr/local/redis/bin/redis.conf
io_threads_active:0

Clients

connected_clients:3
cluster_connections:0
maxclients:99968
client_recent_max_input_buffer:41000
client_recent_max_output_buffer:48
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0

Memory

used_memory:100874768
used_memory_human:96.20M
used_memory_rss:112099328
used_memory_rss_human:106.91M
used_memory_peak:105685112
used_memory_peak_human:100.79M
used_memory_peak_perc:95.45%
used_memory_overhead:10460936
used_memory_startup:6259984
used_memory_dataset:90413832
used_memory_dataset_perc:95.56%
allocator_allocated:101258952
allocator_active:101863424
allocator_resident:110850048
total_system_memory:33020231680
total_system_memory_human:30.75G
used_memory_lua:63488
used_memory_lua_human:62.00K
used_memory_scripts:6056
used_memory_scripts_human:5.91K
number_of_cached_scripts:17
maxmemory:26843545600
maxmemory_human:25.00G
maxmemory_policy:noeviction
allocator_frag_ratio:1.01
allocator_frag_bytes:604472
allocator_rss_ratio:1.09
allocator_rss_bytes:8986624
rss_overhead_ratio:1.01
rss_overhead_bytes:1249280
mem_fragmentation_ratio:1.11
mem_fragmentation_bytes:11226960
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_clients_slaves:0
mem_clients_normal:61544
mem_aof_buffer:0
mem_allocator:jemalloc-5.1.0
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0

Persistence

loading:0
current_cow_size:0
current_cow_size_age:0
current_fork_perc:0.00
current_save_keys_processed:0
current_save_keys_total:0
rdb_changes_since_last_save:1802
rdb_bgsave_in_progress:0
rdb_last_save_time:1687166174
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:10690560
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0
module_fork_in_progress:0
module_fork_last_cow_size:0

Stats

total_connections_received:4598
total_commands_processed:38722
instantaneous_ops_per_sec:884
total_net_input_bytes:5400871
total_net_output_bytes:637803
instantaneous_input_kbps:112.54
instantaneous_output_kbps:8.84
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:1
expired_stale_perc:0.00
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:2
evicted_keys:0
keyspace_hits:150167
keyspace_misses:5733
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:3294
total_forks:1
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
tracking_total_keys:0
tracking_total_items:0
tracking_total_prefixes:0
unexpected_error_replies:0
total_error_replies:68
dump_payload_sanitizations:0
total_reads_processed:39110
total_writes_processed:34455
io_threaded_reads_processed:0
io_threaded_writes_processed:0

Replication

role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:fc9ad30fb2308a46f3e3172a962462d395ce25aa
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

CPU

used_cpu_sys:0.460402
used_cpu_user:0.842212
used_cpu_sys_children:0.047405
used_cpu_user_children:0.263251
used_cpu_sys_main_thread:0.458837
used_cpu_user_main_thread:0.838200

Modules

module:name=tairzset,ver=1,api=1,filters=0,usedby=[],using=[],options=[]
module:name=exstrtype,ver=1,api=1,filters=0,usedby=[],using=[],options=[]
module:name=search,ver=20610,api=1,filters=0,usedby=[],using=[],options=[handle-io-errors]
module:name=tairhash,ver=1,api=1,filters=0,usedby=[],using=[],options=[]

Commandstats

cmdstat_hdel:calls=2,usec=10,usec_per_call=5.00,rejected_calls=0,failed_calls=0
cmdstat_zrange:calls=330,usec=1112,usec_per_call=3.37,rejected_calls=0,failed_calls=33
cmdstat_exzrevrange:calls=103,usec=2395,usec_per_call=23.25,rejected_calls=0,failed_calls=0
cmdstat_hexists:calls=1,usec=1,usec_per_call=1.00,rejected_calls=0,failed_calls=0
cmdstat_exhkeys:calls=92,usec=219,usec_per_call=2.38,rejected_calls=0,failed_calls=0
cmdstat_sadd:calls=1,usec=3,usec_per_call=3.00,rejected_calls=0,failed_calls=0
cmdstat_ping:calls=6,usec=3,usec_per_call=0.50,rejected_calls=0,failed_calls=0
cmdstat_expire:calls=4114,usec=4185,usec_per_call=1.02,rejected_calls=0,failed_calls=0
cmdstat_zadd:calls=4115,usec=12736,usec_per_call=3.10,rejected_calls=0,failed_calls=0
cmdstat_scan:calls=228,usec=150756,usec_per_call=661.21,rejected_calls=0,failed_calls=0
cmdstat_del:calls=5107,usec=12174,usec_per_call=2.38,rejected_calls=0,failed_calls=0
cmdstat_select:calls=4595,usec=1009,usec_per_call=0.22,rejected_calls=0,failed_calls=0
cmdstat_info:calls=5,usec=294,usec_per_call=58.80,rejected_calls=0,failed_calls=0
cmdstat_hmset:calls=1,usec=7,usec_per_call=7.00,rejected_calls=0,failed_calls=0
cmdstat_exists:calls=3,usec=3,usec_per_call=1.00,rejected_calls=0,failed_calls=0
cmdstat_ltrim:calls=198,usec=71,usec_per_call=0.36,rejected_calls=0,failed_calls=0
cmdstat_exzadd:calls=33,usec=2872,usec_per_call=87.03,rejected_calls=0,failed_calls=0
cmdstat_set:calls=1418,usec=8012,usec_per_call=5.65,rejected_calls=0,failed_calls=0
cmdstat_exzcard:calls=24,usec=41,usec_per_call=1.71,rejected_calls=0,failed_calls=0
cmdstat_zrem:calls=1,usec=5,usec_per_call=5.00,rejected_calls=0,failed_calls=0
cmdstat_zinterstore:calls=55,usec=6259,usec_per_call=113.80,rejected_calls=0,failed_calls=0
cmdstat_zrevrange:calls=5494,usec=12431,usec_per_call=2.26,rejected_calls=0,failed_calls=0
cmdstat_hlen:calls=13,usec=29,usec_per_call=2.23,rejected_calls=0,failed_calls=0
cmdstat_hget:calls=270,usec=784,usec_per_call=2.90,rejected_calls=0,failed_calls=0
cmdstat_exhset:calls=56,usec=1717,usec_per_call=30.66,rejected_calls=0,failed_calls=0
cmdstat_type:calls=15,usec=52,usec_per_call=3.47,rejected_calls=0,failed_calls=0
cmdstat_ttl:calls=17,usec=47,usec_per_call=2.76,rejected_calls=0,failed_calls=0
cmdstat_hgetall:calls=329,usec=1216,usec_per_call=3.70,rejected_calls=1,failed_calls=0
cmdstat_hvals:calls=66,usec=60,usec_per_call=0.91,rejected_calls=0,failed_calls=0
cmdstat_get:calls=867,usec=1038,usec_per_call=1.20,rejected_calls=0,failed_calls=0
cmdstat_zrangebyscore:calls=616,usec=1276,usec_per_call=2.07,rejected_calls=0,failed_calls=0
cmdstat_smembers:calls=90,usec=476,usec_per_call=5.29,rejected_calls=0,failed_calls=0
cmdstat_eval:calls=2189,usec=43351,usec_per_call=19.80,rejected_calls=0,failed_calls=33
cmdstat_lrange:calls=198,usec=209,usec_per_call=1.06,rejected_calls=0,failed_calls=0
cmdstat_hset:calls=1,usec=14,usec_per_call=14.00,rejected_calls=0,failed_calls=0
cmdstat_client:calls=3,usec=5,usec_per_call=1.67,rejected_calls=0,failed_calls=0
cmdstat_hscan:calls=13,usec=130,usec_per_call=10.00,rejected_calls=0,failed_calls=0
cmdstat_scard:calls=159,usec=395,usec_per_call=2.48,rejected_calls=0,failed_calls=0
cmdstat_zremrangebyrank:calls=1,usec=3,usec_per_call=3.00,rejected_calls=0,failed_calls=0
cmdstat_zcard:calls=186,usec=280,usec_per_call=1.51,rejected_calls=0,failed_calls=0
cmdstat_srem:calls=1,usec=3,usec_per_call=3.00,rejected_calls=0,failed_calls=0
cmdstat_zremrangebyscore:calls=649,usec=987,usec_per_call=1.52,rejected_calls=0,failed_calls=0
cmdstat_spop:calls=2457,usec=2409,usec_per_call=0.98,rejected_calls=0,failed_calls=0
cmdstat_exhdelrepl:calls=1,usec=4,usec_per_call=4.00,rejected_calls=0,failed_calls=0
cmdstat_sscan:calls=1,usec=5,usec_per_call=5.00,rejected_calls=0,failed_calls=0
cmdstat_auth:calls=4598,usec=8298,usec_per_call=1.80,rejected_calls=0,failed_calls=0

Errorstats

errorstat_ERR:count=34
errorstat_LOADING:count=1
errorstat_WRONGTYPE:count=33

Cluster

cluster_enabled:0

Keyspace

db0:keys=75515,expires=1780,avg_ttl=5838460898
db5:keys=8,expires=0,avg_ttl=0
db6:keys=90,expires=0,avg_ttl=0

------ CLIENT LIST OUTPUT ------
id=154 addr=172.16.183.135:44085 laddr=172.16.183.139:6379 fd=7 name=redisinsight-cli-30f24486 age=64 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=73 qbuf-free=40881 argv-mem=32 obl=0 oll=0 omem=0 tot-mem=61520 events=r cmd=exhset user=default redir=-1
id=155 addr=172.16.183.135:44087 laddr=172.16.183.139:6379 fd=9 name=redisinsight-browser-b425b0be age=64 idle=64 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20512 events=r cmd=client user=default redir=-1
id=11 addr=172.16.183.135:44083 laddr=172.16.183.139:6379 fd=10 name=120.55.39.163@10006 age=65 idle=5 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=0 oll=0 omem=0 tot-mem=20496 events=r cmd=ping user=default redir=-1

------ CURRENT CLIENT INFO ------
id=154 addr=172.16.183.135:44085 laddr=172.16.183.139:6379 fd=7 name=redisinsight-cli-30f24486 age=64 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=73 qbuf-free=40881 argv-mem=32 obl=0 oll=0 omem=0 tot-mem=61520 events=r cmd=exhset user=default redir=-1
argv[0]: 'exhset'
argv[1]: 'rroom_demotion'
argv[2]: '1049_1'
argv[3]: 'abc'
argv[4]: 'EX'
argv[5]: '0'
20232:M 19 Jun 2023 17:16:19.486 # key 'rroom_demotion' found in DB containing the following object:
20232:M 19 Jun 2023 17:16:19.486 # Object type: 5
20232:M 19 Jun 2023 17:16:19.486 # Object encoding: 0
20232:M 19 Jun 2023 17:16:19.486 # Object refcount: 1

------ MODULES INFO OUTPUT ------

search_version

search_version:2.6.10
search_redis_version:6.2.12 - oss

search_index

search_number_of_indexes:0

search_fields_statistics

search_dialect_statistics

search_dialect_1:0
search_dialect_2:0
search_dialect_3:0

search_runtime_configurations

search_concurrent_mode:OFF
search_enableGC:ON
search_minimal_term_prefix:2
search_maximal_prefix_expansions:200
search_query_timeout_ms:500
search_timeout_policy:return
search_cursor_read_size:1000
search_cursor_max_idle_time:300000
search_max_doc_table_size:1000000
search_max_search_results:1000000
search_max_aggregate_results:-1
search_search_pool_size:20
search_index_pool_size:8
search_gc_scan_size:100
search_min_phonetic_term_length:3

------ FAST MEMORY TEST ------
20232:M 19 Jun 2023 17:16:19.486 # Bio thread for job type #0 terminated
20232:M 19 Jun 2023 17:16:19.486 # Bio thread for job type #1 terminated
20232:M 19 Jun 2023 17:16:19.486 # Bio thread for job type #2 terminated
20232:M 19 Jun 2023 17:16:19.486 # IO thread(tid:140651036468992) terminated
20232:M 19 Jun 2023 17:16:19.486 # IO thread(tid:140651028076288) terminated
20232:M 19 Jun 2023 17:16:19.486 # IO thread(tid:140651019683584) terminated
20232:M 19 Jun 2023 17:16:19.486 # IO thread(tid:140651011290880) terminated
20232:M 19 Jun 2023 17:16:19.486 # IO thread(tid:140651002898176) terminated
20232:M 19 Jun 2023 17:16:19.486 # IO thread(tid:140650994505472) terminated
20232:M 19 Jun 2023 17:16:19.486 # IO thread(tid:140650986112768) terminated
*** Preparing to test memory region 5f8000 (446464 bytes)
*** Preparing to test memory region 10fa000 (135168 bytes)
*** Preparing to test memory region 111b000 (135168 bytes)
*** Preparing to test memory region 7febd4f00000 (95420416 bytes)
*** Preparing to test memory region 7febdab07000 (6291456 bytes)
*** Preparing to test memory region 7febdb108000 (8388608 bytes)
*** Preparing to test memory region 7febdb909000 (8388608 bytes)
*** Preparing to test memory region 7febdc10a000 (8388608 bytes)
*** Preparing to test memory region 7febdc90b000 (8388608 bytes)
*** Preparing to test memory region 7febdd10c000 (8388608 bytes)
*** Preparing to test memory region 7febe0913000 (8388608 bytes)
*** Preparing to test memory region 7febe1114000 (8388608 bytes)
*** Preparing to test memory region 7febe1fb7000 (24576 bytes)
*** Preparing to test memory region 7febe1fbd000 (9437184 bytes)
*** Preparing to test memory region 7febe8e00000 (4194304 bytes)
*** Preparing to test memory region 7febe9713000 (20480 bytes)
*** Preparing to test memory region 7febe9930000 (16384 bytes)
*** Preparing to test memory region 7febea250000 (4096 bytes)
*** Preparing to test memory region 7febea251000 (20480 bytes)
*** Preparing to test memory region 7febea261000 (4096 bytes)
*** Preparing to test memory region 7febea262000 (4096 bytes)
*** Preparing to test memory region 7febea265000 (4096 bytes)
.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O
Fast memory test PASSED, however your memory can still be broken. Please run a memory test for several hours if possible.

[CRASH]CentOS Linux release 7.7.1908 redis6.0.16, bits=64 MODULE LOAD tairhash_module.so crash

1:M 14 Aug 2023 00:19:56.677 # Redis 6.0.16 crashed by signal: 4, si_code: 2
1:M 14 Aug 2023 00:19:56.677 # Crashed running the instruction at: 0x7f188bb82777
1:M 14 Aug 2023 00:19:56.677 # Failed assertion: (:0)

------ STACK TRACE ------
EIP:
/etc/module/tairhash_module.so(RedisModule_OnLoad+0x1757)[0x7f188bb82777]

Backtrace:
redis-server 0.0.0.0:6379(logStackTrace+0x48)[0x55d4cbe1f4d8]
redis-server 0.0.0.0:6379(sigsegvHandler+0xb8)[0x55d4cbe1fc98]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x14140)[0x7f188bd71140]
/etc/module/tairhash_module.so(RedisModule_OnLoad+0x1757)[0x7f188bb82777]
redis-server 0.0.0.0:6379(moduleLoad+0xbd)[0x55d4cbe579ad]
redis-server 0.0.0.0:6379(moduleLoadFromQueue+0x33)[0x55d4cbe57b63]
redis-server 0.0.0.0:6379(main+0x3d9)[0x55d4cbdc9279]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xea)[0x7f188bbbed0a]
redis-server 0.0.0.0:6379(_start+0x2a)[0x55d4cbdc965a]

------ INFO OUTPUT ------

Server

redis_version:6.0.16
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:6638dc9cf51cfff0
redis_mode:standalone
os:Linux 3.10.0-1062.18.1.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:10.2.1
process_id:1
run_id:53ebba1f2644ad1805f8384eb7eb982851a8b4fb
tcp_port:6379
uptime_in_seconds:0
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:14250796
executable:/redis-server
config_file:/opt/bitnami/redis/etc/redis.conf
io_threads_active:0

Clients

connected_clients:0
client_recent_max_input_buffer:0
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0

Memory

used_memory:796408
used_memory_human:777.74K
used_memory_rss:0
used_memory_rss_human:0B
used_memory_peak:796408
used_memory_peak_human:777.74K
used_memory_peak_perc:inf%
used_memory_overhead:0
used_memory_startup:0
used_memory_dataset:796408
used_memory_dataset_perc:100.00%
allocator_allocated:0
allocator_active:0
allocator_resident:0
total_system_memory:20864339968
total_system_memory_human:19.43G
used_memory_lua:37888
used_memory_lua_human:37.00K
used_memory_scripts:0
used_memory_scripts_human:0B
number_of_cached_scripts:0
maxmemory:0
maxmemory_human:0B
maxmemory_policy:volatile-ttl
allocator_frag_ratio:-nan
allocator_frag_bytes:0
allocator_rss_ratio:-nan
allocator_rss_bytes:0
rss_overhead_ratio:-nan
rss_overhead_bytes:0
mem_fragmentation_ratio:-nan
mem_fragmentation_bytes:0
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_clients_slaves:0
mem_clients_normal:0
mem_aof_buffer:0
mem_allocator:jemalloc-5.1.0
active_defrag_running:0
lazyfree_pending_objects:0

Persistence

loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1691972396
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:0
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0
module_fork_in_progress:0
module_fork_last_cow_size:0

Stats

total_connections_received:0
total_commands_processed:0
instantaneous_ops_per_sec:0
total_net_input_bytes:0
total_net_output_bytes:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
tracking_total_keys:0
tracking_total_items:0
tracking_total_prefixes:0
unexpected_error_replies:0
total_reads_processed:0
total_writes_processed:0
io_threaded_reads_processed:0
io_threaded_writes_processed:0

Replication

role:master
connected_slaves:0
master_replid:6909177af8b5a8ad36f122f936751d4677043ccd
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

CPU

used_cpu_sys:0.132362
used_cpu_user:0.557527
used_cpu_sys_children:0.184218
used_cpu_user_children:1.442360

Modules

Commandstats

Cluster

cluster_enabled:0

Keyspace

------ CLIENT LIST OUTPUT ------

------ REGISTERS ------
1:M 14 Aug 2023 00:19:56.678 #
RAX:00007f188bb7a900 RBX:00007f188b6ef688
RCX:00007f188bb7a800 RDX:0000000000000000
RDI:00007fff27e699b0 RSI:00007f188bb8a3cd
RBP:00007fff27e699a0 RSP:00007fff27e698a0
R8 :00000000000000f0 R9 :00007f188b602cd0
R10:000000000000001d R11:00007f188bb927a8
R12:00007fff27e698c0 R13:00007f188bb8a32a
R14:00007f188b6ef688 R15:00007fff27e699b0
RIP:00007f188bb82777 EFL:0000000000010246
CSGSFS:0000000000000033
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698af) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698ae) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698ad) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698ac) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698ab) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698aa) -> 000055d4ccf887d0
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a9) -> 9da2631092d32200
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a8) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a7) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a6) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a5) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a4) -> 0000000000000004
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a3) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a2) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a1) -> 0000000000000000
1:M 14 Aug 2023 00:19:56.679 # (00007fff27e698a0) -> 0000000000000000

------ MODULES INFO OUTPUT ------

------ FAST MEMORY TEST ------
*** Preparing to test memory region 55d4cbf76000 (2277376 bytes)
*** Preparing to test memory region 55d4ccf21000 (548864 bytes)
*** Preparing to test memory region 7f188b200000 (8388608 bytes)
*** Preparing to test memory region 7f188bb92000 (24576 bytes)
*** Preparing to test memory region 7f188bd59000 (16384 bytes)
*** Preparing to test memory region 7f188bd7b000 (16384 bytes)
*** Preparing to test memory region 7f188c06f000 (16384 bytes)
*** Preparing to test memory region 7f188c250000 (8192 bytes)
*** Preparing to test memory region 7f188c280000 (4096 bytes)
.O.O.O.O.O.O.O.O.O
Fast memory test PASSED, however your memory can still be broken. Please run a memory test for several hours if possible.

------ DUMPING CODE AROUND EIP ------
Symbol: RedisModule_OnLoad (base: 0x7f188bb81020)
Module: /etc/module/tairhash_module.so (base 0x7f188bb77000)
$ xxd -r -p /tmp/dump.hex /tmp/dump.bin
$ objdump --adjust-vma=0x7f188bb81020 -D -b binary -m i386:x86-64 /tmp/dump.bin

1:M 14 Aug 2023 00:19:56.793 # dump of function (hexdump of 6103 bytes):
554889e541574989ff415641554c8d2df692000041544189d4534889f3488d35ec0a01004883e4e04881ecc000000064488b04252800000048898424b8000000488b07488d3de58200004889050f0d0100ffd0488d35d6080100488d3de0820000ff15f90c0100488d353a080100488d3ddf820000ff15e50c0100488d354e090100488d3ddc820000ff15d10c0100488d35ea060100488d3ddc820000ff15bd0c0100488d35960d0100488d3ddb820000ff15a90c0100488d35d2080100488d3de1820000ff15950c0100488d35f6060100488d3dea820000ff15810c0100488d358a0a0100488d3df3820000ff156d0c0100488d355e080100488d3df6820000ff15590c0100488d35a20c0100488d3d00830000ff15450c0100488d3586080100488d3db7980000ff15310c0100488d35ca0d0100488d3df3820000ff151d0c0100488d35460c0100488d3db7980000ff15090c0100488d354a0c0100488d3dc3980000ff15f50b0100488d35de050100488d3dcf980000ff15e10b0100488d356a080100488d3ddb980000ff15cd0b0100488d350e0b0100488d3daa820000ff15b90b0100488d35220b0100488d3db3820000ff15a50b0100488d35ae0b0100488d3dc7980000ff15910b0100488d351a0a0100488d3ddb980000ff157d0b0100488d35de0d0100488d3d93820000ff15690b0100488d354a0d0100488d3ddb980000ff15550b0100488d35a6090100488d3d85820000ff15410b0100488d35ca050100488d3dd3980000ff152d0b0100488d3526090100488d3d79820000ff15190b0100488d3522070100488d3d7f820000ff15050b0100488d358e080100488d3d80820000ff15f10a0100488d35720c0100488d3d80820000ff15dd0a0100488d3576070100488d3d81820000ff15c90a0100488d355a080100488d3d81820000ff15b50a0100488d35ee070100488d3d85820000ff15a10a0100488d3582090100488d3d86820000ff158d0a0100488d357e070100488d3d86820000ff15790a0100488d3512060100488d3d8f820000ff15650a0100488d35a60c0100488d3d17980000ff15510a0100488d3532060100488d3d82820000ff153d0a0100488d35a60c0100488d3d8b820000ff15290a0100488d3592040100488d3d88820000ff15150a0100488d35560b0100488d3d8f820000ff15010a0100488d35fa0a0100488d3d95820000ff15ed090100488d356e050100488d3d9e820000ff15d9090100488d35e20b0100488d3da4820000ff15c5090100488d35de070100488d3d97970000ff15b1090100488d355a050100488d3dab970000ff159d090100488d355e040100488d3db7970000ff1589090100488d35c20b0100488d3d70820000ff1575090100488d3526090100488d3db7970000ff1561090100488d35d2030100488d3dcb970000ff154d090100488d35d6080100488d3ddf970000ff1539090100488d35ba050100488d3df3970000ff1525090100488d356e040100488d3d07980000ff1511090100488d3532090100488d3d1b980000ff15fd080100488d351e0b0100488d3dfd810000ff15e9080100488d35320b0100488d3d00820000ff15d5080100488d3576090100488d3d05820000ff15c1080100488d3592030100488d3d08820000ff15ad080100488d3536040100488d3d0a820000ff1599080100488d354a090100488d3d14820000ff1585080100488d35ee080100488d3d16820000ff1571080100488d35b2060100488d3d18820000ff155d080100488d359e050100488d3d1a820000ff1549080100488d3542070100488d3d1c820000ff1535080100488d35b6060100488d3d23820000ff1521080100488d3552090100488d3d25820000ff150d080100488d351e020100488d3d27820000ff15f9070100488d3532080100488d3d2c820000ff15e5070100488d3546070100488d3d31820000ff15d1070100488d358a040100488d3d36820000ff15bd070100488d3506070100488d3d35820000ff15a9070100488d35c2080100488d3d37820000ff1595070100488d3576040100488d3d37820000ff1581070100488d35aa090100488d3d3a820000ff156d070100488d35c6030100488d3d3c820000ff1559070100488d358a040100488d3d3c820000ff1545070100488d35fe060100488d3d6f960000ff1531070100488d358a090100488d3d83960000ff151d070100488d35be050100488d3d97960000ff1509070100488d35da030100488d3da3960000ff15f5060100488d3586080100488d3daf960000ff15e1060100488d3512090100488d3dde810000ff15cd060100488d3506080100488d3de4810000ff15b9060100488d359a070100488d3d9b960000ff15a5060100488d3546020100488d3dd6810000ff1591060100488d3522030100488d3dd6810000ff157d060100488d35a6010100488d3dd6810000ff1569060100488d3552060100488d3dd8810000ff1555060100488d35be030100488d3d57960000ff1541060100488d3562020100488d3d63960000ff152d060100488d353e060100488d3d6f960000ff1519060100488d3552050100488d3d83960000ff1505060100488d35b6010100488d3d97960000ff15f1050100488d35f2060100488d3dab960000ff15dd050100488d3536050100488d3d65810000ff15c9050100488d35b2000100488d3da3960000ff15b5050100488d354e060100488d3d58810000ff15a1050100488d355a040100488d3d59810000ff158d050100488d3506070100488d3d8f960000ff1579050100488d351a030100488d3d49810000ff1565050100488d35e6040100488d3d8f960000ff1551050100488d35ca010100488d3d3d810000ff153d050100488d35ae010100488d3d3f810000ff1529050100488d35ca010100488d3d73960000ff1515050100488d3516030100488d3d7f960000ff1501050100488d356a060100488d3d1e810000ff15ed040100488d3566050100488d3d7f960000ff15d9040100488d3552020100488d3d14810000ff15c5040100488d35d6030100488d3d16810000ff15b1040100488d359a030100488d3d1f810000ff159d040100488d357eff0000488d3d29810000ff1589040100488d3552060100488d3d2e810000ff1575040100488d3566060100488d3d33810000ff1561040100488d355a010100488d3d36810000ff154d040100488d355e050100488d3d39810000ff1539040100488d35dafe0000488d3d3c810000ff1525040100488d355e000100488d3d45810000ff1511040100488d3512010100488d3d48810000ff15fd030100488d35eefd0000488d3d51810000ff15e9030100488d35f2000100488d3d54810000ff15d5030100488d3566fe0000488d3d57810000ff15c1030100488d35c2050100488d3d59810000ff15ad030100488d355e010100488d3d5b810000ff1599030100488d35c2010100488d3d62810000ff1585030100488d35fe020100488d3d37950000ff1571030100488d3502020100488d3d4b950000ff155d030100488d355efe0000488d3d41810000ff1549030100488d3512030100488d3d41810000ff1535030100488d353e020100488d3d3d810000ff1521030100488d3552020100488d3d40810000ff150d030100488d352e020100488d3d40810000ff15f9020100488d359a020100488d3dfb940000ff15e5020100488d357e020100488d3d35810000ff15d1020100488d3542030100488d3d3a810000ff15bd020100488d351efe0000488d3d3d810000ff15a9020100488d35cafc0000488d3d43810000ff1595020100488d35c6000100488d3d4c810000ff1581020100488d354aff0000488d3da3940000ff156d020100488d35b6000100488d3db7940000ff1559020100488d3562030100488d3d2d810000ff1545020100488d3556000100488d3db7940000ff1531020100488d3562fe0000488d3dcb940000ff151d020100488d357eff0000488d3d0b810000ff1509020100488d35b2fe0000488d3dcb940000ff15f5010100488d353eff0000488d3d01810000ff15e1010100488d357a000100488d3dc3940000ff15cd010100488d359efd0000488d3df2800000ff15b9010100488d35d2000100488d3dfc800000ff15a5010100488d3526020100488d3daf940000ff1591010100488d355a020100488d3df2800000ff157d010100488d356efc0000488d3dfc800000ff1569010100488d35d2ff0000488d3dff800000ff1555010100488d350e030100488d3d00810000ff1541010100488d354afb0000488d3d01810000ff152d010100488d3516020100488d3d02810000ff1519010100488d357afd0000488d3d07810000ff1505010100488d3536010100488d3d07810000ff15f1000100488d357a020100488d3d0b810000ff15dd000100488d35c6fc0000488d3d0c810000ff15c9000100488d35bafe0000488d3d0c810000ff15b5000100488d355e010100488d3d0d810000ff15a1000100488d359afb0000488d3dd3930000ff158d000100488d35e6000100488d3df9800000ff1579000100488d35b2fa0000488d3d03810000ff1565000100488d3586fe0000488d3db7930000ff1551000100488d35b2010100488d3dc3930000ff153d000100488d355e010100488d3de4800000ff1529000100488d35ca010100488d3de6800000ff1515000100488d35ee010100488d3de8800000ff1501000100488d353afb0000488d3de9800000ff15edff0000488d355eff0000488d3dea800000ff15d9ff0000488d356a000100488d3dee800000ff15c5ff0000488d3516000100488d3df3800000ff15b1ff0000488d3522fe0000488d3dfc800000ff159dff0000488d351efd0000488d3d2f930000ff1589ff0000488d35da000100488d3def800000ff1575ff0000488d3536ff0000488d3d27930000ff1561ff0000488d357aff0000488d3d33930000ff154dff0000488d3556fa0000488d3d3f930000ff1539ff0000488d3552fc0000488d3d4b930000ff1525ff0000488d35d6000100488d3d5f930000ff1511ff0000488d3522fc0000488d3d94800000ff15fdfe0000488d35aefb0000488d3d9a800000ff15e9fe0000488d357afe0000488d3d4b930000ff15d5fe0000488d35a6fd0000488d3d57930000ff15c1fe0000488d35dafa0000488d3d63930000ff15adfe0000488d3546f90000488d3d77930000ff1599fe0000488d3502fa0000488d3d8b930000ff1585fe0000488d35b6f80000488d3d3d800000ff1571fe0000488d3572fe0000488d3d47800000ff155dfe0000488d35def80000488d3d77930000ff1549fe0000488d3572fb0000488d3d3a800000ff1535fe0000488d355ef80000488d3d39800000ff1521fe0000488d35e2fe0000488d3d38800000ff150dfe0000488d35cefb0000488d3d37800000ff15f9fd0000488d35d2fd0000488d3d36800000ff15e5fd0000488d35fef80000488d3d40800000ff15d1fd0000488d359af80000488d3d13930000ff15bdfd0000488d3596fb0000488d3d35800000ff15a9fd0000488d3562fb0000488d3d3e800000ff1595fd0000488d356efc0000488d3d48800000ff1581fd0000488d355af80000488d3d52800000ff156dfd0000488d35befc0000488d3d4f800000ff1559fd0000488d3552ff0000488d3dc3920000ff1545fd0000488d358ef90000488d3dcf920000ff1531fd0000488d3582ff0000488d3deb920000ff151dfd0000488d3576f80000488d3d13800000ff1509fd0000488d35e2f80000488d3de3920000ff15f5fc0000488d35f6f60000488d3df7920000ff15e1fc0000488d35f2f70000488d3d0b930000ff15cdfc0000488d358ef90000488d3d27930000ff15b9fc0000488d35daf90000488d3d3b930000ff15a5fc0000488d35eefd0000488d3d4f930000ff1591fc0000488d3582fd0000488d3d63930000ff157dfc0000488d350ef80000488d3d907f0000ff1569fc0000488d353afc0000488d3d947f0000ff1555fc0000488d353efe0000488d3d4f930000ff1541fc0000488d359af90000488d3d63930000ff152dfc0000488d351efb0000488d3d77930000ff1519fc0000488d35e2f90000488d3d8b930000ff1505fc0000488d35befc0000488d3d4a7f0000ff15f1fb0000488d359afa0000488d3d8b930000ff15ddfb0000488d3526f60000488d3da7930000ff15c9fb0000488d352afa0000488d3dbb930000ff15b5fb0000488d350ef60000488d3dcf930000ff15a1fb0000488d3582f90000488d3de3930000ff158dfb0000488d3536f60000488d3def930000ff1579fb0000488d35eaf80000488d3d03940000ff1565fb0000488d358efc0000488d3d17940000ff1551fb0000488d35caf50000488d3d33940000ff153dfb0000488d35e6fa0000488d3d3f940000ff1529fb0000488d3582fc0000488d3d4b940000ff1515fb0000488d3536f60000488d3d57940000ff1501fb0000488d35e2fa0000488d3d5d7e0000ff15edfa0000488d3516fa0000488d3d617e0000ff15d9fa0000488d35aafc0000488d3d637e0000ff15c5fa0000488d35f6f50000488d3d687e0000ff15b1fa0000488d355afc0000488d3d6f7e0000ff159dfa0000488d3516f90000488d3d767e0000ff1589fa0000488d35a2fc0000488d3d7d7e0000ff1575fa0000488d3536f60000488d3d877e0000ff1561fa0000488d3562f60000488d3d8f7e0000ff154dfa0000488d355ef60000488d3d977e0000ff1539fa0000488d358af50000488d3da3930000ff1525fa0000488d35e6fb0000488d3db7930000ff1511fa0000488d354af80000488d3dcb930000ff15fdf90000488d35f6f50000488d3ddf930000ff15e9f90000488d3542f80000488d3deb930000ff15d5f90000488d3596f80000488d3dff930000ff15c1f90000488d35aaf60000488d3d13940000ff15adf90000488d35a6f30000488d3d107e0000ff1599f90000488d35aafb0000488d3d13940000ff1585f90000488d354ef80000488d3df97d0000ff1571f90000488d352af50000488d3dff7d0000ff155df90000488d35cefa0000488d3df7930000ff1549f90000488d359af50000488d3df17d0000ff1535f90000488d351ef70000488d3df47d0000ff1521f90000488d35f2f60000488d3dfd7d0000ff150df90000488d3586f40000488d3d047e0000ff15f9f80000488d35aaf70000488d3db3930000ff15e5f80000488d359ef30000488d3dcf930000ff15d1f80000488d3532f90000488d3deb930000ff15bdf80000488d35fef20000488d3dff930000ff15a9f80000488d3582f50000488d3dbd7d0000ff1595f80000488d3566f90000488d3dff930000ff1581f80000488d3582f70000488d3d13940000ff156df80000488d35f6f80000488d3d9c7d0000ff1559f80000488d35f2f50000488d3d0b940000ff1545f80000488d35b6f30000488d3d8c7d0000ff1531f80000488d3582f50000488d3d957d0000ff151df80000488d350ef80000488d3d9d7d0000ff1509f80000488d35baf20000488d3de3930000ff15f5f70000488d3546f20000488d3df7930000ff15e1f70000488b0542f200004885c0740d4c89efffd085c00f8541030000b901000000ba010000004c89ee4c89ffff15e2f300004489e083e0018944241c0f8502030000488b15fbf200004885d2741b31c0ffd20fb6d4c1f81025ff000000891555f10000890553f10000c5fd6f05339a0000c705d9ef000001000000c5fe7f05d9ef00004585e40f8e23040000418d4424ff4c8d2d077d0000d1e84c8d64242048c1e0044c8d740310c5f877eb350f1f8000000000488b7b084c89e6ff151bf4000083f8010f8422030000488b44242089057fef00004883c3104c39f30f848b000000488b3b4c89e6ff1546f9000048837c2420144889c77511ba140000004c89eee88e5affff85c074aa488b3b4c89e6ff151ef9000048837c2420144889c70f85c7010000ba14000000488d35837c0000e85e5affff85c00f85ae010000488b7b084c89e6ff1591f3000083f8010f841f030000488b4424204883c310488905f8ee00004c39f30f8575ffffff488d0d1085ffffc5f9efc0488d05f57fffff48c744242004000000c4e1f96ec9488d0d0086ffffc5fe7f44245831d2c4e3f122c801c5fe7f442478488d05257fffff488d357b7c0000c5fe7f842490000000c4e1f96ec1488d0d9980ffff4c89ffc4e3f922c001488d058981ffffc4e37d38c101c5fe7f442428c4e1f96ec14c89e1c4e3f922c001488d05987dffff4889442470c5fa7f442448c5f877ff154cf2000048890585ef00004885c00f843d0100004c89ffe8ace1ffff83f8010f842c010000c5fa7e0debe70000c5fa7e05dbe700008b150dee0000c4e3f1220db3e7000001c4e3f9220599e7000001

Rewrite big tairhash

At present, tairhash will be rewritten into an exhmset command. This is obviously unfriendly to big tairhash. We need to rewrite it into multiple exhmset.

[NEW] Add `NVER` to only insert field when version is > current version

The problem/use-case that the feature addresses

I would like to use TairHash as a 'current view' for multiple time series data points associated with an IoT device to store arbitrary data values (not numeric). This view would just be a hash map for the most recently reported value for each data stream. TimeSeries module isn't a good fit for this as it only supports numeric types. I would like to have a summary of current time series data associated with a key. To model this a hashmap is a good fit with one problem - it can't compare timestamps. This becomes an issue when dealing with data streams where older data points can be processed after newer ones. A potential solution would be to add a NVER version mode where sets only occur when the version specified is greater than the version already set. This would allow the user to use a unix timestamp as the version and only insert if the version is newer, preventing outdated data writes.

EX:

EXHSET k f0 v0  NVER 1655155340
> 1
EXHSET k f v  NVER 1655155340
> 1
EXHSET k f v2  NVER 1655155343
> 1 
EXHGET k f0 f 
> 2 
>> f0 v0 NVER 1655155340 
>> f v2  NVER 1655155343
EXHSET k f v3  NVER 1655155341
> 0  # or nil, but to indicate it wasn't written 
EXHGET k f0 f 
> 2 
>> f0 v0 NVER 1655155340 
>> f v2  NVER 1655155343

Description of the feature

A description of what you want to happen.

Alternatives you've considered

Using a standard hash- but it would require getting a lock, reading the field value locally, comparing field version(timestamp) locally, modifying value if newer, releasing lock.

Using Redis TimeSeries module - only works for numeric value types.

[CRASH]使用tarhash 频繁给一个key设置带EX 的field。当filed过期,但该key占用的内存大小并没有改变,再次访问已过期的key,造成redis奔溃,重启 #

Crash report

------ STACK TRACE ------
EIP:
/lib64/libc.so.6(gsignal+0x10f)[0x7f341940337f]

Backtrace:
/lib64/libpthread.so.0(+0x12c20)[0x7f34197a3c20]
/lib64/libc.so.6(gsignal+0x10f)[0x7f341940337f]
/lib64/libc.so.6(abort+0x127)[0x7f34193eddb5]
/lib64/libc.so.6(+0x21c89)[0x7f34193edc89]
/lib64/libc.so.6(+0x2fa76)[0x7f34193fba76]
/opt/tair/TairHash/lib/tairhash_module.so(+0x2585)[0x7f3418339585]
/opt/tair/TairHash/lib/tairhash_module.so(+0x1a7c)[0x7f3418338a7c]
/opt/tair/TairHash/lib/tairhash_module.so(+0x52bb)[0x7f341833c2bb]
/opt/tair/TairHash/lib/tairhash_module.so(+0x75b2)[0x7f341833e5b2]
./redis-server *:6379(RedisModuleCommandDispatcher+0x43)[0x4a79a3]
./redis-server *:6379(call+0x140)[0x55b1d0]
./redis-server *:6379(processCommand+0xa54)[0x55c214]
./redis-server *:6379(processInputBuffer+0xe9)[0x53de99]
./redis-server *:6379(readQueryFromClient+0x338)[0x53e3c8]
./redis-server *:6379[0x45e2ca]
./redis-server *:6379[0x460a6e]
./redis-server *:6379(aeMain+0x109)[0x564859]
./redis-server *:6379(main+0x39a)[0x450bea]
/lib64/libc.so.6(__libc_start_main+0xf3)[0x7f34193ef493]
./redis-server *:6379(_start+0x2e)[0x45131e]

------ REGISTERS ------
89654:M 08 Oct 2023 06:09:15.560 #
RAX:0000000000000000 RBX:0000000000000006
RCX:00007f341940337f RDX:0000000000000000
RDI:0000000000000002 RSI:00007ffe0b491470
RBP:00007f3419556698 RSP:00007ffe0b491470
R8 :0000000000000000 R9 :00007ffe0b491470
R10:0000000000000008 R11:0000000000000246
R12:00007f3418348fb0 R13:00007f3418349068
R14:00000000000000c3 R15:00007f3418c70420
RIP:00007f341940337f EFL:0000000000000246
CSGSFS:002b000000000033
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147f) -> 0000000000000000
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147e) -> 0000000000000000
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147d) -> 0000000000000000
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147c) -> 00000000011a39cc
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147b) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b49147a) -> 00000000011a39cc
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491479) -> 00000000011a3913
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491478) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491477) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491476) -> 00000000011a3905
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491475) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491474) -> 00000000fbad8000
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491473) -> 00007f34194454a7
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491472) -> 00007f3418c70420
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491471) -> 00000000011a38a0
89654:M 08 Oct 2023 06:09:15.560 # (00007ffe0b491470) -> 0000000000000000

------ INFO OUTPUT ------

Server

redis_version:7.2.1
redis_git_sha1:cc244370
redis_git_dirty:0
redis_build_id:a595560e21015e74
redis_mode:standalone
os:Linux 4.18.0-348.7.1.el8_5.x86_64 x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:c11-builtin
gcc_version:8.5.0
process_id:89654
process_supervised:no
run_id:6433d781d25f5024537e4ceb314f4f1d07174736
tcp_port:6379
server_time_usec:1696759755559414
uptime_in_seconds:895
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:2260939
executable:/ida/redis-stack-server-7.2.0-v2/bin/./redis-server
config_file:
io_threads_active:0
listener0:name=tcp,bind=,bind=-::,port=6379

Clients

connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:20480
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0
total_blocking_keys:0
total_blocking_keys_on_nokey:0

Memory

used_memory:1156664
used_memory_human:1.10M
used_memory_rss:13881344
used_memory_rss_human:13.24M
used_memory_peak:1351896
used_memory_peak_human:1.29M
used_memory_peak_perc:85.56%
used_memory_overhead:951656
used_memory_startup:928928
used_memory_dataset:205008
used_memory_dataset_perc:90.02%
allocator_allocated:1606704
allocator_active:1839104
allocator_resident:4907008
total_system_memory:16573603840
total_system_memory_human:15.44G
used_memory_lua:31744
used_memory_vm_eval:31744
used_memory_lua_human:31.00K
used_memory_scripts_eval:0
number_of_cached_scripts:0
number_of_functions:0
number_of_libraries:0
used_memory_vm_functions:32768
used_memory_vm_total:64512
used_memory_vm_total_human:63.00K
used_memory_functions:184
used_memory_scripts:184
used_memory_scripts_human:184B
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:1.14
allocator_frag_bytes:232400
allocator_rss_ratio:2.67
allocator_rss_bytes:3067904
rss_overhead_ratio:2.83
rss_overhead_bytes:8974336
mem_fragmentation_ratio:12.03
mem_fragmentation_bytes:12727216
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_total_replication_buffers:0
mem_clients_slaves:0
mem_clients_normal:22400
mem_cluster_links:0
mem_aof_buffer:0
mem_allocator:jemalloc-5.3.0
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0

Persistence

loading:0
async_loading:0
current_cow_peak:0
current_cow_size:0
current_cow_size_age:0
current_fork_perc:0.00
current_save_keys_processed:0
current_save_keys_total:0
rdb_changes_since_last_save:50
rdb_bgsave_in_progress:0
rdb_last_save_time:1696758860
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_saves:0
rdb_last_cow_size:0
rdb_last_load_keys_expired:0
rdb_last_load_keys_loaded:2
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_rewrites:0
aof_rewrites_consecutive_failures:0
aof_last_write_status:ok
aof_last_cow_size:0
module_fork_in_progress:0
module_fork_last_cow_size:0

Stats

total_connections_received:3
total_commands_processed:89
instantaneous_ops_per_sec:0
total_net_input_bytes:5143
total_net_output_bytes:623519
total_net_repl_input_bytes:0
total_net_repl_output_bytes:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
instantaneous_input_repl_kbps:0.00
instantaneous_output_repl_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:8
evicted_keys:0
evicted_clients:0
total_eviction_exceeded_time:0
current_eviction_exceeded_time:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
pubsubshard_channels:0
latest_fork_usec:0
total_forks:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
total_active_defrag_time:0
current_active_defrag_time:0
tracking_total_keys:0
tracking_total_items:0
tracking_total_prefixes:0
unexpected_error_replies:0
total_error_replies:1
dump_payload_sanitizations:0
total_reads_processed:93
total_writes_processed:96
io_threaded_reads_processed:0
io_threaded_writes_processed:0
reply_buffer_shrinks:3
reply_buffer_expands:0
eventloop_cycles:10443
eventloop_duration_sum:690677
eventloop_duration_cmd_sum:3189
instantaneous_eventloop_cycles_per_sec:10
instantaneous_eventloop_duration_usec:66
acl_access_denied_auth:0
acl_access_denied_cmd:0
acl_access_denied_key:0
acl_access_denied_channel:0

Replication

role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:cc698a37ce4d31daed6c88336761552ce1cbff62
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

CPU

used_cpu_sys:0.129024
used_cpu_user:0.630906
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000
used_cpu_sys_main_thread:0.134329
used_cpu_user_main_thread:0.624881

Modules

module:name=tairhash,ver=1,api=1,filters=0,usedby=[],using=[],options=[]

Commandstats

cmdstat_exhget:calls=3,usec=42,usec_per_call=14.00,rejected_calls=0,failed_calls=0
cmdstat_exhset:calls=23,usec=586,usec_per_call=25.48,rejected_calls=0,failed_calls=0
cmdstat_exhgetall:calls=13,usec=147,usec_per_call=11.31,rejected_calls=0,failed_calls=0
cmdstat_memory|usage:calls=46,usec=307,usec_per_call=6.67,rejected_calls=0,failed_calls=0
cmdstat_command|docs:calls=3,usec=2102,usec_per_call=700.67,rejected_calls=0,failed_calls=0
cmdstat_keys:calls=1,usec=5,usec_per_call=5.00,rejected_calls=0,failed_calls=0

Errorstats

errorstat_ERR:count=1

Latencystats

latency_percentiles_usec_exhget:p50=8.031,p99=27.007,p99.9=27.007
latency_percentiles_usec_exhset:p50=16.063,p99=87.039,p99.9=87.039
latency_percentiles_usec_exhgetall:p50=12.031,p99=14.015,p99.9=14.015
latency_percentiles_usec_memory|usage:p50=6.015,p99=27.007,p99.9=27.007
latency_percentiles_usec_command|docs:p50=704.511,p99=811.007,p99.9=811.007
latency_percentiles_usec_keys:p50=5.023,p99=5.023,p99.9=5.023

Cluster

cluster_enabled:0

Keyspace

db0:keys=2,expires=0,avg_ttl=0

------ CLIENT LIST OUTPUT ------
id=8 addr=127.0.0.1:56550 laddr=127.0.0.1:6379 fd=8 name= age=74 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=78 qbuf-free=20396 argv-mem=55 multi-mem=0 rbs=1024 r=6 obl=0 oll=0 omem=0 tot-mem=22479 events=r cmd=exhget user=default redir=-1 resp=2 lib-name= lib-ver=

------ CURRENT CLIENT INFO ------
id=8 addr=127.0.0.1:56550 laddr=127.0.0.1:6379 fd=8 name= age=74 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=78 qbuf-free=20396 argv-mem=55 multi-mem=0 rbs=1024 r=6 obl=0 oll=0 omem=0 tot-mem=22479 events=r cmd=exhget user=default redir=-1 resp=2 lib-name= lib-ver=
argc: '3'
argv[0]: '"exhget"'
argv[1]: '"us:123456"'
argv[2]: '"session:00022580259e42a699bc241c8e537803"'
89654:M 08 Oct 2023 06:09:15.560 # key 'us:123456' found in DB containing the following object:
89654:M 08 Oct 2023 06:09:15.560 # Object type: 5
89654:M 08 Oct 2023 06:09:15.560 # Object encoding: 0
89654:M 08 Oct 2023 06:09:15.560 # Object refcount: 1

------ EXECUTING CLIENT INFO ------
id=8 addr=127.0.0.1:56550 laddr=127.0.0.1:6379 fd=8 name= age=74 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=78 qbuf-free=20396 argv-mem=55 multi-mem=0 rbs=1024 r=6 obl=0 oll=0 omem=0 tot-mem=22479 events=r cmd=exhget user=default redir=-1 resp=2 lib-name= lib-ver=
argc: '3'
argv[0]: '"exhget"'
argv[1]: '"us:123456"'
argv[2]: '"session:00022580259e42a699bc241c8e537803"'
89654:M 08 Oct 2023 06:09:15.560 # key 'us:123456' found in DB containing the following object:
89654:M 08 Oct 2023 06:09:15.560 # Object type: 5
89654:M 08 Oct 2023 06:09:15.560 # Object encoding: 0
89654:M 08 Oct 2023 06:09:15.560 # Object refcount: 1

------ MODULES INFO OUTPUT ------

tairhash_Statistics

tairhash_active_expire_enable:1
tairhash_active_expire_period:1000
tairhash_active_expire_keys_per_loop:1000
tairhash_active_expire_dbs_per_loop:16
tairhash_active_expire_last_time_msec:0
tairhash_active_expire_max_time_msec:1
tairhash_active_expire_avg_time_msec:0
tairhash_passive_expire_keys_per_loop:3

tairhash_ActiveExpiredFields

tairhash_db0:42

tairhash_PassiveExpiredFields

tairhash_db0:0

------ CONFIG DEBUG OUTPUT ------
io-threads 1
repl-diskless-load disabled
activedefrag no
lazyfree-lazy-user-flush no
lazyfree-lazy-eviction no
repl-diskless-sync yes
client-query-buffer-limit 1gb
lazyfree-lazy-user-del no
lazyfree-lazy-expire no
slave-read-only yes
proto-max-bulk-len 512mb
replica-read-only yes
lazyfree-lazy-server-del no
list-compress-depth 0
io-threads-do-reads no
sanitize-dump-payload no

------ FAST MEMORY TEST ------
89654:M 08 Oct 2023 06:09:15.560 # Bio worker thread #0 terminated
89654:M 08 Oct 2023 06:09:15.561 # Bio worker thread #1 terminated
89654:M 08 Oct 2023 06:09:15.561 # Bio worker thread #2 terminated
*** Preparing to test memory region 8eb000 (2273280 bytes)
*** Preparing to test memory region 1171000 (270336 bytes)
*** Preparing to test memory region 7f3410000000 (135168 bytes)
*** Preparing to test memory region 7f3415367000 (2621440 bytes)
*** Preparing to test memory region 7f3415800000 (8388608 bytes)
*** Preparing to test memory region 7f3416000000 (2097152 bytes)
*** Preparing to test memory region 7f3416334000 (8388608 bytes)
*** Preparing to test memory region 7f3416b35000 (8388608 bytes)
*** Preparing to test memory region 7f3417336000 (8388608 bytes)
*** Preparing to test memory region 7f3417b37000 (8388608 bytes)
*** Preparing to test memory region 7f3418551000 (8192 bytes)
*** Preparing to test memory region 7f3418800000 (8388608 bytes)
*** Preparing to test memory region 7f34193cb000 (4096 bytes)
*** Preparing to test memory region 7f341978d000 (16384 bytes)
*** Preparing to test memory region 7f34199ad000 (16384 bytes)
*** Preparing to test memory region 7f3419e95000 (20480 bytes)
*** Preparing to test memory region 7f341a12d000 (4096 bytes)
*** Preparing to test memory region 7f341aad5000 (32768 bytes)
*** Preparing to test memory region 7f341aae0000 (4096 bytes)
.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O
Fast memory test PASSED, however your memory can still be broken. Please run a memory test for several hours if possible.

------ DUMPING CODE AROUND EIP ------
Symbol: gsignal (base: 0x7f3419403270)
Module: /lib64/libc.so.6 (base 0x7f34193cc000)
$ xxd -r -p /tmp/dump.hex /tmp/dump.bin
$ objdump --adjust-vma=0x7f3419403270 -D -b binary -m i386:x86-64 /tmp/dump.bin

89654:M 08 Oct 2023 06:09:15.731 # dump of function (hexdump of 399 bytes):
f30f1efa5349c7c0ffffffff89fb41ba0800000031ff4881ec1001000064488b042528000000488984240801000031c04989e148b8ffffff7ffeffffff4c8984248800000048898424800000004c89ca488db424800000b80e0000004c898424900000004c898424980000004c898424a00000004c898424a80000004c898424b00000004c898424b80000004c898424c00000004c898424c80000004c898424d00000004c898424d8000000898424e00000004c898424e80000004c898424f00000004c898424f80000000f05b92700000089c80f054889c7b8ba0000000f0589c689dab8ea0000000f05483d00f0ffff773b4189c041ba0800000031d24c89cebf000000b80e0000000f05488b8c24080100006448330c25280000004489c075194881c4100100005bc36690488b15c17a3800f7d8648902ebbae8dd5f0d00662e0f1f8400000000000f1f00f30f1efa85ff7808f7dfe902000090488b05917a380064c70016000000b8ffffffffc3662e0f1f84000000000066909066662e0f1f8400000000000f1f40
Function at 0x7f34194d9390 is __stack_chk_fail

=== REDIS BUG REPORT END. Make sure to include from START to END. ===

   Please report the crash by opening an issue on github:

       http://github.com/redis/redis/issues

If a Redis module was involved, please open in the module's repo instead.

Suspect RAM error? Use redis-server --test-memory to verify it.

Some other issues could be detected by redis-server --check-system
已放弃 (核心已转储)

Additional information

  1. OS distribution and version:centos8
  2. Steps to reproduce (if any)
    首先连续给 us:123456 这个key添加field,并这是过期时间
    exhset us:123456 session:00022580259e42a699bc241c8e537800 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537801 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537802 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537803 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537804 "" EX 120
    exhset us:123456 session:00022580259e42a699bc241c8e537805 "" EX 120

一共添加 25个不一样的field,并且设置EX 为 120秒
再添加一个超时时间久一点的field
exhset us:123456 session:00022580259e42a699bc241c8e537805 "" EX 12000
产生问题1:
当field都过期后,key中只有一条数据,占用内存依旧很大。内存空间没有被释放
127.0.0.1:6379> memory usage us:123456
(integer) 920
产生问题2:
当再次 exhget us:123456 session:00022580259e42a699bc241c8e537803 其中一个field 或者添加一个于已过期filed一样的field时候,精经常性触发 redis重启!!!!!
期待得到回复,尤其是内存空间不被释放问题

内存泄漏问题

  1. 模拟数据 插入以下结构的大约数据 1万个
    exhset us:126902 session:dea155d63828f002484fb2d67a879c81 "" EX 60
  2. 查看每个数据占用内存情况 (大约152)
    127.0.0.1:6379> memory usage us:105681
    (integer) 152
  3. 但总内存占用 100M
    127.0.0.1:6379> info memory

Memory

used_memory:105388744
used_memory_human:100.51M
问题:按道理算 10000 * 152 = 1.449M 那为什么会占用 100M内存

测试了三种模式,都是占用这么多内存,希望得到回复

Memory

used_memory:105388744
used_memory_human:100.51M
used_memory_rss:118505472
used_memory_rss_human:113.02M
used_memory_peak:105447208
used_memory_peak_human:100.56M
used_memory_peak_perc:99.94%
used_memory_overhead:1407072
used_memory_startup:929088
used_memory_dataset:103981672
used_memory_dataset_perc:99.54%
allocator_allocated:105497072
allocator_active:105697280
allocator_resident:109481984
total_system_memory:16573603840
total_system_memory_human:15.44G
used_memory_lua:31744
used_memory_vm_eval:31744
used_memory_lua_human:31.00K
used_memory_scripts_eval:0
number_of_cached_scripts:0
number_of_functions:0
number_of_libraries:0
used_memory_vm_functions:32768
used_memory_vm_total:64512
used_memory_vm_total_human:63.00K
used_memory_functions:184
used_memory_scripts:184
used_memory_scripts_human:184B
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:1.00
allocator_frag_bytes:200208
allocator_rss_ratio:1.04
allocator_rss_bytes:3784704
rss_overhead_ratio:1.08
rss_overhead_bytes:9023488
mem_fragmentation_ratio:1.12
mem_fragmentation_bytes:13137400
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_total_replication_buffers:0
mem_clients_slaves:0
mem_clients_normal:1928
mem_cluster_links:0
mem_aof_buffer:0
mem_allocator:jemalloc-5.3.0
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.