সমস্ত কী মেমকেচেডে সেট করুন


131

আমি কীভাবে আমার মেমক্যাচ করা ইভেন্টগুলিতে সেট করতে পারি?

আমি গুগলিংয়ের চেষ্টা করেছি, তবে PHPএকটি getAllKeysপদ্ধতি সমর্থন করে এমনটি ছাড়া আর কিছুই পাইনি , যার অর্থ এটি কোনওভাবেই করা সম্ভব। আমি কীভাবে টেলনেট সেশনের মধ্যে একই পেতে পারি?

আমি মেমক্যাচড চিট শিট এবং মেমক্যাচড টেলনেট কমান্ডের সংক্ষিপ্তসারে উল্লিখিত পুনরুদ্ধার সম্পর্কিত সমস্ত বিকল্পগুলি চেষ্টা করে দেখেছি , তবে এর মধ্যে কোনওটিই কাজ করে না এবং এটি করার সঠিক উপায়টি খুঁজে পেতে আমার ক্ষতি হয়।

দ্রষ্টব্য: আমি বর্তমানে এটি উন্নয়নের ক্ষেত্রে করছি, সুতরাং এটি ধরে নেওয়া যেতে পারে যে নতুন কীগুলি সেট হওয়ার কারণে বা অন্যান্য বর্ণের পরিস্থিতি সংঘটিত হওয়ার কারণে কোনও সমস্যা হবে না এবং কীগুলির সংখ্যাও সীমাবদ্ধ থাকবে।


আমার পোস্ট পরীক্ষা করুন । আমার একই সমস্যা ছিল এবং আমি একটি সমাধান খুঁজে পেয়েছি।
পিটার ভার্গা

github.com/clickalicious/phpmemadmin সহায়ক মনে হচ্ছে (যদি আমি কীভাবে এটি লারাভেল হোমস্টেড ভ্যাগ্রেন্টের সাথে কাজ করতে পারি তা যদি বুঝতে পারি; বর্তমানে এটি কোনও কী দেখাচ্ছে না)।
রায়ান

উত্তর:


178

একটি উপায় খুঁজে পেয়েছি, এখানে লিঙ্কটির জন্য ধন্যবাদ (মূল গুগল গ্রুপ আলোচনার সাথে এখানে )

প্রথমে Telnetআপনার সার্ভারে:

telnet 127.0.0.1 11211

এরপরে, স্ল্যাব আইডিগুলি পেতে আইটেমগুলি তালিকাভুক্ত করুন:

পরিসংখ্যান আইটেম
স্ট্যাট আইটেম: 3: নম্বর 1
স্ট্যাট আইটেম: 3: বয়স 498
স্ট্যাট আইটেম: 22: সংখ্যা 1
স্ট্যাট আইটেম: 22: বয়স 498
শেষ

আইটেমগুলির পরে প্রথম সংখ্যাটি হ'ল স্ল্যাব আইডি। সর্বাধিক সংখ্যক কী ডাম্প করার সীমা সহ প্রতিটি স্ল্যাব আইডির জন্য ক্যাশে ডাম্পের অনুরোধ করুন:

পরিসংখ্যান ক্যাচাম্প 3 100
আইটিইএম দেখেছে d 1256056128 গুলি]
শেষ

পরিসংখ্যান ক্যাচম্প 22 100
আইটিইএম দেখেছে d 1256056128 গুলি]
শেষ


4
দয়া করে মনে রাখবেন যে পরিসংখ্যান ক্যাশেডাম্প একটি অননুমোদিত বৈশিষ্ট্য এবং এটি মেমচেড দল দ্বারা সমর্থিত নয়। এটি কেবলমাত্র ডিবাগিংয়ের জন্য এবং উত্পাদন ব্যবহারের উদ্দেশ্যে নয়।
মাইকাউইড

ওহ ঠিক আছে. আমি আমার প্রশ্নে যেমন বলেছি, আমি বর্তমানে কেবলমাত্র উন্নয়ন মোডে আছি এবং ডিবাগিংয়ের জন্য এটি প্রয়োজন।
মিউ 無

3
bবাইটস, sযুগ যুগের সেকেন্ড
আব্রাহাম সংঘ

1
@ ড্যান হতে পারে আপনি প্রথমে সক্রিয় উত্তরগুলি দিয়ে দেখছেন, যা উত্তর পোস্টগুলিকে সর্বশেষে কার্যকলাপ করেছিল তার উপর ভিত্তি করে সাজান। যদি হ্যাঁ হয় তবে আপনি প্রশ্নের পাঠ্যের ঠিক নীচে থেকে সক্রিয় / পুরানো / ভোটের একটি নির্বাচন করে এটি পরিবর্তন করতে পারেন। তা ছাড়া, এই উত্তরটি ছদ্মবেশী মোডে শীর্ষে রয়েছে।
মিউ 無

2
এছাড়াও lru_crawler metadump allসমস্ত ক্যাশে কীগুলি ফেলে দেবে, "1" প্রথম 1 এম নয় .. github.com/memcached/memcached/blob/…
কাওস

65

memdump

এর জন্য memcdump(কখনও কখনও memdump) কমান্ড রয়েছে libmemcached-tools, যেমন:

memcdump --servers=localhost

যা সমস্ত কীগুলি ফিরিয়ে দেবে।


memcached-tool

সাম্প্রতিক সংস্করণে memcachedরয়েছে memcached-toolকমান্ড যেমন

memcached-tool localhost:11211 dump | less

যা সমস্ত কী এবং মানকে ডাম্প করে।

আরো দেখুন:


4
'মেমডম্প' ​​দিয়ে সাবধান এই কমান্ডটি আপনার টার্মিনালটি ক্র্যাশ করার দুর্দান্ত উপায় way
deweydb

5
সাবধান হন! এর জন্য dumpসাব-কমান্ডটি memcached-toolক্যাশেটি সাফ করে দিয়েছে বলে মনে হয় :(displaystats
Markমার্কহু

4
উবুন্টু জেনিয়ালে, যে প্যাকেজটিতে মেমডম্প থাকে তাকে ডাকা হয় libmemcached-toolsএবং তার পরিবর্তে সরঞ্জামের বাইনারিটিকে মেমকডম্প বলা হয়।
তারপরেইডিকুড

5
যারা memcached-toolএটির সন্ধান করছেন তাদের কোনও ডিরেক্টরিতে এটি লুকানো রয়েছে, যা কোনও মানক নাও থাকতে পারে PATH- কমপক্ষে উবুন্টু জেনিয়ালে - এখানে:/usr/share/memcached/scripts/
sxc731

17

উপর বেজ @mu無 এখানে উত্তর দিন। আমি একটি ক্যাশে ডাম্প স্ক্রিপ্ট লিখেছি।

স্ক্রিপ্টটি কোনও মেমক্যাচ করা সার্ভারের সমস্ত সামগ্রী ফেলে দেয়। এটি উবুন্টু 12.04 এর সাথে পরীক্ষা করা হয়েছে এবং একটি লোকালহোস্ট ম্যাকচেড হয়েছে, যাতে আপনার মাইলেজ আলাদা হতে পারে।

#!/usr/bin/env bash

echo 'stats items'  \
| nc localhost 11211  \
| grep -oe ':[0-9]*:'  \
| grep -oe '[0-9]*'  \
| sort  \
| uniq  \
| xargs -L1 -I{} bash -c 'echo "stats cachedump {} 1000" | nc localhost 11211'

এটি কী করে, এটি সমস্ত ক্যাশে স্ল্যাবগুলির মধ্য দিয়ে যায় এবং প্রতিটির 1000 টি এন্ট্রি মুদ্রণ করে।

দয়া করে এই স্ক্রিপ্টের নির্দিষ্ট সীমা সম্পর্কে সচেতন হন অর্থাত্ এটি কোনও 5 জিবি ক্যাশে সার্ভারের জন্য স্কেল না করে। তবে এটি একটি স্থানীয় মেশিনে ডিবাগিং উদ্দেশ্যে কার্যকর।


3
ডেবিয়ান 8-এ memcached 1.4.21-1.1+deb8u1আমাকে স্পষ্টভাবে ম্যাকচেডে একটি প্রস্থান কমান্ড প্রেরণ করতে হয়েছিল। আমি আপনার আদেশটি এটিতে পরিবর্তন করেছি এবং এখন সঠিকভাবে কাজ echo -e "stats items\nquit" | nc localhost 11211 | grep -oe ':[0-9]*:' | grep -oe '[0-9]*' | sort | uniq | xargs -L1 -I{} bash -c 'echo -e "stats cachedump {} 1000\nquit" | nc localhost 11211'করছি: এটি ভাগ করে নেওয়ার জন্য ধন্যবাদ! ডিবাগিংয়ের জন্য বেশ দরকারী :)
Cha0s

কোনও কারণে গ্রেপ -ও '[0-9] *' ম্যাকের আইটার্ম 2 এ কাজ করে না, গ্রেপ-ইও'র সাথে প্রতিস্থাপন করতে হয়েছিল [0-9] {1,99} '
সর্বোচ্চ

এটি নিফটি, তবে এটি কিছু কী মিস করে, কোনও ধারণা কেন?
ব্যবহারকারী

14

আপনার যদি পিএইচপি এবং পিএইচপি-মেমক্যাচ ইনস্টল থাকে তবে আপনি চালাতে পারেন

$ php -r '$c = new Memcached(); $c->addServer("localhost", 11211); var_dump( $c->getAllKeys() );'

1
অ্যাড সার্ভারের পরে আপনার এটি করা দরকার: মেমক্যাচ করা $c->setOption(Memcached::OPT_BINARY_PROTOCOL, false); নতুন সংস্করণগুলির জন্য
হ্যাক 4mer

তবুও উত্তরটি
বুল

2
@ ওল্ফগ্যাংবিলেসন - এটি মেমচেড করা বাগের কারণে - এটি নতুন সংস্করণে সংশোধন করা হয়েছে। github.com/php-memcached-dev/php-memcached/issues/203
বিিলনোহ

@ বিলিন্নাহ থেক্স, আমি এখনই ফলাফলগুলি দেখতে পাচ্ছি এবং
মেমচেডগুলি

12

সজোরে আঘাত

বাশ-এ কীগুলির তালিকা পেতে, এই পদক্ষেপগুলি অনুসরণ করুন।

প্রথমে নীচের মোড়ক ফাংশনটি এটি ব্যবহার করতে সহজ করার জন্য সংজ্ঞা দিন (কপি করুন এবং শেলটিতে আটকান):

function memcmd() {
  exec {memcache}<>/dev/tcp/localhost/11211
  printf "%s\n%s\n" "$*" quit >&${memcache}
  cat <&${memcache}
}

1.4.31 এবং তদূর্ধ্বকে স্মরণ করা হয়েছে

আপনি lru_crawler metadump allক্যাশে থাকা আইটেমগুলির (সকলের) মেটাডেটা (বেশিরভাগ) ডাম্প করতে কমান্ডটি ব্যবহার করতে পারেন ।

এর বিপরীতে cachedump, এটি তীব্র পারফরম্যান্স সমস্যা সৃষ্টি করে না এবং কী কী ডাম্প হতে পারে তার কোনও সীমাবদ্ধতা নেই।

পূর্বনির্ধারিত ফাংশনটি ব্যবহার করে উদাহরণ কমান্ড:

memcmd lru_crawler metadump all

দেখুন: রিলিজনিটস 1431


1.4.30 এবং নীচে মেমক্যাচ করা হয়েছে

আইটেম পরিসংখ্যান কমান্ড ব্যবহার করে স্ল্যাবগুলির তালিকা পান , যেমন:

memcmd stats items

প্রতিটি স্লাব শ্রেণীর জন্য, আপনি সীমা সীমা ( 0- সীমাহীন) সহ স্লাব আইডি নির্দিষ্ট করে আইটেমের তালিকা পেতে পারেন :

memcmd stats cachedump 1 0
memcmd stats cachedump 2 0
memcmd stats cachedump 3 0
memcmd stats cachedump 4 0
...

দ্রষ্টব্য: প্রতিটি মেমক্যাচ করা সার্ভারের জন্য আপনাকে এটি করতে হবে।

সমস্ত স্টাব থেকে সমস্ত কীগুলি তালিকাভুক্ত করতে এখানে ওয়ান লাইনার (প্রতি সার্ভারে):

for id in $(memcmd stats items | grep -o ":[0-9]\+:" | tr -d : | sort -nu); do
    memcmd stats cachedump $id 0
done

দ্রষ্টব্য: উপরের কমান্ডটি আইটেমগুলিতে অ্যাক্সেস করার সময় মারাত্মক পারফরম্যান্স সমস্যা সৃষ্টি করতে পারে, তাই এটি সরাসরি চালানোর পরামর্শ দেওয়া হয় না।


মন্তব্য:

stats cachedumpকেবল HOT_LRU(আইআইআরসি?) ডাম্প করে , যা ক্রিয়াকলাপ হওয়ার সাথে সাথে পটভূমি থ্রেড দ্বারা পরিচালিত হয়। এর অর্থ এটি একটি নতুন পর্যায়ে রয়েছে যা 2Q অ্যালগো সক্ষম করেছে, আপনি কেবলমাত্র LRU এর মধ্যে যা আছে তার স্ন্যাপশট ভিউ পাবেন।

আপনি যদি সমস্ত কিছু দেখতে চান তবে lru_crawler metadump 1(বা lru_crawler metadump all) হ'ল নতুন বেশিরভাগ-সরকারী-সমর্থিত পদ্ধতি যা আপনার ইচ্ছা যতগুলি চাবি অবিচ্ছিন্নভাবে ডাম্প করবে। আপনি তাদেরকে অর্ডার থেকে সরিয়ে ফেলবেন তবে এটি সমস্ত এলআরইউর হিট করে এবং আপনি যদি আইটেমগুলি মুছতে / প্রতিস্থাপন না করেন তবে একাধিক রান একই ফলাফল পাওয়া উচিত।

সূত্র: জিএইচ -405


সম্পর্কিত:


5

পাইথন-মেমক্যাচড-স্ট্যাটাস প্যাকেজ, সবচেয়ে সহজ উপায় হ'ল https://github.com/abstatic/python-memcached-stats

কীগুলি () পদ্ধতিটি আপনাকে চালিত করা উচিত।

উদাহরণ -

from memcached_stats import MemcachedStats
mem = MemcachedStats()

mem.keys()
['key-1',
 'key-2',
 'key-3',
 ... ]

1
আপনি এটি কমান্ড লাইন থেকেও করতে পারেনpython -m memcached_stats <ip> <port>
মার্টিজন

1
এই মুহূর্তে কেবল পাইথন 2।
মারিউস

কী বা সংখ্যার ফিরিয়ে দেওয়া হয়েছে তার আকারের ক্ষেত্রে কি কোনও সীমা থাকবে?
লোকনাথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.