আমার রেডিস ডিবিতে আমার হাতে প্রচুর prefix:<numeric_id>
হ্যাশ রয়েছে।
কখনও কখনও আমি এগুলি পরমাণুভাবে মুছে ফেলতে চাই। কিছু বিতরণ লকিং মেকানিজম ব্যবহার না করে আমি কীভাবে এটি করব?
আমার রেডিস ডিবিতে আমার হাতে প্রচুর prefix:<numeric_id>
হ্যাশ রয়েছে।
কখনও কখনও আমি এগুলি পরমাণুভাবে মুছে ফেলতে চাই। কিছু বিতরণ লকিং মেকানিজম ব্যবহার না করে আমি কীভাবে এটি করব?
উত্তর:
রেডিস ২. with.০ দিয়ে শুরু করে আপনি লুয়া স্ক্রিপ্টগুলি চালাতে পারেন যা পরমাণুর সাথে চালিত হয়। আমি কখনই একটি লিখিনি, তবে আমি মনে করি এটি দেখতে এরকম কিছু হবে
EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 prefix:[YOUR_PREFIX e.g delete_me_*]
সতর্কতা : রেডিস ডকুমেন্টটি যেমন বলেছে, পারফরম্যান্স ম্যাটারগুলির কারণে,
keys
কমান্ডটি নিয়মিত প্রযোজনার জন্য ব্যবহার করা উচিত নয়, এই কমান্ডটি ডিবাগিং এবং বিশেষ ক্রিয়াকলাপের উদ্দেশ্যে করা হয়। আরও পড়ুন
দেখুন Eval ডকুমেন্টেশন ।
EVAL "local keys = redis.call('keys', ARGV[1]) \n for i=1,#keys,5000 do \n redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) \n end \n return keys" 0 prefix:*
del prefix:*
একটি মৌলিক অপারেশন হওয়া উচিত বলে মনে হচ্ছে : /
EVAL "return redis.call('del', 'defaultKey', unpack(redis.call('keys', ARGV[1])))" 0 prefix:*
বাশে কার্যকর করুন:
redis-cli KEYS "prefix:*" | xargs redis-cli DEL
হালনাগাদ
ওকে আমি বুঝতে পেরেছি. এই উপায় সম্পর্কে কী: বর্তমান অতিরিক্ত বর্ধিত উপসর্গ সঞ্চয় করুন এবং আপনার সমস্ত কীতে এটি যুক্ত করুন। উদাহরণ স্বরূপ:
আপনার মত মান আছে:
prefix_prefix_actuall = 2
prefix:2:1 = 4
prefix:2:2 = 10
আপনার যখন ডেটা পরিষ্কার করতে হবে, আপনি প্রথমে উপসর্গ_্যাক্টুয়াল পরিবর্তন করুন (উদাহরণস্বরূপ উপসর্গ_প্রিফিক্স_্যাক্টুয়াল = 3 সেট করুন), সুতরাং আপনার অ্যাপ্লিকেশনটি কী উপসর্গ: 3: 1 এবং উপসর্গ: 3: 2 তে নতুন ডেটা লিখবে। তারপরে আপনি উপসর্গ: 2: 1 এবং উপসর্গ: 2: 2 থেকে নিরাপদে পুরানো মানগুলি নিতে পারেন এবং পুরানো কীগুলি সাফ করতে পারেন।
redis-cli KEYS "prefix:*" | xargs --delim='\n' redis-cli DEL
redis-cli -n 3 KEYS "prefix:*" | xargs redis-cli -n 3 DEL
লুয়ায় প্রয়োগ করা একটি ওয়াইল্ডকার্ড মোছার সম্পূর্ণ কার্যকারী এবং পারমাণবিক সংস্করণ এখানে। অনেক কম নেটওয়ার্ক ব্যাক-অ্যান্ড-ওয়ার্ল্ড হওয়ার কারণে এটি xargs সংস্করণের চেয়ে অনেক দ্রুত চলবে এবং এটি সম্পূর্ণ পারমাণবিক, এটি শেষ না হওয়া পর্যন্ত রেডিসের বিরুদ্ধে অন্য কোনও অনুরোধকে অবরুদ্ধ করে। আপনি যদি রেডিস ২.6.০ বা তার চেয়ে বড় সংকেতগুলি কীভাবে মুছে ফেলতে চান তবে অবশ্যই এটি যাওয়ার উপায়:
redis-cli -n [some_db] -h [some_host_name] EVAL "return redis.call('DEL', unpack(redis.call('KEYS', ARGV[1] .. '*')))" 0 prefix:
এটি এই প্রশ্নের উত্তরে @ এমসিডিজিলের ধারণার একটি কার্যকারী সংস্করণ। ধারণার জন্য ক্রেডিট 100% তার কাছে যায়।
সম্পাদনা: নীচে কিকিটোর মন্তব্য অনুসারে, আপনার যদি রেডিস সার্ভারে ফ্রি মেমরির চেয়ে মুছতে আরও কী থাকে তবে আপনি "আনপ্যাক করার জন্য অনেকগুলি উপাদান" ত্রুটিতে চলে যাবেন । সেক্ষেত্রে, করুন:
for _,k in ipairs(redis.call('keys', ARGV[1])) do
redis.call('del', k)
end
কিকিতো যেমন পরামর্শ দিয়েছে।
for _,k in ipairs(redis.call('keys', KEYS[1])) do redis.call('del', k) end
unpack
একটি "স্বতন্ত্র ভেরিয়েবলের তালিকায়" একটি টেবিলে রূপান্তরিত হয় (অন্যান্য ভাষাগুলি explode
এটিকে ডাকছে ) তবে সর্বাধিক সংখ্যাটি সিস্টেম মেমরির উপর নির্ভর করে না; এটি LUAI_MAXSTACK
ধ্রুবক মাধ্যমে লুয়া স্থির। লুয়া 5.1 এবং লুয়াজিটিতে এটি 8000 এবং লুয়া 5.2 এ 100000 রয়েছে for লুপ বিকল্পটি আইএমওর জন্য প্রস্তাবিত।
EVAL
যেহেতু এটি কীগুলি চালিত করবে তা আগাম নির্দিষ্ট করে দেয় না। এটি একটি একক ক্ষেত্রে কাজ করা উচিত তবে এটি রেডিস ক্লাস্টারের সাথে কাজ করবে বলে আশা করবেন না।
দাবি অস্বীকার : নিম্নলিখিত সমাধানটি পারমাণবিকতা সরবরাহ করে না ।
V2.8 দিয়ে শুরু করে আপনি সত্যই KYYS [1] এর পরিবর্তে SCAN কমান্ডটি ব্যবহার করতে চান । নিম্নলিখিত বাশ স্ক্রিপ্টটি প্যাটার্ন অনুসারে কী মোছার চিত্র প্রদর্শন করে:
#!/bin/bash
if [ $# -ne 3 ]
then
echo "Delete keys from Redis matching a pattern using SCAN & DEL"
echo "Usage: $0 <host> <port> <pattern>"
exit 1
fi
cursor=-1
keys=""
while [ $cursor -ne 0 ]; do
if [ $cursor -eq -1 ]
then
cursor=0
fi
reply=`redis-cli -h $1 -p $2 SCAN $cursor MATCH $3`
cursor=`expr "$reply" : '\([0-9]*[0-9 ]\)'`
keys=${reply##[0-9]*[0-9 ]}
redis-cli -h $1 -p $2 DEL $keys
done
[1] KEYS হ'ল একটি বিপজ্জনক কমান্ড যা সম্ভবত কোনও ডস-এর ফলাফল দিতে পারে। নিম্নলিখিতটি এর ডকুমেন্টেশন পৃষ্ঠা থেকে একটি উদ্ধৃতি:
সতর্কতা: কেইওয়াইএসকে একটি কমান্ড হিসাবে বিবেচনা করুন যা কেবলমাত্র চরম যত্ন সহ উত্পাদন পরিবেশে ব্যবহার করা উচিত। এটি বড় ডেটাবেসগুলির বিরুদ্ধে কার্যকর করা হলে কার্যকারিতা নষ্ট করে দিতে পারে। এই কমান্ডটি ডিবাগিং এবং বিশেষ ক্রিয়াকলাপগুলির জন্য যেমন আপনার কীস্পেসের বিন্যাস পরিবর্তন করার উদ্দেশ্যে তৈরি। আপনার নিয়মিত অ্যাপ্লিকেশন কোডে KEYS ব্যবহার করবেন না। আপনি যদি আপনার কী স্পেসের সাবসেটে কীগুলি সন্ধান করার জন্য কোনও উপায় সন্ধান করছেন, সেটগুলি ব্যবহার করে বিবেচনা করুন।
আপডেট: একই বেসিক প্রভাবের জন্য একটি লাইনার -
$ redis-cli --scan --pattern "*:foo:bar:*" | xargs -L 100 redis-cli DEL
-n 1
প্রতিটি redis-cli
অনুরোধে যুক্ত করতে হয়েছিল :redis-cli -n 1 --scan --pattern "*:foo:bar:*" | xargs -L 100 redis-cli -n 1 DEL
যাঁরা অন্যান্য উত্তরগুলির বিশ্লেষণ করতে সমস্যায় পড়ছিলেন তাদের জন্য:
eval "for _,k in ipairs(redis.call('keys','key:*:pattern')) do redis.call('del',k) end" 0
key:*:pattern
আপনার নিজস্ব প্যাটার্ন দিয়ে প্রতিস্থাপন করুন এবং এটি প্রবেশ করুন redis-cli
এবং আপনি যেতে ভাল।
ক্রেডিট লিসকো থেকে: http://redis.io/commands/del
আমি redis 3.2.8 এ নীচের কমান্ডটি ব্যবহার করছি
redis-cli KEYS *YOUR_KEY_PREFIX* | xargs redis-cli DEL
আপনি কীগুলি প্যাটার্ন অনুসন্ধান সম্পর্কিত আরও সহায়তা পেতে পারেন এখান থেকে: - https://redis.io/commands/keys । আপনার প্রয়োজন মতো *YOUR_KEY_PREFIX*
বা আপনার পছন্দ অনুযায়ী সুবিধাজনক গ্লোব-স্টাইলের প্যাটার্নটি ব্যবহার করুনYOUR_KEY_PREFIX??
অন্য কোনও ।
এবং যদি কারও নীচের ফাংশনের চেয়ে রেডিস পিএইচপি লাইব্রেরি সংহত করে থাকে তবে আপনাকে সহায়তা করবে।
flushRedisMultipleHashKeyUsingPattern("*YOUR_KEY_PATTERN*"); //function call
function flushRedisMultipleHashKeyUsingPattern($pattern='')
{
if($pattern==''){
return true;
}
$redisObj = $this->redis;
$getHashes = $redisObj->keys($pattern);
if(!empty($getHashes)){
$response = call_user_func_array(array(&$redisObj, 'del'), $getHashes); //setting all keys as parameter of "del" function. Using this we can achieve $redisObj->del("key1","key2);
}
}
ধন্যবাদ :)
@ এমসিডিজলের সমাধানটি কাজ করছে না এটি কেবল একটি প্রবেশের জন্য কাজ করে।
এটি একই উপসর্গ সহ সমস্ত কীগুলির জন্য কাজ করে
EVAL "for i, name in ipairs(redis.call('KEYS', ARGV[1])) do redis.call('DEL', name); end" 0 prefix*
দ্রষ্টব্য: আপনার কী উপসর্গের সাথে 'উপসর্গ' প্রতিস্থাপন করা উচিত ...
আপনি কীগুলি মুছতে এই আদেশটি ব্যবহার করতে পারেন: -
ধরুন আপনার রেডিসে অনেক ধরণের কী রয়েছে যেমন-
সাবেক ' xyz_category_fpc ' এখানে Xyz একটি হল SITENAME , এবং এই কী-পণ্য এবং একটি ই-কমার্স সাইটের বিভাগ এর সাথে সম্পর্কিত এবং FPC দ্বারা তৈরি হয়।
আপনি যদি এই আদেশটি নীচের হিসাবে ব্যবহার করেন-
redis-cli --scan --pattern 'key*' | xargs redis-cli del
অথবা
redis-cli --scan --pattern 'xyz_category_fpc*' | xargs redis-cli del
এটি ' xyz_category_fpc ' (1, 2 এবং 3 কী মুছুন) এর মতো সমস্ত কী মুছে ফেলে । অন্যান্য 4, 5 এবং 6 নম্বর কীগুলি মুছতে ' xyz_product_fpc ব্যবহার করুন জন্য উপরের কমান্ডে ' ।
যদি আপনি চাই প্রতি সবকিছু মুছে মধ্যে Redis , তবে এই Commands- অনুসরণ
রেডিস-ক্লাই্ট সহ:
উদাহরণস্বরূপ: - আপনার শেলের মধ্যে:
redis-cli flushall
redis-cli flushdb
redis-cli del
পারমাণবিক নয়।
@ ইটামারের উত্তর দুর্দান্ত, তবে উত্তরের পার্সিং আমার পক্ষে কাজ করছে না, এসএসপি। যে ক্ষেত্রে কোনও প্রদত্ত স্ক্যানে কোনও কী পাওয়া যায় না। সরাসরি কনসোল থেকে একটি সম্ভবত সহজ সমাধান:
redis-cli -h HOST -p PORT --scan --pattern "prefix:*" | xargs -n 100 redis-cli DEL
এটি স্ক্যানও ব্যবহার করে যা উত্পাদনে কেইএসএসের চেয়ে পছন্দসই, তবে এটি পারমাণবিক নয়।
আমি ঠিক একই সমস্যা। আমি বিন্যাসে ব্যবহারকারীর জন্য সেশন ডেটা সংরক্ষণ করেছি:
session:sessionid:key-x - value of x
session:sessionid:key-y - value of y
session:sessionid:key-z - value of z
সুতরাং, প্রতিটি এন্ট্রি একটি পৃথক কী-মান যুগল ছিল। সেশনটি নষ্ট হয়ে গেলে, আমি প্যাটার্নটি দিয়ে কীগুলি মুছে ফেলে সমস্ত সেশন ডেটা সরিয়ে ফেলতে চেয়েছিলামsession:sessionid:*
- তবে রেডিসের কোনও ফাংশন নেই।
আমি যা করেছি: একটি হ্যাশের মধ্যে সেশন ডেটা সংরক্ষণ করুন । আমি শুধু এর হ্যাশ আইডি সহ একটি হ্যাশ তৈরি session:sessionid
এবং তারপর আমি ধাক্কা key-x
, key-y
, key-z
যে হ্যাশ মধ্যে (ক্রম না ব্যাপার আমার কি) এবং যদি আমি প্রয়োজন যে হ্যাশ আর আমি শুধু একটি না আত DEL session:sessionid
এবং যে হ্যাশ আইডি সাথে সম্পর্কিত সকল ডেটা সর্বস্বান্ত হয়। DEL
পারমাণবিক এবং হ্যাশে ডেটা / লেখার ডেটা অ্যাক্সেস করা হ'ল ও (1)।
আমি মনে করি যা আপনাকে মাল্টি / এক্সেক / ডিসকার্ডে সহায়তা করতে পারে । যদিও 100% লেনদেনের সমতুল্য নয় , আপনার অন্য আপডেটগুলি থেকে মুছে ফেলা পৃথক করতে সক্ষম হওয়া উচিত।
অবগতির জন্য।
redis-cli
keys
(এটি ব্যবহার করে scan
)হতে পারে আপনার কেবলমাত্র মূল অক্ষরগুলি সংশোধন করতে হবে।
scan-match.sh
#!/bin/bash
rcli=“/YOUR_PATH/redis-cli"
default_server="YOUR_SERVER"
default_port="YOUR_PORT"
servers=`$rcli -h $default_server -p $default_port cluster nodes | grep master | awk '{print $2}' | sed 's/:.*//'`
if [ x"$1" == "x" ]; then
startswith="DEFAULT_PATTERN"
else
startswith="$1"
fi
MAX_BUFFER_SIZE=1000
for server in $servers; do
cursor=0
while
r=`$rcli -h $server -p $default_port scan $cursor match "$startswith*" count $MAX_BUFFER_SIZE `
cursor=`echo $r | cut -f 1 -d' '`
nf=`echo $r | awk '{print NF}'`
if [ $nf -gt 1 ]; then
for x in `echo $r | cut -f 1 -d' ' --complement`; do
echo $x
done
fi
(( cursor != 0 ))
do
:
done
done
clear-redis-key.sh
#!/bin/bash
STARTSWITH="$1"
RCLI=YOUR_PATH/redis-cli
HOST=YOUR_HOST
PORT=6379
RCMD="$RCLI -h $HOST -p $PORT -c "
./scan-match.sh $STARTSWITH | while read -r KEY ; do
$RCMD del $KEY
done
বাশ প্রম্পটে রান করুন
$ ./clear-redis-key.sh key_head_pattern
আপনার কীতে বিশেষ অক্ষর রয়েছে - অন্য উত্তরগুলি কাজ করতে পারে না - Guide$CLASSMETADATA][1]
উদাহরণস্বরূপ। প্রতিটি কীগুলিকে উদ্ধৃতিতে মুড়িয়ে দেওয়া নিশ্চিত করবে যে তারা সঠিকভাবে মোছা হবে:
redis-cli --scan --pattern sf_* | awk '{print $1}' | sed "s/^/'/;s/$/'/" | xargs redis-cli del
KEYS (প্রোডাকশন সার্ভারগুলির জন্য প্রস্তাবিত) এর পরিবর্তে স্ক্যান ব্যবহার করে এমন একটি সংস্করণ --pipe
।
আমি xargs এর চেয়ে পাইপ পছন্দ করি কারণ এটি আরও কার্যকর এবং যখন আপনার কীগুলিতে কোট বা অন্য বিশেষ অক্ষর থাকে যা চেষ্টা করে এবং ব্যাখ্যা দিয়ে আপনার শেল থাকে works এই উদাহরণস্বরূপ রেজেক্সের বিকল্পটি কীটি ডাবল কোটে মুড়ে ফেলে এবং কোনও ডাবল উদ্ধৃতি ভিতরে insideুকে যায়।
export REDIS_HOST=your.hostname.com
redis-cli -h "$REDIS_HOST" --scan --pattern "YourPattern*" > /tmp/keys
time cat /tmp/keys | perl -pe 's/"/\\"/g;s/^/DEL "/;s/$/"/;' | redis-cli -h "$REDIS_HOST" --pipe
এটি প্রশ্নের সরাসরি উত্তর নয়, তবে যেহেতু আমি আমার নিজের উত্তর অনুসন্ধান করতে গিয়ে এখানে এসেছি, আমি এটি এখানে ভাগ করব।
আপনার যদি দশ বা কয়েক মিলিয়ন কী-টি মিলতে হয় তবে এখানে দেওয়া উত্তরগুলি রেডিসকে উল্লেখযোগ্য পরিমাণের জন্য (মিনিট?) প্রতিক্রিয়াশীল করবে এবং মেমরির ব্যবহারের কারণে সম্ভবত ক্র্যাশ হবে (নিশ্চিত হন, ব্যাকগ্রাউন্ড সেভ হবে আপনার অপারেশন মাঝখানে লাথি মেরে)।
নিম্নলিখিত পদ্ধতিরটি অনস্বীকার্যভাবে কুৎসিত, তবে আমি এর চেয়ে ভাল আর খুঁজে পাইনি। পারমাণবিকতা এখানে প্রশ্নবিদ্ধ নয়, এক্ষেত্রে মূল লক্ষ্য হ'ল রেডিসকে আপ এবং প্রতিক্রিয়াশীল 100% সময় রাখা। এটি একদম কার্যকরভাবে কাজ করবে যদি আপনার কোনও কী ডাটাবেসে আপনার কী থাকে এবং আপনার কোনও প্যাটার্নের সাথে মিলের প্রয়োজন না হয় তবে এটি প্রকৃতির অবরুদ্ধতার কারণে http://redis.io/commands/FLUSHDB ব্যবহার করতে পারবেন না ।
আইডিয়াটি সহজ: একটি স্ক্রিপ্ট লিখুন যা একটি লুপে চলে এবং O (1) অপারেশন যেমন http://redis.io/commands/SCAN বা http://redis.io/commands/RANDOMKEY ব্যবহার করে কীগুলি প্রাপ্ত করে, যদি তারা পরীক্ষা করে প্যাটার্নটি মেলে (যদি আপনার এটি প্রয়োজন হয়) এবং http://redis.io/commands/Del একে একে করুন।
এটি করার আরও ভাল উপায় যদি থাকে তবে দয়া করে আমাকে জানান, আমি উত্তরটি আপডেট করব।
রবিতে র্যান্ডমকি দিয়ে উদাহরণ প্রয়োগকরণ, রেক টাস্ক হিসাবে, এর মতো কোনও অ-অবরুদ্ধ বিকল্প redis-cli -n 3 flushdb
:
desc 'Cleanup redis'
task cleanup_redis: :environment do
redis = Redis.new(...) # connection to target database number which needs to be wiped out
counter = 0
while key = redis.randomkey
puts "Deleting #{counter}: #{key}"
redis.del(key)
counter += 1
end
end
এটি ফাস্টোরেডিসে "শাখা সরান" কার্যকারিতার মাধ্যমে সহজভাবে প্রয়োগ করা হয় , কেবল যে শাখাটি আপনি মুছে ফেলতে চান তা নির্বাচন করুন।
আমি উপরে উল্লিখিত বেশিরভাগ পদ্ধতি চেষ্টা করেছি তবে সেগুলি আমার পক্ষে কার্যকর হয়নি, কিছু অনুসন্ধানের পরে আমি এই পয়েন্টগুলি পেয়েছি:
-n [number]
del
তবে যদি হাজার বা মিলিয়ন কী থাকে তবে এটি ব্যবহার করা ভাল unlink
কারণ ডিল ব্লক করার সময় আনলিংক অ-ব্লক করা হয়, আরও তথ্যের জন্য এই পৃষ্ঠায় দেখুন আনলিংক বনাম দেলটি দেখুনkeys
ডেল মত এবং অবরুদ্ধ হয়সুতরাং আমি এই কোডটি প্যাটার্ন অনুসারে কীগুলি মুছতে ব্যবহার করেছি:
redis-cli -n 2 --scan --pattern '[your pattern]' | xargs redis-cli -n 2 unlink
এখনকার বিজ্ঞাপনে, আপনি একটি রেডিস ক্লায়েন্ট ব্যবহার করতে পারেন এবং প্রথমে স্ক্যান করতে পারেন (প্যাটার্ন মেলানো সমর্থন করে) এবং তারপরে প্রতিটি কী পৃথকভাবে দেল করতে পারেন।
যাইহোক, সরকারী redis উপর একটি বিষয় একটি বিড়বিড়-ম্যাচিং-দেল তৈরি করতে GitHub হয় এখানে , চলতে চলতে কিছু ভালবাসা প্রদর্শন আপনি এটি লাভজনক কিনা!
আমি কিছু সরঞ্জাম থাকা বা লুয়া এক্সপ্রেশন কার্যকর করতে সম্পর্কিত সমস্ত উত্তরকে সমর্থন করি।
আমার পক্ষ থেকে আরও একটি বিকল্প:
আমাদের উত্পাদন এবং প্রাক-উত্পাদন ডেটাবেজে হাজার হাজার কী রয়েছে। সময়ে সময়ে আমাদের কয়েকটি কী (কিছু মুখোশ দ্বারা) মুছতে হবে, কিছু মানদণ্ড ইত্যাদি সংশোধন করতে হবে অবশ্যই, সিএলআই থেকে ম্যানুয়ালি এটি করার কোনও উপায় নেই, বিশেষত শারডিং (প্রতিটি শারীরিক ক্ষেত্রে 512 লজিক্যাল ডিবিএস) রয়েছে।
এই উদ্দেশ্যে আমি জাভা ক্লায়েন্ট টুল লিখি যা এই সমস্ত কাজ করে। কীগুলি মোছার ক্ষেত্রে ইউটিলিটি খুব সহজ হতে পারে, সেখানে কেবলমাত্র একটি শ্রেণি:
public class DataCleaner {
public static void main(String args[]) {
String keyPattern = args[0];
String host = args[1];
int port = Integer.valueOf(args[2]);
int dbIndex = Integer.valueOf(args[3]);
Jedis jedis = new Jedis(host, port);
int deletedKeysNumber = 0;
if(dbIndex >= 0){
deletedKeysNumber += deleteDataFromDB(jedis, keyPattern, dbIndex);
} else {
int dbSize = Integer.valueOf(jedis.configGet("databases").get(1));
for(int i = 0; i < dbSize; i++){
deletedKeysNumber += deleteDataFromDB(jedis, keyPattern, i);
}
}
if(deletedKeysNumber == 0) {
System.out.println("There is no keys with key pattern: " + keyPattern + " was found in database with host: " + host);
}
}
private static int deleteDataFromDB(Jedis jedis, String keyPattern, int dbIndex) {
jedis.select(dbIndex);
Set<String> keys = jedis.keys(keyPattern);
for(String key : keys){
jedis.del(key);
System.out.println("The key: " + key + " has been deleted from database index: " + dbIndex);
}
return keys.size();
}
}
নীচে কমান্ড আমার জন্য কাজ করে।
redis-cli -h redis_host_url KEYS "*abcd*" | xargs redis-cli -h redis_host_url DEL
স্প্রিং রেডিসটেম্পলেট নিজেই কার্যকারিতা সরবরাহ করে। সর্বশেষতম সংস্করণে রেডিসনক্লিয়েন্ট "মুছে ফেলা প্যাটার্ন" কার্যকারিতা হ্রাস করেছে।
Set<String> keys = redisTemplate.keys("geotag|*");
redisTemplate.delete(keys);
keys
এবং delete
পদ্ধতির আমন্ত্রণের মধ্যে উপস্থিত হতে পারে ।