亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

防止redis內(nèi)存溢出優(yōu)化方法

 更新時(shí)間:2025年03月18日 10:25:38   作者:會(huì)飛的愛迪生  
本文主要介紹了防止redis內(nèi)存溢出優(yōu)化方法,包括使用maxmemory-policy選項(xiàng)、設(shè)置數(shù)據(jù)過期時(shí)間和配置Redis集群等,具有一定的參考價(jià)值,感興趣的可以了解一下

一、redis緩存介紹

redis雖然是內(nèi)存數(shù)據(jù)庫(kù),但它的數(shù)據(jù)依然保存在物理內(nèi)存中,redis會(huì)更具持久化配置每隔一段時(shí)間就會(huì)往磁盤寫入數(shù)據(jù),在寫入數(shù)據(jù)時(shí)會(huì)覆蓋磁盤中相同的key。redis當(dāng)前的緩存數(shù)據(jù)是保存在cached里面的,通過free -mh查看【-/+ buffers/cache: 16G 46G】,16G里面保存的就是redis的當(dāng)前緩存數(shù)據(jù)。

舉例:

這是一臺(tái)redis服務(wù)器,可以看到物理內(nèi)存的使用量已經(jīng)達(dá)到57G,但是redis的真正使用量其實(shí)最多只有16G
從這里【-/+ buffers/cache: 16G 46G】可以看到redis當(dāng)前最多使用了16G,當(dāng)前內(nèi)存可用空間還有46G(前提是這臺(tái)服務(wù)器只運(yùn)行了redis服務(wù))

在這里插入圖片描述

[root@jxq-c2-16-3 ~]# /alidata/redis/bin/redis-cli 
127.0.0.1:6379> info
# Memory
used_memory:15128469488   #redis數(shù)據(jù)占用了多少內(nèi)存(字節(jié)顯示)
used_memory_human:14.09G  #redis數(shù)據(jù)占用了多少內(nèi)存(G顯示,便于可讀性)
used_memory_rss:15497564160  #redis進(jìn)程占用了多少內(nèi)存(字節(jié))
used_memory_peak:15164396944   #redis的峰值,最高運(yùn)行到多大內(nèi)存(字節(jié))
used_memory_peak_human:14.12G  #redis的峰值,最高運(yùn)行到多大內(nèi)存(G顯示,便于可讀性)
used_memory_lua:33792          #lua引擎所占用的內(nèi)存大?。ㄗ止?jié))
mem_fragmentation_ratio:1.02   #內(nèi)存碎片率
mem_allocator:jemalloc-3.2.0   #redis內(nèi)存分配器版本,在編譯時(shí)指定的。有l(wèi)ibc、jemalloc、tcmalloc這3種。

二、redis內(nèi)存釋放

注意:不要使用#echo 3 > /proc/sys/vm/drop_caches 這條命令釋放內(nèi)存,可能會(huì)造成redis數(shù)據(jù)丟失

主要有以下幾種方法:
修改redis.conf中的maxmemory-policy選項(xiàng)

  • 加內(nèi)存
  • 縮短(或設(shè)置)數(shù)據(jù)過期時(shí)間,以釋放內(nèi)存
  • redis集群

1、如果數(shù)據(jù)是不怕丟的緩存數(shù)據(jù),那么可以在redis.conf里,配置如下兩項(xiàng),進(jìn)行內(nèi)存數(shù)據(jù)淘汰(需要重啟redis):

#設(shè)置redis最大內(nèi)存限制單位是字節(jié)1024B=1kb(這里我設(shè)置為64M):
maxmemory 64000000      #這個(gè)值應(yīng)該設(shè)置為物理內(nèi)存的50%

#超過內(nèi)存限制后的處理策略(這里我使用的策略為從內(nèi)存中遷出(其實(shí)就是刪除)不常用的key):
maxmemory-policy allkeys-lfu

淘汰策略有以下幾種可選:
LRU算法表示最近最少使用的,LFU算法表示最不常用的:
#volatile-lru - >在設(shè)置了過期的key中,刪除最近最少使用的key,直到空間足夠?yàn)橹?
#allkeys-lru - >從所有key里刪除最近最少使用的key,不管有沒設(shè)置過期,直到空間足夠?yàn)橹?
#volatile-lfu - >在設(shè)置了過期的key中,刪除最少使用的key,直到空間足夠?yàn)橹?
#allkeys-lfu - >從所有key里刪除最少使用的key,不管有沒設(shè)置過期,直到空間足夠?yàn)橹?
#volatile-random - >刪除一個(gè)過期集合中的隨機(jī)key。
#allkeys-random - >刪除一個(gè)隨機(jī)key,不管有沒設(shè)置過期。
#volatile-ttl - >刪除即將過期的key(次TTL)
#noviction - >不刪除,拒絕寫入,寫入操作時(shí)返回錯(cuò)誤。

2、看看如何動(dòng)態(tài)添加redis最大內(nèi)存限制以及相關(guān)策略(無需重啟redis):

#當(dāng)前的redis最大內(nèi)存是沒有限制的(0表示不限制)
[root@jxq-c2-16-3 ~]# /alidata/redis/bin/redis-cli 
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "0"

#由于我的物理內(nèi)存是8G,我這里配置redis的最大內(nèi)存限制為4G
127.0.0.1:6379> config set maxmemory 4294967296
OK

#再次查看是否生效
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "4294967296"


我們看看那些參數(shù) redis可以動(dòng)態(tài)設(shè)置
redis 127.0.0.1:6379> config get *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  5) "masterauth"
  6) ""
  7) "bind"
  8) ""
  9) "unixsocket"
 10) ""
 11) "logfile"
 12) ""
 13) "pidfile"
 14) "/usr/local/redis/var/run/redis.pid"
 15) "maxmemory"
 16) "4294967296"
 17) "maxmemory-samples"
 18) "3"
 19) "timeout"
 20) "0"
 21) "tcp-keepalive"
 22) "60"
 23) "auto-aof-rewrite-percentage"
 24) "100"
 25) "auto-aof-rewrite-min-size"
 26) "67108864"
 27) "hash-max-ziplist-entries"
 28) "512"
 29) "hash-max-ziplist-value"
 30) "64"
 31) "list-max-ziplist-entries"
 32) "512"
 33) "list-max-ziplist-value"
 34) "64"
 35) "set-max-intset-entries"
 36) "512"
 37) "zset-max-ziplist-entries"
 38) "128"
 39) "zset-max-ziplist-value"
 40) "64"
 41) "lua-time-limit"
 42) "5000"
 43) "slowlog-log-slower-than"
 44) "10000"
 45) "slowlog-max-len"
 46) "128"
 47) "port"
 48) "6379"
 49) "databases"
 50) "32"
 51) "repl-ping-slave-period"
 52) "10"
 53) "repl-timeout"
 54) "60"
 55) "maxclients"
 56) "10000"
 57) "watchdog-period"
 58) "0"
 59) "slave-priority"
 60) "100"
 61) "hz"
 62) "10"
 63) "no-appendfsync-on-rewrite"
 64) "no"
 65) "slave-serve-stale-data"
 66) "yes"
 67) "slave-read-only"
 68) "yes"
 69) "stop-writes-on-bgsave-error"
 70) "yes"
 71) "daemonize"
 72) "yes"
 73) "rdbcompression"
 74) "yes"
 75) "rdbchecksum"
 76) "yes"
 77) "activerehashing"
 78) "yes"
 79) "repl-disable-tcp-nodelay"
 80) "no"
 81) "aof-rewrite-incremental-fsync"
 82) "yes"
 83) "appendonly"
 84) "no"
 85) "dir"
 86) "/usr/local/redis/db"
 87) "maxmemory-policy"
 88) "volatile-lru"
 89) "appendfsync"
  90) "everysec"
 91) "save"
 92) "900 1 300 10 60 10000"
 93) "loglevel"
 94) "notice"結(jié)論:如果redis數(shù)據(jù)中,存的是關(guān)鍵數(shù)據(jù),怕丟失的數(shù)據(jù),那么,redis數(shù)據(jù)占用的內(nèi)存,不要超過內(nèi)存大小的70%(保險(xiǎn)起見不要超過55%),以免內(nèi)存不足!不要期望什么內(nèi)存淘汰策略!它所做的居然是刪數(shù)據(jù)!LRU, LFU 遷出都是!如果一個(gè)項(xiàng)目的數(shù)據(jù)量比較大,就要經(jīng)常用info來看內(nèi)存的使用量,這樣才能讓項(xiàng)目更穩(wěn)定。

具體redis內(nèi)存優(yōu)化請(qǐng)參考 https://www.cnblogs.com/susufufu/p/7875210.html
 95) "client-output-buffer-limit"
 96) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
 97) "unixsocketperm"
 98) "0"
 99) "slaveof"

到此這篇關(guān)于防止redis內(nèi)存溢出優(yōu)化方法的文章就介紹到這了,更多相關(guān)防止redis內(nèi)存溢出優(yōu)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Windows系統(tǒng)安裝Redis的詳細(xì)圖文教程

    Windows系統(tǒng)安裝Redis的詳細(xì)圖文教程

    但有時(shí)候想在windows下折騰下Redis,那么就可以參考下面的方法了,雖然腳本之家小編以前整理了一些,發(fā)現(xiàn)這篇做的比較詳細(xì),下載也給出來了
    2018-08-08
  • Redis+aop實(shí)現(xiàn)接口防刷(冪等)的解決方案

    Redis+aop實(shí)現(xiàn)接口防刷(冪等)的解決方案

    在高并發(fā)場(chǎng)景下,可能會(huì)因?yàn)榫W(wǎng)絡(luò)或者服務(wù)器原因,造成延遲,同時(shí)就是有可能會(huì)有人用腳本大量訪問你的接口,造成資源崩潰,所以本文給大家介紹了Redis+aop實(shí)現(xiàn)接口防刷(冪等)的解決方案,需要的朋友可以參考下
    2024-03-03
  • 5分鐘搭建redis集群(redis5.0.5)

    5分鐘搭建redis集群(redis5.0.5)

    本文主要介紹了5分鐘搭建redis集群,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Redis實(shí)現(xiàn)分布式鎖詳解

    Redis實(shí)現(xiàn)分布式鎖詳解

    這篇文章主要介紹了redis如何實(shí)現(xiàn)分布式鎖,文章中有詳細(xì)的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-04-04
  • redis和redisson實(shí)現(xiàn)分布式鎖的操作方法

    redis和redisson實(shí)現(xiàn)分布式鎖的操作方法

    使用 Redis 實(shí)現(xiàn)分布式鎖,最直接的想法是利用 setnx 和 expire 命令實(shí)現(xiàn)加鎖,這篇文章主要介紹了redis和redisson實(shí)現(xiàn)分布式鎖的操作方法,需要的朋友可以參考下
    2024-03-03
  • 利用Redis實(shí)現(xiàn)防止接口重復(fù)提交功能

    利用Redis實(shí)現(xiàn)防止接口重復(fù)提交功能

    大家好,本篇文章主要講的是利用Redis實(shí)現(xiàn)防止接口重復(fù)提交功能,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • redis中RDB(Redis Data Base)的機(jī)制

    redis中RDB(Redis Data Base)的機(jī)制

    本文主要介紹了redis中RDB(Redis Data Base)的機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 解決redis修改requirepass后不生效的問題

    解決redis修改requirepass后不生效的問題

    今天小編就為大家分享一篇解決redis修改requirepass后不生效的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Redis如何實(shí)現(xiàn)投票功能

    Redis如何實(shí)現(xiàn)投票功能

    這篇文章主要介紹了Redis如何實(shí)現(xiàn)投票功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Jedis操作Redis實(shí)現(xiàn)模擬驗(yàn)證碼發(fā)送功能

    Jedis操作Redis實(shí)現(xiàn)模擬驗(yàn)證碼發(fā)送功能

    Redis是一個(gè)著名的key-value存儲(chǔ)系統(tǒng),也是nosql中的最常見的一種,這篇文章主要給大家介紹Jedis操作Redis實(shí)現(xiàn)模擬驗(yàn)證碼發(fā)送功能,感興趣的朋友一起看看吧
    2021-09-09

最新評(píng)論