আমি সমস্ত কী মুছে ফেলতে চাই। আমি সবকিছু মুছতে চাই এবং আমাকে একটি ফাঁকা ডাটাবেস দিন।
রেডিস ক্লায়েন্টে এটি করার কোনও উপায় আছে ?
আমি সমস্ত কী মুছে ফেলতে চাই। আমি সবকিছু মুছতে চাই এবং আমাকে একটি ফাঁকা ডাটাবেস দিন।
রেডিস ক্লায়েন্টে এটি করার কোনও উপায় আছে ?
উত্তর:
রেডিস-ক্লাই্ট সহ:
উদাহরণস্বরূপ, আপনার শেলের মধ্যে:
redis-cli flushall
(error) LOADING Redis is loading the dataset in memory
। আপনি নির্দিষ্ট করতে পারেন কেন?
(new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
-h
একটি redis সার্ভারের অবস্থান নির্দিষ্ট করতে পতাকাটি ব্যবহার করুন
হেডস আপ যা FLUSHALL
ওভারকিল হতে পারে। FLUSHDB
কেবলমাত্র একটি ডাটাবেস ফ্লাশ করার জন্য। FLUSHALL
পুরো সার্ভারটি মুছে ফেলবে। যেমন সার্ভারে প্রতিটি ডাটাবেস। যেহেতু প্রশ্নটি একটি ডাটাবেস ফ্লাশ করার বিষয়ে ছিল বলে আমি মনে করি এটি একটি পৃথক উত্তর যোগ্যতা অর্জনের জন্য যথেষ্ট গুরুত্বপূর্ণ পার্থক্য।
এখনও পর্যন্ত উত্তরগুলি একেবারে সঠিক; তারা সমস্ত কী মুছে দেয়।
তবে আপনি যদি সমস্ত লুয়া মুছতে চান তবে রেডিস উদাহরণ থেকে স্ক্রিপ্টগুলি এটি অনুসরণ করা উচিত:
ওপি দুটি প্রশ্ন জিজ্ঞাসা করে; এটি দ্বিতীয় প্রশ্নটি সম্পূর্ণ করে ( সবকিছু মুছে ফেলা)।
I want everything wiped out and give me a blank database.
প্রশ্নকে আর সম্বোধন করে না । সুতরাং, ইমো, আমার সংযোজনটি একটি ভাল, যা কয়েকটি লোককে সহায়তা করেছে। দ্বিধাবিভক্ত দ্বিধায় দ্বিধা বোধ করুন, এটি এসও সম্পর্কেও রয়েছে।
এই পদ্ধতিটি আমার পক্ষে কাজ করেছে - আপনার জেডিস ক্লাস্টারে বর্তমান সংযুক্ত ডেটাবেসগুলির সমস্ত কিছুই মুছুন।
public static void resetRedis() {
jedisCluster = RedisManager.getJedis(); // your JedisCluster instance
for (JedisPool pool : jedisCluster.getClusterNodes().values()) {
try (Jedis jedis = pool.getResource()) {
jedis.flushAll();
}
catch (Exception ex){
System.out.println(ex.getMessage());
}
}
}
আমার পক্ষ থেকে আরও একটি বিকল্প:
আমাদের উত্পাদন এবং প্রাক-উত্পাদন ডেটাবেজে হাজার হাজার কী রয়েছে। সময়ে সময়ে আমাদের কয়েকটি কী (কিছু মুখোশ দ্বারা) মুছতে হবে, কিছু মানদণ্ড ইত্যাদি সংশোধন করতে হবে অবশ্যই, সিএলআই থেকে ম্যানুয়ালি এটি করার কোনও উপায় নেই, বিশেষত শারডিং (প্রতিটি শারীরিক ক্ষেত্রে 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();
}
}
এই জাতীয় সরঞ্জামগুলি লেখার জন্য আমি খুব সহজ খুঁজে পাই এবং 5-10 মিনিটের পরে আর ব্যয় করি না।
ফ্লুশল সমস্ত বিদ্যমান ডাটাবেসের সমস্ত কী মুছে ফেলে। ফোর রেডিস সংস্করণ> ৪.০, ফ্লুশল এএসআইএনসি সমর্থিত যা একটি পটভূমির থ্রেডে চলে সার্ভারকে অবরুদ্ধ করে https://redis.io/commands/flushall
FLUSHDB - নির্বাচিত ডাটাবেসের সমস্ত কী মুছে ফেলে। https://redis.io/commands/flushdb
ক্রিয়াকলাপ সম্পাদনের সময় জটিলতা হ'ল ও (এন) হবে যেখানে এন ডাটাবেসের কীগুলির সংখ্যা।
রেডিসের প্রতিক্রিয়াটি একটি সাধারণ স্ট্রিং "ঠিক আছে" হবে
আপনি ফ্লুশল ব্যবহার করতে পারেন যা আপনার প্রতিটি ডাটাবেস থেকে সমস্ত কী মুছে ফেলবে। যেখানে FLUSHDB আমাদের বর্তমান ডাটাবেস থেকে সমস্ত কী মুছে ফেলবে।
FLUSHALL ASYNC
(Redis 4.0.0 বা আরও বেশি) ব্যবহার করে ব্যবহার করুন FLUSHALL
।
https://redis.io/commands/flushall
দ্রষ্টব্য : মৃত্যুদন্ড কার্যকর করার আগে সমস্ত কিছু FLUSHALL ASYNC
উচ্ছেদ করা হবে। কার্যকর করার সময় করা পরিবর্তনগুলি FLUSHALL ASYNC
অকার্যকর থাকবে।
রেডিস-ক্লিপ খুলুন এবং টাইপ করুন:
FLUSHALL
আমি মনে করি কখনও কখনও রেডিস-সার্ভারটি বন্ধ করে rdb b aof ফাইলগুলি মুছে ফেলুন sure কোনও ডেটা পুনরায় লোড হচ্ছে না তা নিশ্চিত করুন। তারপরে রেডিস-সার্ভারটি শুরু করুন, এখন এটি নতুন এবং খালি।
আপনি Redis- সার্ভারটি ব্যবহার করার পরে: service redis-server start --port 8000
বা ব্যবহার করে শুরু করুনredis-server
।
ব্যবহার redis-cli -p 8000
ভিন্ন টার্মিনালের ক্লায়েন্ট হিসাবে সার্ভারের সাথে সংযোগ করতে ।
আপনি ব্যবহার করতে পারেন
উভয়ের জন্য ASYNC বিকল্পের জন্য ডকুমেন্টেশন পরীক্ষা করুন ।
যদি আপনি রেডিসকে তার অজগর ইন্টারফেসের মাধ্যমে ব্যবহার করে থাকেন তবে একই কার্যকারিতার জন্য এই দুটি ফাংশনটি ব্যবহার করুন:
def flushall(self):
"Delete all keys in all databases on the current host"
return self.execute_command('FLUSHALL')
এবং
def flushdb(self):
"Delete all keys in the current database"
return self.execute_command('FLUSHDB')
আপনার প্রশ্নগুলি মনে হয় কোনও ডাটাবেসে সম্পূর্ণ কী মুছে ফেলা হবে। এই ক্ষেত্রে আপনার চেষ্টা করা উচিত:
redis-cli
(যদি 63৩ 63৯ বন্দরে চলমান থাকে), অন্যথায় আপনাকে পোর্ট নম্বরও নির্দিষ্ট করতে হবে।select {Index}
)flushdb
আপনি যদি সমস্ত ডাটাবেসে কী ফ্লাশ করতে চান তবে আপনার চেষ্টা করা উচিত flushall
।
ফাস্টোরেডিস / ফাস্টোএনএসকিউএল-এ ক্লিক করুন
তুমি ব্যবহার করতে পার FLUSHDB
যেমন
ডাটাবেসগুলি তালিকাভুক্ত করুন:
127.0.0.1:6379> info keyspace
# Keyspace
তালিকা কী
127.0.0.1:6379> keys *
(empty list or set)
একটি কীতে একটি মান যুক্ত করুন
127.0.0.1:6379> lpush key1 1
(integer) 1
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
দুটি মান সহ অন্যান্য কী তৈরি করুন
127.0.0.1:6379> lpush key2 1
(integer) 1
127.0.0.1:6379> lpush key2 2
(integer) 2
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=2,expires=0,avg_ttl=0
কী 2 তে সমস্ত মান তালিকাবদ্ধ করুন
127.0.0.1:6379> lrange key2 0 -1
1) "2"
2) "1"
দো FLUSHDB
127.0.0.1:6379> flushdb
OK
তালিকা কী এবং ডাটাবেস
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> info keyspace
# Keyspace
আপনি পাইথনে নিম্নলিখিত পদ্ধতির ব্যবহার করতে পারেন
def redis_clear_cache(self):
try:
redis_keys = self.redis_client.keys('*')
except Exception as e:
# print('redis_client.keys() raised exception => ' + str(e))
return 1
try:
if len(redis_keys) != 0:
self.redis_client.delete(*redis_keys)
except Exception as e:
# print('redis_client.delete() raised exception => ' + str(e))
return 1
# print("cleared cache")
return 0
আরডিএম (রেডিস ডেস্কটপ ম্যানেজার) রাখতে পারলে এটি আরও ভাল। আপনি আরডিএম এ একটি নতুন সংযোগ তৈরি করে আপনার রেডিস সার্ভারের সাথে সংযুক্ত করতে পারেন।
এর সংযুক্ত হয়ে গেলে আপনি সরাসরি ডেটা পরীক্ষা করতে পারবেন, আপনি যে কোনও রেডিস কমান্ডের সাহায্যে চারপাশে খেলতে পারবেন।
আরডিএম-এ একটি ক্লাইপ খোলা হচ্ছে।
1) সংযোগে ডান ক্লিক করুন আপনি একটি কনসোল বিকল্প দেখতে পাবেন, কেবল এটিতে ক্লিক করুন আরডিএম এর নীচে একটি নতুন কনসোল উইন্ডো খুলবে।
আপনার প্রশ্নে ফিরে আসা ফ্লুশাল হ'ল আদেশটি, আপনি কেবল রেডিস ক্লাইমে ফ্লুশল টাইপ করতে পারেন।
তবুও যদি আপনি কোনও রেডিস কমান্ড এবং এর সঠিক ব্যবহার সম্পর্কে জানতে চান তবে নীচের লিঙ্কে যান। https://redis.io/commands ।
বিভিন্ন পন্থা আছে। আপনি যদি রিমোট থেকে এটি করতে চান তবে কমান্ড লাইন টুলটি রিডিস-ক্লাই বা যেকোন সরঞ্জাম অর্থাৎ টেলনেট, একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ এসডিকে-এর মাধ্যমে, সেই উদাহরণে ফ্লাশহালটি ইস্যু করুন। অথবা কেবলমাত্র সেই সার্ভারটিতে লগইন করুন, প্রক্রিয়াটি মুছে ফেলুন, এর ডাম্প.আরডিবি ফাইল এবং appendonly.aof মুছুন (মুছার আগে তাদের ব্যাকআপ করুন)।
আপনি যদি জাভা ব্যবহার করে থাকেন তবে ডকুমেন্টেশন থেকে, আপনি আপনার ব্যবহারের ক্ষেত্রে ভিত্তিতে এগুলির যে কোনও একটি ব্যবহার করতে পারেন।
/**
* Remove all keys from all databases.
*
* @return String simple-string-reply
*/
String flushall();
/**
* Remove all keys asynchronously from all databases.
*
* @return String simple-string-reply
*/
String flushallAsync();
/**
* Remove all keys from the current database.
*
* @return String simple-string-reply
*/
String flushdb();
/**
* Remove all keys asynchronously from the current database.
*
* @return String simple-string-reply
*/
String flushdbAsync();
কোড:
RedisAdvancedClusterCommands syncCommands = // get sync() or async() commands
syncCommands.flushdb();
আরও পড়ুন: https://github.com/lettuce-io/lettuce-core/wiki/Redis- ক্লাস্টার
del *
কাজ হয় না। এটি 0. ফিরে আসে