最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、redis緩存介紹

redis雖然是內(nèi)存數(shù)據(jù)庫(kù),但它的數(shù)據(jù)依然保存在物理內(nèi)存中,redis會(huì)更具持久化配置每隔一段時(shí)間就會(huì)往磁盤寫(xiě)入數(shù)據(jù),在寫(xiě)入數(shù)據(jù)時(shí)會(huì)覆蓋磁盤中相同的key。redis當(dāng)前的緩存數(shù)據(jù)是保存在cached里面的,通過(guò)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ù)過(guò)期時(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%

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

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

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

#當(dāng)前的redis最大內(nèi)存是沒(mé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)存,不要超過(guò)內(nèi)存大小的70%(保險(xiǎn)起見(jiàn)不要超過(guò)55%),以免內(nèi)存不足!不要期望什么內(nèi)存淘汰策略!它所做的居然是刪數(shù)據(jù)!LRU, LFU 遷出都是!如果一個(gè)項(xiàng)目的數(shù)據(jù)量比較大,就要經(jīng)常用info來(lái)看內(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)文章

  • redis如何實(shí)現(xiàn)清空緩存

    redis如何實(shí)現(xiàn)清空緩存

    這篇文章主要介紹了redis如何實(shí)現(xiàn)清空緩存,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 使用 Redis 流實(shí)現(xiàn)消息隊(duì)列的代碼

    使用 Redis 流實(shí)現(xiàn)消息隊(duì)列的代碼

    這篇文章主要介紹了使用 Redis 流實(shí)現(xiàn)消息隊(duì)列,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 基于Redis的限流器的實(shí)現(xiàn)(示例講解)

    基于Redis的限流器的實(shí)現(xiàn)(示例講解)

    下面小編就為大家分享一篇基于Redis的限流器的實(shí)現(xiàn)(示例講解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Redis中List類型的常用命令

    Redis中List類型的常用命令

    本文主要介紹了Redis中List類型的常用命令,包含12種常用命令,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • 關(guān)于Redis的讀寫(xiě)一致問(wèn)題

    關(guān)于Redis的讀寫(xiě)一致問(wèn)題

    在項(xiàng)目使用Redis過(guò)程中,當(dāng)數(shù)據(jù)更新時(shí),我們要保證緩存和數(shù)據(jù)庫(kù)的一致性,否則會(huì)導(dǎo)致很多臟數(shù)據(jù)出現(xiàn),此時(shí)我們就要思考如何去進(jìn)行數(shù)據(jù)更新,本文就給大家講講關(guān)于redis的讀寫(xiě)一致問(wèn)題,需要的朋友可以參考下
    2023-08-08
  • Redis keys命令的具體使用

    Redis keys命令的具體使用

    本文主要介紹了Redis keys命令的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • redis8.0新特性之布谷鳥(niǎo)過(guò)濾器(Cuckoo Filter)的使用

    redis8.0新特性之布谷鳥(niǎo)過(guò)濾器(Cuckoo Filter)的使用

    布谷鳥(niǎo)過(guò)濾器是一種概率數(shù)據(jù)結(jié)構(gòu),就像布隆過(guò)濾器一樣,可以以非??焖偾夜?jié)省空間的方式檢查元素是否存在于集合中,同時(shí)還支持刪除操作,并在某些場(chǎng)景下表現(xiàn)優(yōu)于布隆過(guò)濾器,感興趣的可以了解一下
    2025-08-08
  • Redis中的RDB用法原理及說(shuō)明

    Redis中的RDB用法原理及說(shuō)明

    Redis RDB是通過(guò)fork子進(jìn)程生成內(nèi)存數(shù)據(jù)快照的持久化機(jī)制,采用寫(xiě)時(shí)復(fù)制(COW)技術(shù),確保數(shù)據(jù)一致性,優(yōu)點(diǎn):性能高、恢復(fù)快;缺點(diǎn):可能丟失最后一次持久化后的數(shù)據(jù),常用于備份,建議與AOF結(jié)合使用以兼顧安全與效率
    2025-09-09
  • 百行代碼實(shí)現(xiàn)基于Redis的可靠延遲隊(duì)列

    百行代碼實(shí)現(xiàn)基于Redis的可靠延遲隊(duì)列

    本文主要介紹了百行代碼實(shí)現(xiàn)基于Redis的可靠延遲隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 使用Jedis面臨的非線程安全問(wèn)題詳解

    使用Jedis面臨的非線程安全問(wèn)題詳解

    網(wǎng)上都說(shuō)jedis實(shí)例是非線程安全的,常常通過(guò)JedisPool連接池去管理實(shí)例,在多線程情況下讓每個(gè)線程有自己獨(dú)立的jedis實(shí)例,但都沒(méi)有具體說(shuō)明為啥jedis實(shí)例時(shí)非線程安全的,本文就來(lái)和大家詳細(xì)說(shuō)說(shuō)
    2022-12-12

最新評(píng)論

益阳市| 广灵县| 凤冈县| 黔江区| 博罗县| 惠东县| 余姚市| 梓潼县| 滦平县| 根河市| 江口县| 西乌珠穆沁旗| 镇原县| 丰城市| 谷城县| 山阳县| 清水河县| 梅州市| 衡阳县| 巴林左旗| 莱州市| 迁安市| 东城区| 鄂伦春自治旗| 洛隆县| 吕梁市| 兴化市| 大荔县| 波密县| 包头市| 江都市| 黄大仙区| 北安市| 尼玛县| 东丽区| 双牌县| 汤阴县| 青岛市| 嘉黎县| 汪清县| 廉江市|