溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何提高memcache的緩存命中率

發(fā)布時間:2021-12-09 16:48:07 來源:億速云 閱讀:130 作者:柒染 欄目:大數(shù)據(jù)

如何提高memcache的緩存命中率,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

如何提高memcache的緩存命中率

  1. 合理組合緩存 Key,保證 Key 最大復用率。

  2. 合理設置過期時間,減少因為緩存數(shù)據(jù)過期后被穿透

memcache和redis的區(qū)別,內(nèi)存管理機制

數(shù)據(jù)類型:都是k/v數(shù)據(jù)庫,但memcache只支持string,redis除了string,還支持list,set,hash等數(shù)據(jù)
內(nèi)存管理:memcache內(nèi)存用完時,會刪除用得最少的緩存;redis內(nèi)存用完時,會把最少的緩存交換到磁盤里。
持久化:memcache不支持內(nèi)存持久化,redis支持。

redis持久化有兩種方式:RDB和AOF

  1. RDB (redis db)
    在指定的save m n周期性對數(shù)據(jù)進行持久化。m秒有n條寫入記錄,則進行持久化

  2. AOF (appendonly filelog)
    appendfsync everysec:每秒同步一次,意味著有最多1秒的

Memcache

只支持string類型,并且不能持久化的內(nèi)存緩存

MYSQL緩存

mysql緩存機制就是緩存sql 文本及緩存結(jié)果,用KV形式保存再服務器內(nèi)存中,如果運行相同的sql,服務器直接從緩存中去獲取結(jié)果,不需要在再去解析、優(yōu)化、執(zhí)行sql。如果這個表修改了,那么使用這個表中的所有緩存將不再有效,查詢緩存值得相關條目將被清空。表中得任何改變是值表中任何數(shù)據(jù)或者是結(jié)構的改變,包括insert,update,delete,truncate,alter table,drop table或者是drop database 包括那些映射到改變了的表的使用merge表的查詢,顯然,者對于頻繁更新的表,查詢緩存不合適,對于一些不變的數(shù)據(jù)且有大量相同sql查詢的表,查詢緩存會節(jié)省很大的性能。

工作流程

1.服務器接收SQL,以SQL和一些其他條件為key查找緩存表
2.如果找到了緩存,則直接返回緩存
3.如果沒有找到緩存,則執(zhí)行SQL查詢,包括原來的SQL解析,優(yōu)化等。
4.執(zhí)行完SQL查詢結(jié)果以后,將SQL查詢結(jié)果緩存入緩存表

命中條件

緩存存在一個hash表中,通過查詢SQL,查詢數(shù)據(jù)庫,客戶端協(xié)議等作為key,在判斷命中前,mysql不會解析SQL,而是使用SQL去查詢緩存,SQL上的任何字符的不同,如空格,注釋,都會導致緩存不命中。如果查詢有不確定的數(shù)據(jù)like now(),current_date(),那么查詢完成后結(jié)果者不會被緩存,包含不確定的數(shù)的是不會放置到緩存中。

查看查詢緩存情況

show variables like '%query_cache%'

query_cache_type 為 ON 表示已經(jīng)開啟

開啟查詢緩存

vi /etc/my.cnf
[mysqld]中添加:

query_cache_size = 20M
query_cache_type = ON

重啟使其生效

service mysql restart

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI