Redis MSOpenTech:最大内存“;使用内存时不允许使用OOM命令>';maxmemory'&引用;即使保存后的RDB文件仅为3 GB,也会出错

Redis MSOpenTech:最大内存“;使用内存时不允许使用OOM命令>';maxmemory'&引用;即使保存后的RDB文件仅为3 GB,也会出错,memory,memory-management,redis,Memory,Memory Management,Redis,我使用的redis服务器版本是MSOpenTech github的2.8.9。有人能解释为什么redis“info”命令指示使用的内存为21GB,即使保存在磁盘上的RDB文件小于4GB?在记下RDB文件的大小之前,我确实成功地运行了一个“save”命令。qfork堆文件是30 Gb,因为它是在redis.windows.conf中配置的 配置: 最大堆30gb 最大内存20 Gb 没有 节省180001 服务器有192 GB的物理RAM,但不幸的是只有大约60 GB的可用磁盘空间,我必须将最大堆

我使用的redis服务器版本是MSOpenTech github的2.8.9。有人能解释为什么redis“info”命令指示使用的内存为21GB,即使保存在磁盘上的RDB文件小于4GB?在记下RDB文件的大小之前,我确实成功地运行了一个“save”命令。qfork堆文件是30 Gb,因为它是在redis.windows.conf中配置的

配置:

最大堆30gb 最大内存20 Gb 没有 节省180001

服务器有192 GB的物理RAM,但不幸的是只有大约60 GB的可用磁盘空间,我必须将最大堆和最大内存分别设置为30 GB和20 GB,以便我有额外的空间在磁盘上保存数据

我使用redis作为缓存,保存间隔很长,因为植入数据需要很长时间,而且我不希望不断写入文件。种子设定完成后,数据库每天更新一次新数据

我的问题是:

  • 保存的RDB文件怎么这么小?是否仅仅是由于压缩(rdbcompression是)?如果是,是否也可以使用相同的压缩机制将数据存储在内存中?我广泛使用列表

  • 在运行“save”命令之前,process explorer中的工作集和专用字节非常小。有没有办法按数据结构分解内存使用情况?例如:列表使用x金额,哈希使用y金额等

  • 有什么方法可以将AOF文件存储在网络路径(共享驱动器或NAS)中(我关闭了AOF并使用RDB,因为AOF文件正在快速填满磁盘空间)?我尝试将目录配置设置为\someip\somefolder,但服务无法启动,并显示消息“Cant CHDIR to location”

  • 我无法发布图像,但process explorer对redis服务器实例的说明如下:

  • 虚拟内存:

    • 专用字节:72920 K
    • 峰值专用字节:31546092 K
    • 虚拟大小:31558356 K
    • 页面错误:12479550
  • 物理内存:

    • 工作组:26871240 K
    • WS-Private:63260 K
    • WS可共享:26807980 K
    • WS-Shared:3580k
    • 峰值工作集:27011488 K
  • 最新保存的dump.rdb为3.81 GB,堆文件为30 GB

    # Server
    redis_version:2.8.9
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:1fe181ad2447fe38
    redis_mode:standalone
    os:Windows  
    arch_bits:64
    multiplexing_api:winsock_IOCP
    gcc_version:0.0.0
    process_id:12772
    run_id:553f2b4665edd206e632b7040aa76c0b76083f4d
    tcp_port:6379
    uptime_in_seconds:24087
    uptime_in_days:0
    hz:50
    lru_clock:14825512
    config_file:D:\RedisService/redis.windows.conf
    
    # Clients
    connected_clients:2
    client_longest_output_list:0
    client_biggest_input_buf:0
    blocked_clients:0
    
    # Memory
    used_memory:21484921736
    used_memory_human:20.01G
    used_memory_rss:21484870536
    used_memory_peak:21487283360
    used_memory_peak_human:20.01G
    used_memory_lua:3156992
    mem_fragmentation_ratio:1.00
    mem_allocator:dlmalloc-2.8
    
    # Persistence
    loading:0
    rdb_changes_since_last_save:0
    rdb_bgsave_in_progress:0
    rdb_last_save_time:1407328559
    rdb_last_bgsave_status:ok
    rdb_last_bgsave_time_sec:1407328560
    rdb_current_bgsave_time_sec:-1
    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
    
    # Stats
    total_connections_received:9486
    total_commands_processed:241141370
    instantaneous_ops_per_sec:0
    rejected_connections:0
    sync_full:0
    sync_partial_ok:0
    sync_partial_err:0
    expired_keys:0
    evicted_keys:0
    keyspace_hits:30143
    keyspace_misses:81
    pubsub_channels:0
    pubsub_patterns:0
    latest_fork_usec:1341134
    

    配置中的
    maxmemory
    的值是多少?您可以使用
    CONFIG GET maxmemory
    进行检查。