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 <bytes>
    例: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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容