您好,登錄后才能下訂單哦!
如何提高memcache的緩存命中率,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
合理組合緩存 Key,保證 Key 最大復用率。
合理設置過期時間,減少因為緩存數據過期后被穿透
數據類型:都是k/v數據庫,但memcache只支持string,redis除了string,還支持list,set,hash等數據
內存管理:memcache內存用完時,會刪除用得最少的緩存;redis內存用完時,會把最少的緩存交換到磁盤里。
持久化:memcache不支持內存持久化,redis支持。redis持久化有兩種方式:RDB和AOF
RDB (redis db)
在指定的save m n
周期性對數據進行持久化。m秒有n條寫入記錄,則進行持久化AOF (appendonly filelog)
appendfsync everysec:每秒同步一次,意味著有最多1秒的
只支持string類型,并且不能持久化的內存緩存
mysql緩存機制就是緩存sql 文本及緩存結果,用KV形式保存再服務器內存中,如果運行相同的sql,服務器直接從緩存中去獲取結果,不需要在再去解析、優化、執行sql。如果這個表修改了,那么使用這個表中的所有緩存將不再有效,查詢緩存值得相關條目將被清空。表中得任何改變是值表中任何數據或者是結構的改變,包括insert,update,delete,truncate,alter table,drop table或者是drop database 包括那些映射到改變了的表的使用merge表的查詢,顯然,者對于頻繁更新的表,查詢緩存不合適,對于一些不變的數據且有大量相同sql查詢的表,查詢緩存會節省很大的性能。
1.服務器接收SQL,以SQL和一些其他條件為key查找緩存表
2.如果找到了緩存,則直接返回緩存
3.如果沒有找到緩存,則執行SQL查詢,包括原來的SQL解析,優化等。
4.執行完SQL查詢結果以后,將SQL查詢結果緩存入緩存表
緩存存在一個hash表中,通過查詢SQL,查詢數據庫,客戶端協議等作為key,在判斷命中前,mysql不會解析SQL,而是使用SQL去查詢緩存,SQL上的任何字符的不同,如空格,注釋,都會導致緩存不命中。如果查詢有不確定的數據like now(),current_date(),那么查詢完成后結果者不會被緩存,包含不確定的數的是不會放置到緩存中。
show variables like '%query_cache%'
query_cache_type 為 ON 表示已經開啟
vi /etc/my.cnf
[mysqld]中添加:
query_cache_size = 20M
query_cache_type = ON
重啟使其生效
service mysql restart
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。