當前位置:首頁 » 文件管理 » 緩存memcached

緩存memcached

發布時間: 2022-12-24 01:42:27

python 操作memcached

1、設定緩存放在那裡:CACHE_BACKEND
也可以使用memcached:CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
多個memcached:CACHE_BACKEND = 'memcached://172.19.26.240:11211;172.19.26.242:11211/'
/// pip install python-memcached
2、python 操作memcached:

import memcache

mc = memcache.Client(['139.129.5.191:12000'], debug=True)

mc.set("name", "python")

ret = mc.get('name')
print (ret)

python

3、設置權重

import memcache
mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2),('1.1.1.3:12000',3)])
mc.set('k1','value1')
ret = mc.get('k1')
print (ret)
4、已經存在的鍵重復添加會出錯:

import memcache
mc = memcache.Client(['0.0.0.0:12000'])
mc.add('k1', 'v1')
mc.add('k1', 'v2') # 報錯,對已經存在的key重復添加,失敗!!!
例如:
ret1 = mc.add('name','tom')
print(refalse)
ret2 = mc.add('name','jack')
print(retrue)
結果:
False #當已經存在key 那麼返回false
True #如果不存在key 那麼返回treue
5、替換操作:replace,如果鍵不存在,出錯

import memcache
mc = memcache.Client(['0.0.0.0:12000'])
mc.set('name','tom')
re = mc.get('name')
print(re)
rereplace = mc.replace('name','jack')
re = mc.get('name')
print(rereplace,re)
結果:
tom #第一次賦值
True jack #如果存在key那麼修改成功為yaoyao 返回True
rereplace = mc.replace('name1','hahaha')
re = mc.get('name1')
print(rereplace,re)
結果:
False None #如果不存在key,修改失敗,返回空值
6、set:鍵值存在,就修改,不存在,則創建
import memcache
mc = memcache.Client(['0.0.0.0:12000'])
mc.set('name','tom')
re = mc.get('name')
print('set用法',re) #設置一個鍵值對
dic = {'name':'to,','age':'19','job':'IT'}
mc.set_multi(dic) #設置多個鍵值對

mcname = mc.get('name')
mcage = mc.get('age')
mcjob = mc.get('job')
print('set_multi用法:',mcname,mcage,mcjob)
7、delete:
import memcache
mc = memcache.Client(['0.0.0.0:12000'])
mc.set('name','tom')
re = mc.get('name')
print('存在',re)
mc.delete('name')
re = mc.get('name')
print('刪除',re) #刪除一個鍵值對
8、get

import memcache
mc = memcache.Client(['0.0.0.0:12000'])
mc.set('name','tom')
re = mc.get('name')
print('get',re) #獲取一個鍵值對
dic = {'name':'to,','age':'19','job':'IT'}
mc.set_multi(dic)
regetmu=mc.get_multi(['name','age','job'])
print('get_multi',re) #獲取多個鍵值對的值
9、append,prepend
import memcache
mc = memcache.Client(['0.0.0.0:12000'])
mc.set('num','第一|')
re = mc.get('num')
print(re)
mc.append('num','追加第二個') #在第一後面追加
re = mc.get('num')
print(re)
mc.prepend('num','我是零個') #在第一前面追加
re = mc.get('num')
print(re)
結果:
第一|
第一|追加第二個
我是零個第一|追加第二個
10、decr,incr自增自減

import memcache
mc = memcache.Client(['0.0.0.0:12000'])
mc.set('num','1')
re = mc.get('num')
print('我是沒加過的值',re)
mc.incr('num','9')
re = mc.get('num')
print('我是加上新增後的值',re)
mc.decr('num','5')
re = mc.get('num')
print('我是減去的值',re)

我是沒加過的值 1
我是加上新增後的值 10
是減去的值 5
11、鎖機制:gets cas

import memcache
mc = memcache.Client(['0.0.0.0:12000'],cache_cas=True)
mc.set('count','10')
reget = mc.get('count')
print('件數',reget)
regets = mc.gets('count')
print(regets)

下面的設置將會執行失敗,剖出異常,從而避免非正常數據的產生
recas = mc.cas('count','11')
print(recas)
regets = mc.gets('count')
print('修改',regets)

❷ 什麼是memcached

memcached是一種高性能的內存式緩存系統,通過將數據存儲在內存中減少讀取資料庫的次數

❸ 如何將php session信息緩存到memcached裡面

在PHP的ini配置文件裡面提供了[Session]相關配置,可以支持將信息存到文件或memcached伺服器裡面。由配置項session.save_handler = memcached決定。大多數場景,該session數據並不需要持久化,且為了提升網站性能,會選擇將session信息緩存到memcached裡面。
需要修改php.ini配置文件:
1、session段
找到[Session]段落,修改存儲引擎為:
session.save_handler = memcached(注意是帶d擴展)
修改存儲地址,即OCS訪問地址為:
session.save_path = 「be6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com:11211″(注意帶d擴展,則前面不用加tcp://,不帶d的擴展需要加)
修改緩存到memcached的key的時間
session.gc_maxlifetime = 1440(單位是秒,強烈建議必須設置一個合理時間,以保證OCS始終只緩存熱點數據)
2、memcached段
在php.ini的全局段,建一個單獨段落[memcached],然後在空白地方加入下面配置
[memcached]
memcached.use_sasl = On
memcached.sess_binary = On
memcached.sess_sasl_username = 「your_ocs_name」
memcached.sess_sasl_password = 「your_ocs_password」
memcached.sess_locking = Off
舉例:
<?php

$memc = new Memcached();

$memc->setOption(Memcached::OPT_COMPRESSION, false);

$memc->setOption(Memcached::OPT_BINARY_PROTOCOL, true);

$memc->addServer(「be6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com」, 11211);

$memc->setSaslAuthData(「your_ocs_name」, 「your_ocs_password」);

echo $memc->get(「memc.sess.key. ttrct9coa2q62r2sodlq4qf376″);

/*注意這里的key是有前綴的,由php.ini中memcached.sess_prefix欄位決定,默認值為「memc.sess.key.」。然後再拼接上面打出來的sessionid「ttrct9coa2q62r2sodlq4qf376」即可。*/

?>

該代碼輸出如下:

ocs_key|s:13:」session_value」;

即PHP SESSION已經成功寫入OCS。

❹ 緩存系統中的主要使用的數據結構是什麼

緩存系統中的主要使用的數據結構是memcached。

memcached是一套分布式的高速緩存系統,由LiveJournal的Brad Fitzpatrick開發,但被許多網站使用。這是一套開放源代碼軟體,以BSD license授權發布。

memcached的API使用三十二比特的循環冗餘校驗(CRC-32)計算鍵值後,將數據分散在不同的機器上。當表格滿了以後,接下來新增的數據會以LRU機制替換掉。

由於memcached通常只是當作緩存系統使用,所以使用memcached的應用程序在寫回較慢的系統時(像是後端的資料庫)需要額外的代碼更新memcached內的數據。

(4)緩存memcached擴展閱讀:

一、存儲方式

為了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。由於數據僅存在於內存中,因此重啟memcached、重啟操作系統會導致全部數據消失。

另外,內容容量達到指定值之後,就基於LRU(Least Recently Used)演算法自動刪除不使用的緩存。memcached本身是為緩存而設計的伺服器,因此並沒有過多考慮數據的永久性問題。

二、通信分布式

memcached盡管是「分布式」緩存伺服器,但伺服器端並沒有分布式功能。各個memcached不會互相通信以共享信息。那麼,怎樣進行分布式呢?這完全取決於客戶端的實現。本文也將介紹memcached的分布式。

❺ win10怎麼安裝memcache緩存服務

1. 下載memcache的windows穩定版,解壓放某個盤下面,比如在c:\memcached
2. 在終端(也即cmd命令界面)下輸入 'c:\memcached\memcached.exe -d install' 安裝
3. 再輸入: 'c:\memcached\memcached.exe -d start' 啟動。NOTE: 以後memcached將作為windows的一個服務每次開機時自動啟動。這樣伺服器端已經安裝完畢了。
4.下載php_memcache.dll,請自己查找對應的php版本的文件
5. 在C:\winnt\php.ini 加入一行 'extension=php_memcache.dll'
6.重新啟動Apache,然後查看一下phpinfo,如果有memcache,那麼就說明安裝成功

❻ 常用的緩存技術

第一章 常用的緩存技術
1、常見的兩種緩存

本地緩存:不需要序列化,速度快,緩存的數量與大小受限於本機內存
分布式緩存:需要序列化,速度相較於本地緩存較慢,但是理論上緩存的數量與大小無限(因為緩存機器可以不斷擴展)
2、本地緩存

Google guava cache:當下最好用的本地緩存
Ehcache:spring默認集成的一個緩存,以spring cache的底層緩存實現類形式去操作緩存的話,非常方便,但是欠缺靈活,如果想要靈活使用,還是要單獨使用Ehcache
Oscache:最經典簡單的頁面緩存
3、分布式緩存

memcached:分布式緩存的標配
Redis:新一代的分布式緩存,有替代memcached的趨勢
3.1、memcached

經典的一致性hash演算法
基於slab的內存模型有效防止內存碎片的產生(但同時也需要估計好啟動參數,否則會浪費很多的內存)
集群中機器之間互不通信(相較於Jboss cache等集群中機器之間的相互通信的緩存,速度更快<--因為少了同步更新緩存的開銷,且更適合於大型分布式系統中使用)
使用方便(這一點是相較於Redis在構建客戶端的時候而言的,盡管redis的使用也不困難)
很專一(專做緩存,這一點也是相較於Redis而言的)
3.2、Redis

可以存儲復雜的數據結構(5種)
strings-->即簡單的key-value,就是memcached可以存儲的唯一的一種形式,接下來的四種是memcached不能直接存儲的四種格式(當然理論上可以先將下面的一些數據結構中的東西封裝成對象,然後存入memcached,但是不推薦將大對象存入memcached,因為memcached的單一value的最大存儲為1M,可能即使採用了壓縮演算法也不夠,即使夠,可能存取的效率也不高,而redis的value最大為1G)
hashs-->看做hashTable
lists-->看做LinkedList
sets-->看做hashSet,事實上底層是一個hashTable
sorted sets-->底層是一個skipList
有兩種方式可以對緩存數據進行持久化
RDB
AOF
事件調度
發布訂閱等
4、集成緩存

專指spring cache,spring cache自己繼承了ehcache作為了緩存的實現類,我們也可以使用guava cache、memcached、redis自己來實現spring cache的底層。當然,spring cache可以根據實現類來將緩存存在本地還是存在遠程機器上。

5、頁面緩存

在使用jsp的時候,我們會將一些復雜的頁面使用Oscache進行頁面緩存,使用非常簡單,就是幾個標簽的事兒;但是,現在一般的企業,前台都會使用velocity、freemaker這兩種模板引擎,本身速度就已經很快了,頁面緩存使用的也就很少了。

總結:

在實際生產中,我們通常會使用guava cache做本地緩存+redis做分布式緩存+spring cache就集成緩存(底層使用redis來實現)的形式
guava cache使用在更快的獲取緩存數據,同時緩存的數據量並不大的情況
spring cache集成緩存是為了簡單便捷的去使用緩存(以註解的方式即可),使用redis做其實現類是為了可以存更多的數據在機器上
redis緩存單獨使用是為了彌補spring cache集成緩存的不靈活
就我個人而言,如果需要使用分布式緩存,那麼首先redis是必選的,因為在實際開發中,我們會緩存各種各樣的數據類型,在使用了redis的同時,memcached就完全可以舍棄了,但是現在還有很多公司在同時使用memcached和redis兩種緩存。

❼ memcache怎樣清除緩存兩種方法

memcache確實是一個加速很好的緩存器,什麼都可以緩存~
——方法一——-cmd上直接清除,【清除所有緩存】
$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
flush_all
OK
quit
Connection to localhost closed by foreign host.

——方法二——-PHP清理緩存方法
<?php
$memcache = new Memcache;
$memcache->connect(『localhost』, 11211) or die (「Could not connect」);
$version = $memcache->getVersion();
echo 」Server』s version: 」.$version.」
\n」;
?>
<?php
$memcache = new Memcache;
$memcache->connect(『localhost』, 11211) or die (「Could not connect」);
print_r($memcache->getStats());
/**
* Array
* (
* [pid] => 8052
* [uptime] => 9205
* [time] => 1205898428
* [version] => 1.2.5 www.shellsec.com
* [pointer_size] => 32
* [rusage_user] => 0.008000
* [rusage_system] => 0.000000
* [curr_items] => 1
* [total_items] => 17
* [bytes] => 57
* [curr_connections] => 2
* [total_connections] => 15
* [connection_structures] => 3
* [cmd_get] => 9
* [cmd_set] => 23
* [get_hits] => 5
* [get_misses] => 4
* [evictions] => 0
* [bytes_read] => 671
* [bytes_written] => 850
* [limit_maxbytes] => 10485760
* [threads] => 1
* )
*/
?>
<?php
$memcache = new Memcache;
$memcache->connect(『localhost』, 11211) or die (「Could not connect」);
$memcache->set( 』name』, 』leo』, 0, 30);
if(!$memcache->add( 』name』, 』susan』, 0, 30))
{
echo 』susan is exist』;
};
$memcache->replace( 』name』, 』lion』, 0, 300);
echo $memcache->get( 』name』);
$memcache->delete( 』name』, 5);
?>
<?php
function _callback_memcache_failure($host, $port) {
print 」memcache 』$host:$port』 failed」;
}
$memcache = new Memcache;
$memcache->addServer(』192.168.1.116′, 11211);
$memcache->setServerParams(』192.168.1.116′, 11211, 1, 15, true,

『_callback_memcache_failure』);
echo $memcache->getServerStatus(』192.168.1.116′, 11211);
?>
<?php
$memcache = new Memcache;
$memcache->connect(『localhost』, 11211);
$memcache->set(『test_item』, 8);
$memcache->increment(『test_item』, 4);
echo $memcache->decrement(『test_item』, 7);
// 顯示 5
?>

/usr/local/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P
/tmp/memcached.pid
memcached的服務正式啟動
Memcache::add — 添加一個值,如果已經存在,則返回false
Memcache::addServer — 添加一個可供使用的伺服器地址
Memcache::close — 關閉一個Memcache對象
Memcache::connect — 創建一個Memcache對象
memcache_debug — 控制調試功能
Memcache::decrement — 對保存的某個key中的值進行減法操作
Memcache::delete — 刪除一個key值
Memcache::flush — 清除所有緩存的數據
Memcache::get — 獲取一個key值
Memcache::getExtendedStats — 獲取進程池中所有進程的運行系統統計
Memcache::getServerStatus — 獲取運行伺服器的參數
Memcache::getStats — 返回伺服器的一些運行統計信息
Memcache::getVersion — 返回運行的Memcache的版本信息
Memcache::increment — 對保存的某個key中的值進行加法操作
Memcache::pconnect — 創建一個Memcache的持久連接對象
Memcache::replace — R對一個已有的key進行覆寫操作
Memcache::set — 添加一個值,如果已經存在,則覆寫
Memcache::setCompressThreshold — 對大於某一大小的數據進行壓縮
Memcache::setServerParams — 在運行時修改伺服器的參數
建議用面向對象的方式來測試這個庫:
Memcache::getVersion方法的作用是返回運行的Memcache的版本信息。
Memcache::getStats 方法的作用是返回伺服器的一些運行統計信息。Memcache::getStats方法有三個參
數,第一個參數表示要求返回的類型:reset, malloc, maps, cachemp, slabs, items, sizes;第二個
參數和第三個參數是在第一個參數設置為「cachemp」時使用的。Memcache::getExtendedStats方法的
作用是獲取進程池中所有進程的運行系統統計。
Memcache::connect方法的作用是創建一個Memcache對象。Memcache::pconnect方法的作用是創建一個
Memcache的持久連接對象。Memcache::close方法的作用是關閉一個Memcache對象。
Memcache::set 方法的作用是添加一個值,Memcache::set方法有四個參數,第一個參數是key,第二個參
數是value,第三個參數可選,表示是否壓縮保存,第四個參數可選,用來設置一個過期自動銷毀的時間
。Memcache::add方法的作用和Memcache::set方法類似,區別是如果 Memcache::add方法的返回值為
false,表示這個key已經存在,而Memcache::set方法則會直接覆寫。 Memcache::get方法的作用是獲取
一個key值,Memcache::get方法有一個參數,表示key。Memcache::replace 方法的作用是對一個已有的
key進行覆寫操作,Memcache::replace方法有四個參數,作用和Memcache::set方法的相同。
Memcache::delete方法的作用是刪除一個key值,Memcache::delete方法有兩個參數,第一個參數表示key
,第二個參數可選,表示刪除延遲的時間。
memcache_debug()函數的作用是控制調試功能,前提是php在編譯的時候使用了–enable-debug選項,否
則這個函數不會有作用。
Memcache::addServer 方法的作用是添加一個可供使用的伺服器地址,Memcache::addServer方法有8個參
數,除了第一個參數意外,其他都是可選的,第一個參數表示伺服器的地址,第二個參數表示埠,第三
個參數表示是否是一個持久連接,第四個參數表示這台伺服器在所有伺服器中所佔的權重,第五個參數表
示連接的持續時間,第六個參數表示連接重試的間隔時間,默認為15,設置為-1表示不進行重試,第七個
參數用來控制伺服器的在線狀態,第8個參數允許設置一個回掉函數來處理錯誤信息。
Memcache::setServerParams方法的作用是在運行時修改伺服器的參數,Memcache::setServerParams方法
有六個參數,Memcache::addServer方法少了第三和第四個參數。 Memcache::getServerStatus方法的作
用是獲取運行伺服器的參數,兩個參數分別表示的地址和埠。
Memcache::flush方法的作用是清除所有緩存的數據,但是不會削去使用的內存空間。
Memcache::increment方法的作用是對保存的某個key中的值進行加法操作,Memcache::decremen方法的作
用是對保存的某個key中的值進行減法操作。

❽ C# 操作Memcached

要在nuget里引用(安裝) EnyimMemcached ,下面是以調用阿里雲的ocs(memcached)服務為例

using System;

using Enyim.Caching;

namespace MemcacheTest

{

///

/// MemcachedClient 幫組類 對外提供介面方法

    ///

public class MemcachedHelper    {      

///      

/// 定義一個靜態MemcachedClient客戶端,它隨類一起載入,所有對象共用

        ///

private static MemcachedClient mclient;      

///      

/// 靜態構造函數,初始化Memcached客戶端

        ///

static MemcachedHelper()    

  {           

mclient = MemCached.getInstance();       

}      

///     

  /// 向Memcached緩存中添加一條數據

     ///

///返回是否添加成功

public static bool SetValue(string groupName,string key, object value, DateTime expiry)       

{          

key = groupName + "-" + key;           

return mclient.Store(Enyim.Caching.Memcached.StoreMode.Set,key, value, expiry);     

  }       

///     

  /// 向Memcached緩存中添加一條數據 默認超時24小時 

////

public static bool SetValue(string groupName, string key, object value)      

{          

key = groupName + "-" + key;           

eturn mclient.Store(Enyim.Caching.Memcached.StoreMode.Set, key, value, DateTime.Now.AddHours(24));      

}       

///      

/// 通過key 來得到一個對象

   ///

public static object GetValue(string groupName, string key)    

  {           

key = groupName + "-" + key;      

    return mclient.Get(key);       

}      

///      

/// 通過key 來得到一個對象(前類型)

    ///

public static T GetValue(string groupName, string key)   

    {          

key = groupName + "-" + key;     

      return mclient.Get(key);     

  }       

///       

/// 清除指定key的cache

///

public static bool Remove(string groupName, string key)     

  {          

key = groupName + "-" + key;         

  return mclient.Remove(key);     

  }      

///     

  /// 清除所有cache

       ///

public static void RemoveAll()    

  {       

    mclient.FlushAll();     

  }

  }

}

usingSystem.Net;

usingEnyim.Caching;

usingEnyim.Caching.Configuration;

usingEnyim.Caching.Memcached;

namespaceMemcacheTest

{

///

///MemcachedClient 配置類

///

publicsealedclassMemCached

    {

privatestaticMemcachedClient MemClient;

staticreadonlyobjectpadlock =newobject();

//線程安全的單例模式

()

        {

if(MemClient ==null)

            {

lock(padlock)

                {

if(MemClient ==null)

                    {

                        MemClientInit();

                    }

                }

            }

returnMemClient;

        }

staticvoidMemClientInit()

        {

//初始化緩存

MemcachedClientConfiguration memConfig =();

IPAddress newaddress = IPAddress.Parse(Dns.GetHostEntry("XXXXXXXXXX.m.cnhzalicm10pub001.ocs.aliyuncs.com").AddressList[0].ToString());//xxxx替換為ocs控制台上的「內網地址」

IPEndPoint ipEndPoint =newIPEndPoint(newaddress,11211);// 配置文件 - ip

            memConfig.Servers.Add(ipEndPoint);// 配置文件 - 協議

            memConfig.Protocol = MemcachedProtocol.Binary;

// 配置文件-許可權,如果使用了免密碼功能,則無需設置userName和password

memConfig.Authentication.Type =typeof(PlainTextAuthenticator);

memConfig.Authentication.Parameters["zone"] ="";

memConfig.Authentication.Parameters["userName"] ="XXXXXXXXXXXXXXXXX";

memConfig.Authentication.Parameters["password"] ="XXXXXXXXXX";

//下面請根據實例的最大連接數進行設置

memConfig.SocketPool.MinPoolSize =5;

memConfig.SocketPool.MaxPoolSize =200;

MemClient =newMemcachedClient(memConfig);

        }

    }

}

程序調用

MemcachedHelper.SetValue(groupName,strKey, strValue, DateTime.Now.AddMinutes(5));

varrestr = MemcachedHelper.GetValue(groupName,strKey);

varobj = MemcachedHelper.GetValue(groupName,"p001");

❾ memcached 緩存什麼數據

memcached 是流行的key/value緩存軟體。就是說緩存的內容是以key/value對的形式緩存的。只要值可以被序列化且大小不超過系統限制均可緩存。一般用來緩存代碼表,頻繁使用的查詢結果等。

❿ 如何更新MemcacheD Is Your Friend緩存

步驟如下:
1、php安裝Memcached插件。
2、WordPress安裝Memcached緩存插件(MemcacheD Is Your Friend)。
3、部署Memcached內存緩存圖形化界面監控頁面。

熱點內容
雲伺服器頁面文件內存 發布:2025-08-21 20:08:25 瀏覽:715
網閘如何配置安全 發布:2025-08-21 19:28:28 瀏覽:442
怎麼遠程管理伺服器 發布:2025-08-21 19:25:14 瀏覽:554
小米攝影頭如何存貯伺服器 發布:2025-08-21 19:10:50 瀏覽:622
伺服器網路慢怎麼辦 發布:2025-08-21 19:10:41 瀏覽:816
linux設置域名 發布:2025-08-21 18:59:33 瀏覽:120
55you腳本 發布:2025-08-21 18:58:10 瀏覽:374
本機伺服器監聽ip 發布:2025-08-21 18:49:26 瀏覽:578
雲腳本解除 發布:2025-08-21 18:49:22 瀏覽:604
php加密代碼破解 發布:2025-08-21 18:49:21 瀏覽:75