কী নামকরণের সম্মেলনগুলি আবার করুন?


226

রেডিসে কীগুলির জন্য সাধারণ নামকরণ কনভেনশন কী? আমি মানগুলি আলাদা করে দেখেছি :তবে সাধারণ কনভেনশনটি কী বা কেন তা নিশ্চিত।

ব্যবহারকারীর জন্য আপনি কি এমন কিছু করতে চান ...

user:00

যদি ব্যবহারকারীর আইডি ছিল 00

আপনি কি সমস্ত ব্যবহারকারীকে ফেরত দেওয়ার জন্য কীটির শুরুতে জিজ্ঞাসা করতে সক্ষম?

আমি প্রধানত কেবল মানুষের জন্য কাজ করে এবং তারা কেন এগুলি বেছে নিয়েছে তা নিয়ে গবেষণা করে ভবিষ্যতের যে কোনও সমস্যা এড়াতে হবে বলে আশা করছি

উত্তর:


205

রেডিসে কীগুলির জন্য সাধারণ নামকরণ কনভেনশন কী? আমি মানগুলি আলাদা করে দেখেছি: তবে সাধারণ কনভেনশনটি কী বা কেন তা নিশ্চিত what

হ্যাঁ, :কীগুলির নামকরণের সময় কোলন সাইন একটি কনভেনশন। ইন এই redis ওয়েবসাইটে টিউটোরিয়াল বিবৃত হয়: একটি স্কিমা দিয়ে বিদ্ধ করার চেষ্টা করুন। উদাহরণস্বরূপ "অবজেক্ট-টাইপ: আইডি: ফিল্ড" "ব্যবহারকারী: 1000: পাসওয়ার্ড" এর মতো একটি দুর্দান্ত ধারণা হতে পারে। আমি মাল্টি-শব্দের ক্ষেত্রগুলির জন্য বিন্দু ব্যবহার করতে চাই, "মন্তব্য: 1234: উত্তর.to" এর মতো।

আপনি কি সমস্ত ব্যবহারকারীকে ফেরত দেওয়ার জন্য কীটির শুরুতে জিজ্ঞাসা করতে সক্ষম?

আপনি যদি বোঝাতে চাইছেন যে সমস্ত কীগুলির সাথে সরাসরি জিজ্ঞাসা করা শুরু হয় যা এর সাথে শুরু হয় user:তবে এর জন্য একটি কী কমান্ড রয়েছে। এই কমান্ডটি কেবলমাত্র ডিবাগিংয়ের উদ্দেশ্যেই ব্যবহার করা উচিত কারণ এটি ও (এন) কারণ এটি ডাটাবেসে থাকা সমস্ত কীগুলির মাধ্যমে অনুসন্ধান করছে।

এই সমস্যার জন্য আরও উপযুক্ত সমাধান হ'ল ডেডিকেটেড কী তৈরি করা যাক, নাম হ'ল usersযা ব্যবহারকারীদের কীগুলি সংরক্ষণ করবে, উদাহরণস্বরূপ, তালিকাতে বা ডেটা কাঠামো সেট করে।


1
scan@ ইরানএইচ বিকল্প নয়, কীগুলি পুনরাবৃত্তি করার এটি সর্বোত্তম অনুশীলন। scanউপাদানগুলির সংগ্রহের উপর ক্রমবর্ধমান পুনরাবৃত্তি করতে ব্যবহৃত হয়।
কিশোর পওয়ার

2
@ yojimbo87 সুতরাং দুটি কমান্ড আসবে প্রথমে বলার মতো ব্যবহারকারী তৈরি করা উচিত - ব্যবহারকারী: 808021: পাসওয়ার্ড = এক্সওয়াইজেড এবং দ্বিতীয়টি হ'ল কীটি রেজিস্ট্রি বা সূচী (সেট) এ স্থাপন করা হবে, তবে যখন একটি কমান্ড সফলভাবে কার্যকর হবে এবং কী হবে অন্যদের ব্যর্থ হওয়ার অর্থ কীগুলি তৈরি হয়েছে তবে রেজিস্ট্রিতে প্রবেশ নেই।
লাভটোকোড

1
@ লাভটোকোড আপনি লেনদেনটি ব্যবহার করতে পারেন যা গ্যারান্টিযুক্ত হওয়া উচিত যে সমস্ত বা কোনও একটিই কার্যকর হবে না।
yojimbo87

2
আমি আরও লক্ষ্য করেছি যে রেডিস ডেস্কটপ ম্যানেজার (একটি রেডিস ক্লায়েন্ট সরঞ্জাম) কোলন ':' কে বিভাজক হিসাবেও দেখে এবং একসাথে একাধিক কী প্রদর্শন করে
অ্যাডাম রোটারু

1
আমি মতামত যে অনন্য মান সর্বশেষ হতে হবে। এর মতো কিছু করা সহজ করে তোলে:$redis->delete($redis->keys('user:password:*'));
ক্রাইওনস

26

কীগুলির আইডি-অংশগুলির জন্য আমরা নাম স্পেস বিভাজক এবং একটি হ্যাশ (#) হিসাবে একটি কলোন (:) ব্যবহার করি

logistics:building#23

আপনার যদি আরও কীগুলি যেমন লোকেল, বিভাগ ইত্যাদি ইত্যাদি থাকে তবে সেরা নাম কনভেনশনটি কী? {উত্স}: {কী} # {মান}, {কী} # {মান} => পাঠ্য: লোকেল # এন, বিভাগ # 15? নাকি আপনার কাছে অন্য কোনও পরামর্শ আছে?
fsasvari

1
আমার উদাহরণে, "বিল্ডিং" কেবল "সংগ্রহ" এর নাম এবং 23 টি কাস্টম "আইডি"। আপনার যদি লোকেল = এন এবং বিভাগ = 15 সহ একটি সমন্বিত আইডি থাকে তবে আসল আইডিটি, en, 15} হতে পারে, সুতরাং নাম স্থান: পাঠ্য # {en, 15}, বা আরও ভার্জোজ: নেমস্পেস: পাঠ্য # {স্থানীয় = স্বীকারোক্তি, বিভাগ = 15}। তবে এটি কেবল একটি ধারণা, আমি এটি এর আগে কখনও ব্যবহার করি নি। আইডি-উপাদানগুলির ক্রমটি পরিবর্তন না করার বিষয়ে সতর্কতা অবলম্বন করুন, কারণ কীটি অবশ্যই খুঁজে পাবে না। প্রকৃতপক্ষে, আপনার মূল নামগুলিতে এ জাতীয় জটিলতা এনকোড করার পরিবর্তে redis ডেটা স্ট্রাকচার ব্যবহারের পরিবর্তে বিবেচনা করুন। Redis.io/topics/indexes
দ্য পেরেক

16

একটি সম্মেলনটি কোলন বলে মনে হয় (:) তবে আমি একটি ওয়েব বিকাশকারী তাই ব্যক্তিগতভাবে পৃথককারীটির জন্য স্ল্যাশ (/) পছন্দ করি। স্ল্যাশ ইতোমধ্যে ইউআরএলগুলির মধ্যে এত গুরুত্বপূর্ণ বিভাজক যা বোঝা যাচ্ছে ইউনিফর্ম রিসোর্স লোকেটার হিসাবে সম্পদের জন্য এত ধরণের কীগুলি। কেন কোলন (:) এর সাথে আলাদা পন্থা অবলম্বন করবেন? এটি কিছু সাহায্য করে?

এই উদাহরণ বিবেচনা করুন:

খেলনা অবজেক্টের জন্য আমাদের কাছে একটি RESTful API রয়েছে। একটি আছে:

http://example.com/api/toy/234 

আমরা এটি কোথায় সংরক্ষণ করেছি? আমরা রেডিস এবং স্ল্যাশগুলি ব্যবহার করি যাতে কীটি স্পষ্ট হয়:

toy/234

এটি খেলনার অনন্য কী। কীটি এখন ক্লায়েন্টের পক্ষেও ব্যবহার করা যেতে পারে:

{
    key: "toy/234",
    color: "red",
    url: function () {
        return API_BASE_URL + this.key;
    }
}

একজন ব্যবহারকারী কী সহ কোনও বস্তুর অনুরোধ করে toy/666। রেডিস থেকে এটি কীভাবে পাবেন? একটি নোড.জেএস সম্পর্কিত উদাহরণ:

redis.get(key, function reply_callback(error, toystring) {
    var toy = JSON.parse(toystring);
    ...
}

স্ল্যাশগুলি কলোন এবং তার বিপরীতে রূপান্তর করার দরকার নেই। সুবিধাজনক, আপনি কি ভাবেন না?

দ্রষ্টব্য: সর্বদা নিশ্চিত করুন যে ব্যবহারকারী কেবলমাত্র আপনার ইচ্ছা মতো জিনিসগুলিতে অ্যাক্সেস করতে সক্ষম। উপরের কাঁচা ইউআরএল-থেকে-কী পদ্ধতির user/1/passwordপাশাপাশি মন্তব্যকারীদের দ্বারা উল্লিখিত হিসাবে আনতে সক্ষম । যদি আপনি রেডিসকে সর্বজনীন পঠনযোগ্য ক্যাশে হিসাবে ব্যবহার করেন তবে এটি কোনও সমস্যা হবেনা।


24
... সুবিধাজনক এবং প্রায় ঘৃণ্যরকম সুরক্ষিত। আপনি curl http://example.com/api/user/1/password'ডি, বা অনুরূপ পেতে ভিক্ষা করছেন । (শুধু বলুন '।)
এলিওটিটিসিবিএল

3
কোলন, হ্যাশ এবং স্ল্যাশ পাখির ভিন্ন মাত্রার, যেমন নামকরণ ব্যবহার করা যেতে পারেUser#23:uploads:my/path/to/file.ext
দেহধারী

30
দয়া করে, কখনই ডাটাবেসে কোনও ব্যবহারকারী হিসাবে ইনপুট গ্রহণ করবেন না।
লাইল

1
আমি আপনাকে পছন্দ করি আপনি কীভাবে স্ল্যাশ পছন্দ করেন কারণ আপনি একজন ওয়েব বিকাশকারী er
হেক্টর আরডোনজ

@ এলিলিটিটিসিএবল ধন্যবাদ, নিরাপত্তাহীনতা সম্পর্কে যোগ করা নোট। যদি রেডিসকে কেবল পঠনযোগ্য কেবল ক্যাশে হিসাবে ব্যবহার করা হয় তবে আপনি এই পদ্ধতির কোনও সমস্যা দেখতে পাচ্ছেন?
আকসেলি পালান

6

আমি জানি না যে রেডিস কী নামকরণের জন্য সত্যিই ব্যাপক "সেরা অনুশীলন" রয়েছে কিনা।

আমি ASCII NUL টি অক্ষরকে আমার বিভাজক হিসাবে ব্যবহার করার জন্য পরীক্ষা করেছি (যেহেতু রেডিস এবং পাইথন উভয়ই 8-বিট পরিষ্কার)। আপনি কাঁচা কীগুলির দিকে তাকিয়ে থাকলে এটি দেখতে কিছুটা কুৎসিত দেখাচ্ছে, তবে ধারণাটি এটি কোনও বিমূর্ত স্তরের পিছনে লুকানো। আপনার নাম স্থানের উপাদানগুলি সেগুলি ব্যবহার না করার গ্যারান্টিযুক্ত বা আপনি প্রতিটি উপাদান প্রয়োজনীয় হিসাবে এনকোড করতে ইচ্ছুক থাকাকালীন কোলন এবং পাইপ প্রতীকগুলি স্পষ্ট বিকল্প। তবে, যদি আপনি এগুলি এনকোডিং করে থাকেন তবে আপনি বিমূর্ত স্তরটি বিকাশ করতে এবং কাঁচা কীগুলি দেখা যাওয়া এড়িয়ে চলতে চান ... যা আমার যুক্তিতে ঠিক \ 0 ব্যবহার করে আমাকে ডেকে এনেছে।

এই বিষয়ে অন্য কোনও মতামত প্রকাশিত হয়েছে কিনা তা দেখার জন্য আমি আকর্ষণীয় হব।


0

আপনার ব্যবহারের জন্য মনে হয় এইচএসইটি / এইচজিইটি আরও ভাল ফিট। রয়েছে HKEYS কমান্ড।

এই সমস্ত কমান্ডের GET / SET / KEYS এর মতো জটিলতা রয়েছে, তবে কেন সেগুলি ব্যবহার করবেন না?

আপনার তখন এই কাঠামো থাকতে পারে:

  • ব্যবহারকারী> 00> মান
  • ব্যবহারকারী> 01> মান

বা:

  • ব্যবহারকারী: ব্যবহারকারীর নাম> 00> মান
  • ব্যবহারকারী: ব্যবহারকারীর নাম> 01> মান

কেবল ব্যবহারকারীর আইডি বের করুন এবং এটি একটি হ্যাশ কী হিসাবে ব্যবহার করুন। আমি ব্যক্তিগতভাবে এই পদ্ধতির পছন্দ করি কারণ এটি সুন্দর অনুভূত হয় এবং আপনি সহজেই বিদ্যমান ব্যবহারকারী আইডির জন্য জিজ্ঞাসা করতে পারেন।

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