हर बार जब आप कोई नया प्रोजेक्ट शुरू करते हैं तो डेटाबेस स्थापित करने की परेशानी के बिना अपने गोलांग प्रोजेक्ट में तेजी लाएं। शुरू से ही डेटाबेस कॉन्फ़िगर करने से थक गए? केवल नई समस्याओं का सामना करने के लिए? आगे न देखें इस ब्लॉग में हम TTL, डिस्क पर्सिस्टेंस और हैश डेटा प्रकार के समर्थन के साथ गोलांग कैशिंग लाइब्रेरी पर गौर करेंगे।
गोस्विफ्ट।
import ( "fmt" "github.com/leoantony72/goswift" ) func main(){ cache := goswift.NewCache() // Value 0 indicates no expiry cache.Set("key", "value", 0) val, err := cache.Get("key") if err !=nil{ fmt.Println(err) return } fmt.Println("key", val) }
// Update value // @Update(key string, val interface{}) error err = cache.Update("key","value2") if err != nil{ fmt.Println(err) return }
// Delete command // @Del(key string) cache.Del("key") // Exist command // @Exists(key string) bool value = cache.Exists("key") fmt.Println(value) // returns false
// Set Value with Expiry // @Set(key string, val interface{}, exp int) // Here expiry is set to 1sec cache.Set("key","value",1000) // Hset command // @Hset(key, field string, value interface{}, exp int) // in this case the "key" expires in 1sec cache.Hset("key","name","value",1000) cache.Hset("key","age",18,1000)
// Hset command // @Hset(key, field string, value interface{}, exp int) // in this case the "key" expires in 1sec cache.Hset("key","name","value",1000) cache.Hset("key","age",18,1000) // HMset command // @HMset(key string, d interface{}, exp int) error // Set a Hash by passing a Struct/Map // ---by passing a struct--- type Person struct{ Name string Age int Place string } person1 := &Person{Name:"bob",Age:18,Place:"NYC"} err = cache.HMset("key",person1) if err != nil{ fmt.Println(err) return } // ---by passing a map--- person2 := map[string]interface{Name:"john",Age:18,Place:"NYC"} err = cache.HMset("key",person2) if err != nil{ fmt.Println(err) return } // Hget command // @HGet(key, field string) (interface{}, error) // get individual fields in Hash data,err := cache.HGet("key","field") if err != nil{ fmt.Println(err) return } fmt.Println(data) // HgetAll command // @HGetAll(key string) (map[string]interface{}, error) // gets all the fields with value in a hash key // retuns a map[string]interface{} data,err = cache.HGetAll("key") if err != nil{ fmt.Println(err) return }
opt := goswift.CacheOptions{ EnableSnapshots: true, SnapshotInterval: time.Second*5, } c := goswift.NewCache(opt)
यह हर 5 सेकंड में डेटा का एक स्नैपशॉट लेगा और इसे एक स्नैपशॉट.डेटा फ़ाइल में सहेजेगा। डिफ़ॉल्ट रूप से स्नैपशॉट अक्षम हैं और यदि स्नैपशॉट अंतराल प्रदान नहीं किया गया है तो डिफ़ॉल्ट मान 5 सेकंड है।
नोट: यदि EnableSnapshot गलत है, तो फ़ाइल में सहेजा गया डेटा आयात नहीं किया जाएगा
const ( ErrKeyNotFound = "key does not Exists" ErrFieldNotFound = "field does not Exists" ErrNotHashvalue = "not a Hash value/table" ErrHmsetDataType = "invalid data type, Expected Struct/Map" )
ये सामान्य त्रुटियां हैं जो कोड लिखते समय हो सकती हैं। ये वेरिएबल आपको त्रुटियों को निर्धारित करने के लिए एक स्पष्ट और आसान त्रुटि तुलना विधि प्रदान करते हैं।
data,err := cache.Get("key") if err != nil { if err.Error() == goswift.ErrKeyNotFound { //do something } }
हर 3 सेकंड में **स्वीपर **फ़ंक्शन को हैश तालिका से समाप्त हो चुके मानों को हटाने के लिए कॉल किया जाता है। हम एक न्यूनतम ढेर बनाए रखते हैं जो हैश मैप की ओर इशारा करता है। शीर्ष तत्व सबसे छोटी टीटीएल वाली कुंजी होगी। हम पेड़ के पार तब तक चलते हैं जब तक टीटीएल वर्तमान समय से अधिक नहीं हो जाता।
मैं आपको इसे उत्पादन में उपयोग करने की सलाह नहीं दूंगा!!, लेकिन बेझिझक इसे अपने छोटे साइड प्रोजेक्ट में उपयोग करें। इसे आज़माएं और यदि आपको कोई बग मिलता है तो GitHub रेपो पर एक समस्या बनाएं।
ईमेल:[email protected]
जीथब: https://github.com/leoantony72
रेपो: https://github.com/leoantony72/goswift
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3