Redis最大缓存设置及info信息详解

默认为0,没有指定最大缓存,如果有新的数据添加,超过最大内存,则会使redis崩溃。

进入redis服务器,可通过redis的info命令查看当前reids状态:
    # Server 服务器的相关信息,一般不太需要关注
        redis_version:3.2.12
        #Git SHA1
        redis_git_sha1:00000000
        #Git dirty flag
        redis_git_dirty:0
        redis_build_id:3dc3425a3049d2ef
        #运行模式,单机或者集群
        redis_mode:standalone
        #服务器的宿主操作系统
        os:Linux 3.10.0-862.11.6.el7.x86_64 x86_64
        #架构(32 或 64 位)
        arch_bits:64
        #Redis 所使用的事件处理机制
        multiplexing_api:epoll
        gcc_version:4.8.5
        #服务器进程的 PID
        process_id:28752
        run_id:af5da008ce67381f7f2a0560b7c10b83c674d333
        tcp_port:6379
        uptime_in_seconds:8594
        #自 Redis 服务器启动以来,经过的天数
        uptime_in_days:0
        hz:10
        lru_clock:15519130
        executable:/./bin/redis-server
        config_file:/etc/redis.conf

    # Clients 客户端
        #当前客户端连接数
        connected_clients:2
        #当前连接的客户端当中,最长的输出列表
        client_longest_output_list:0
        # 当前连接的客户端当中,最大输入缓存
        client_biggest_input_buf:0
        #被阻塞的客户端数
        blocked_clients:0
    conf相关配置:
        maxclients 5000
        tcp-backlog 500  #TCP 监听的最大容纳数量 默认511

    # Memory 
        #使用内存,以字节(byte)为单位
        used_memory:849640
        #以人类可读的格式返回 Redis 分配的内存总量
        used_memory_human:829.73K
        #系统给redis分配的内存即常驻内存,和top 、 ps 等命令的输出一致
        used_memory_rss:2744320
        #以人类可读的格式返回系统给redis分配的内存即常驻内存,和top 、 ps 等命令的输出一致
        used_memory_rss_human:2.62M
        #内存使用的峰值大小
        used_memory_peak:885576
        #以人类可读的格式返回 Redis 的内存峰值
        used_memory_peak_human:864.82K
        total_system_memory:16657358848
        total_system_memory_human:15.51G
        #lua引擎使用的内存
        used_memory_lua:46080
        used_memory_lua_human:45.00K
        #Redis实例的最大内存配置
        maxmemory:3000000000
        maxmemory_human:2.79G
        maxmemory_policy:volatile-lru
        #redis 内存碎片率
        mem_fragmentation_ratio:3.23
        #内存分配器
        mem_allocator:jemalloc-3.6.0

    # Persistence
        loading:0
        #自上次dump后rdb的改动
        rdb_changes_since_last_save:0
        #标识rdb save是否进行中
        rdb_bgsave_in_progress:0
        #上次save的时间戳
        rdb_last_save_time:1559021527
        #上次的save操作状态
        rdb_last_bgsave_status:ok
        #上次rdb save操作使用的时间(单位s)
        rdb_last_bgsave_time_sec:0
        #如果rdb save操作正在进行,则是所使用的时间
        rdb_current_bgsave_time_sec:-1
        #是否开启aof,默认没开启(未开启)
        aof_enabled:0
        #标识aof的rewrite操作是否在进行中
        aof_rewrite_in_progress:0
        #标识是否将要在rdb save操作结束后执行
        aof_rewrite_scheduled:0
        #上次rewrite操作使用的时间(单位s)
        aof_last_rewrite_time_sec:-1
        #如果rewrite操作正在进行,则记录所使用的时间
        aof_current_rewrite_time_sec:-1
        #上次rewrite操作的状态
        aof_last_bgrewrite_status:ok
        #上次write操作的状态
        aof_last_write_status:ok
        #aof当前大小,以字节(byte)为单位
        aof_current_size:42820373           
        #aof上次启动或rewrite的大小
        aof_base_size:16223723              
        #同上面的aof_rewrite_scheduled
        aof_pending_rewrite:0               
        #aof buffer的大小
        aof_buffer_length:0                 
        #aof rewrite buffer的大小
        aof_rewrite_buffer_length:0        
        #后台IO队列中等待fsync任务的个数
        aof_pending_bio_fsync:0 
        #延迟的fsync计数器 TODO           
        aof_delayed_fsync:41394

    # Stats
        #自启动起连接过的总数
        total_connections_received:28
        #自启动起运行命令的总数
        total_commands_processed:522
        #每秒执行的命令个数
        instantaneous_ops_per_sec:0
        #redis网络入口流量字节数
        total_net_input_bytes:29487
        #redis网络出口流量字节数
        total_net_output_bytes:242381
        #redis网络入口kps
        instantaneous_input_kbps:0.00
        #redis网络出口kps
        instantaneous_output_kbps:0.00
        #因为最大客户端连接书限制,而导致被拒绝连接的个数
        rejected_connections:0
        #主从完全同步成功次数
        sync_full:0
        #主从部分同步成功次数
        sync_partial_ok:0
        #主从部分同步失败次数
        sync_partial_err:0
        #自启动起过期的key的总数
        expired_keys:2
        #因为内存大小限制,而被驱逐出去的键的个数
        evicted_keys:0
        #自启动起命中key的个数
        keyspace_hits:301
        #自启动起未命中key的个数
        keyspace_misses:47
        pubsub_channels:0
        pubsub_patterns:0
        #上次的fork操作使用的时间(单位ms)
        latest_fork_usec:225
        migrate_cached_sockets:0

    # Replication
        #角色(主从)
        role:master
        #从库数量
        connected_slaves:0
        #主从同步偏移量,此值如果和上面的offset相同说明主从一致没延迟,与master_replid可被用来标识主实例复制流中的位置。
        master_repl_offset:0
        #复制积压缓冲区是否开启
        repl_backlog_active:0
        #复制积压缓冲大小
        repl_backlog_size:1048576
        repl_backlog_first_byte_offset:0
        repl_backlog_histlen:0

    # CPU
        #cpu在内核态所消耗的cpu的时间
        used_cpu_sys:5.53
        #cpu在用户态所消耗的cpu的时间
        used_cpu_user:3.71
        #将后台进程在核心态所占用的CPU时求和累计起来
        used_cpu_sys_children:0.01
        #将后台进程在用户态所占用的CPU时求和累计起来
        used_cpu_user_children:0.00

    # Cluster
        #实例是否启用集群模式
        cluster_enabled:0

    # Keyspace
        #db0的key的数量,以及带有生存期的key的数,平均存活时间
        db0:keys=21,expires=12,avg_ttl=423330898

内存设置换算:
    1k => 1000 bytes
    1kb => 1024 bytes
    1m => 1000000 bytes
    1mb => 1024*1024 bytes
    1g => 1000000000 bytes
    1gb => 1024*1024*1024 bytes
    
最大内存设置:maxmemory 
    例:maxmemory 3000000000
    设置最大值需注意的:
    回收key 设置要maxmemory,切redis实例启用了rdb功能就需要将maxmemory设置为系统可使用内存的45%,因为快照时需要一倍的内存来复制整个数据集,也就是说如果当前已使用45%,在快照期间会变成95%(45%+45%+5%),其中5%是预留给其他的开销。如果没开启快照功能,maxmemory最高能设置为系统可用内存的95%。
    网上有许多建议此值设置为3/4的服务器内存,我觉得这个可能是此服务器上没有部署其它消耗内存的java应用程序,否则还是根据实际情况,可通过top查看服务器的内存使用情况,如果其它进程长期占用比较大的份额,建议此值不要累积至百分百。
    
回收策略设置:设置了最大内存,建议配合缓存回收策略使用
    maxmemory-policy 策略方式
    策略方式:
        volatile-lru -> 回收最近最少使用(LRU)的键,但是只回收有设置过期的键,为新数据腾出空间;
        allkeys-lru -> 回收最近最少使用(LRU)的键,为新数据腾出空间;
        volatile-random -> 回收随机的键,但是只回收有设置过期的键,为新数据腾出空间;
        allkeys-random -> 回收随机的键,为新数据腾出空间;
        volatile-ttl -> 回收有设置过期的键,尝试先回收离TTL最短时间的键,为新数据腾出空间;
        noeviction -> 禁止淘汰数据,当到达内存限制时返回错误。当客户端尝试执行命令时会导致更多内存占用(大多数写命令,除了DEL和一些例外)。

更多文章:
CSDN博客
博客
公众号:代码小搬运

代码小搬运.jpg

你可能感兴趣的:(Redis最大缓存设置及info信息详解)