LRU LFU算法介紹算法
LRU算法的設計原則是:若是一個數據在最近一段時間沒有被訪問到,那麼在未來它被訪問的可能性也很小。也就是說,當限定的空間已存滿數據時,應當把最久沒有被訪問到的數據淘汰。服務器
LFU(Least Frequently Used)最近最少使用算法。它是基於「若是一個數據在最近一段時間內使用次數不多,那麼在未來一段時間內被使用的可能性也很小」的思路。併發
LRU的淘汰規則是基於訪問時間,而LFU是基於訪問次數的。memcached
Memcached分配內存機制 slab alloction大數據
Memcached會預先分配內存,memcached分配內存方式稱之爲allocator,首先,這裏有3個概念:
1 slab
2 page
3 chunk.net
4 item設計
LRU LFU算法介紹進程
LRU算法的設計原則是:若是一個數據在最近一段時間沒有被訪問到,那麼在未來它被訪問的可能性也很小。也就是說,當限定的空間已存滿數據時,應當把最久沒有被訪問到的數據淘汰。內存
LFU(Least Frequently Used)最近最少使用算法。它是基於「若是一個數據在最近一段時間內使用次數不多,那麼在未來一段時間內被使用的可能性也很小」的思路。get
LRU的淘汰規則是基於訪問時間,而LFU是基於訪問次數的。
Memcached分配內存機制 slab alloction
Memcached會預先分配內存,memcached分配內存方式稱之爲allocator,首先,這裏有3個概念:
1 slab
2 page
3 chunk
4 item
啓動Memcache的服務器端:
[root@localhost]# /usr/local/bin/memcached -d -m 100 -u root -l 192.168.36.200 -p 11211 -c 256 -P /tmp/memcached.pid
-d選項是啓動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這裏是100MB,
-u是運行Memcache的用戶,我這裏是root,
-l是監聽的服務器IP地址,若是有多個地址的話,我這裏指定了服務器的IP地址192.168.36.200,
-p是設置Memcache監聽的端口,我這裏設置了11211,最好是1024以上的端口,咱們這裏統一使用11211
-c選項是最大運行的併發鏈接數,默認是1024,我這裏設置了256,按照你服務器的負載量來設定。
-P是設置保存Memcache的pid文件,我這裏是保存在/tmp/memcached.pid,
Memcached單進程最大使用內存爲2G,要使用更多內存,能夠分多個端口開啓多個Memcached進程
最大30天的數據過時時間,設置爲永久的也會在這個時間過時,常量REALTIME_MAXDELTA
60*60*24*30控制
最大鍵長爲250字節,大於該長度沒法存儲,常量KEY_MAX_LENGTH 250控制
單個item最大數據是1MB,超過1MB數據不予存儲,常量POWER_BLOCK 1048576進行控制,
它是默認的slab大小
最大同時鏈接數是200,經過 conn_init()中的freetotal進行控制,最大軟鏈接數是1024,經過
settings.maxconns=1024 進行控制
跟空間佔用相關的參數:settings.factor=1.25, settings.chunk_size=48, 影響slab的數據佔用和步進方式
啓動Memcache的服務器端:
[root@localhost]# /usr/local/bin/memcached -d -m 100 -u root -l 192.168.36.200 -p 11211 -c 256 -P /tmp/memcached.pid
-d選項是啓動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這裏是100MB,
-u是運行Memcache的用戶,我這裏是root,
-l是監聽的服務器IP地址,若是有多個地址的話,我這裏指定了服務器的IP地址192.168.36.200,
-p是設置Memcache監聽的端口,我這裏設置了11211,最好是1024以上的端口,咱們這裏統一使用11211
-c選項是最大運行的併發鏈接數,默認是1024,我這裏設置了256,按照你服務器的負載量來設定。
-P是設置保存Memcache的pid文件,我這裏是保存在/tmp/memcached.pid,
Memcached單進程最大使用內存爲2G,要使用更多內存,能夠分多個端口開啓多個Memcached進程 最大30天的數據過時時間,設置爲永久的也會在這個時間過時,常量REALTIME_MAXDELTA 60*60*24*30控制 最大鍵長爲250字節,大於該長度沒法存儲,常量KEY_MAX_LENGTH 250控制 單個item最大數據是1MB,超過1MB數據不予存儲,常量POWER_BLOCK 1048576進行控制, 它是默認的slab大小 最大同時鏈接數是200,經過 conn_init()中的freetotal進行控制,最大軟鏈接數是1024,經過 settings.maxconns=1024 進行控制 跟空間佔用相關的參數:settings.factor=1.25, settings.chunk_size=48, 影響slab的數據佔用和步進方式