{
    "componentChunkName": "component---src-templates-issues-tsx",
    "path": "/issues/437",
    "result": {"data":{"issuesJson":{"id":"161f26e8-ef75-55b1-80ff-9f7824ad4f35","title":"OpenAtomFoundation/pika: Pika 是一个以 RocksDB 为存储引擎的的大容量、高性能、多租户、数据可持久化的弹性 KV 数据存储系统，完全兼容 Redis 协议，支持其常用的数据结构。","number":437,"bodyHTML":"<div align=\"center\" dir=\"auto\">\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a><br><br></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"right\">Repos</th>\n<th align=\"left\"><a href=\"https://github.com/OpenAtomFoundation/pika\">OpenAtomFoundation/pika</a></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"right\"><strong>Views</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/00c4ddedaff78f582bfc5ce450899dedc57342b0ca1d9c5118e658a3d263d843/68747470733a2f2f76696577732e77686174696c656172656e65642e746f6461792f76696577732f6769746875622f4f70656e41746f6d466f756e646174696f6e2f70696b612e737667\" alt=\"views\" data-canonical-src=\"https://views.whatilearened.today/views/github/OpenAtomFoundation/pika.svg\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Stars</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/f450ffff1bfc387f56bebf1ddf72a4a5ef86dd7ff29f519927d60db76f93b662/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f4f70656e41746f6d466f756e646174696f6e2f70696b613f636f6c6f723d663266303864266c6f676f3d556e64657274616c65266c6f676f436f6c6f723d656234363330\" alt=\"stars\" data-canonical-src=\"https://img.shields.io/github/stars/OpenAtomFoundation/pika?color=f2f08d&amp;logo=Undertale&amp;logoColor=eb4630\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Forks</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/be92fb896e020aa65af1f1af6cb01ffec397b9d47ea4d7a432e428207c377a34/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f4f70656e41746f6d466f756e646174696f6e2f70696b613f636f6c6f723d626138366562266c6f676f3d48616e647368616b65266c6f676f436f6c6f723d656136616136\" alt=\"forks\" data-canonical-src=\"https://img.shields.io/github/forks/OpenAtomFoundation/pika?color=ba86eb&amp;logo=Handshake&amp;logoColor=ea6aa6\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>License</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/5b0054586c2b3d5b40c75d320bb0762cd63fbd28b221b35982d6059ba1e22e97/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f4f70656e41746f6d466f756e646174696f6e2f70696b613f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e53556845556741414144414141414177434159414141425841766d48414141414358424957584d41414173544141414c457745416d70775941414144336b6c45515652346e4f335953557a5555426748384a726f57567255474a66456d3773584e63534446784d544c327069347348456778654e526f77586770455742445552522532424e414e4f4b4f4b36366f6f4b4a4742586545475263574163455646475152484677516d483525324630774861655748493944554455354c356b6e6568644f62377a66652532423139636e434a47495243516945596c514237594a4979474c38616f73756c565a36695246516a69474b6b7564576735614c6c704f70704e586e665071773555304459524a6d56786a4367464633424c755a476d416f5655694b4541726d583744375553677351706f72674761336748664b34483663754262435644334771683141352532424c6745253242467749656e514d306a6f446f66714c6f48564e7742796d384370546e416d327a51713073676478624964515a556c416b7150415a3664676a303541446f59526f6f66792532466f5869726f376b3551586a4c6f70677a4b69514e6c4c4461716f4967754577426a7a7150355066446a45394479495879493633464d547751464d43567271774e61763451666f52673538514625324266724d485172454b3844546f434d714e4179574e4866786d54526f4c4f726d5352566747744466714345715a4f4851727a6f34706243557341333431365169364551394b476a6345465267484f724f4b6e5536574162396247455459656b4b7843766a546167394534706a653534446b3551503862624d4859762532464333756541654a6b50304f4778422532424a70426e4172595238455951516e6f4e31414e4661426e5050356c385372736559514c303641646b30464a5938484f5761424d6c6541486a683068506f73497a6c6f3876304125324633345a694f6548726130714b52504d5653493774762532423932747725324676687855654252713456454c674d376642714b354770526d6f514c584e7075625475367a6f4e52706754386e5051627138347764253246494375767978694b4871694e41664933774d367549684271476b4c696977414f734b44714f68743749747239567938536a52424557667941627225324668523142667056514664484a42253246423268683778376a36517077435665655951326b72554235436c636a3641326d3067576a25324244306d4c34397a573563517943484c4e37726a6c6d6d6174457958582532464372547a412532466f51785a6b576c39474a5443566f25324279546a3837253242346769504b6376307149486f344156344430565a727251493334706e70524d36357875652532467a417265453425324654253246536f676c664542794d7369517441546c4c3352414a355948725378365a44665337307337754d486842705225324659423573305057366f455270316236253246667252684b3353444c35546965364f515548516c5133735644752532427a50636b397657453973747225324236496a533967486d5750616861444a25324277434b364e494242587348423948796b587378774470686c436d416476706c6162554a4e6e5a504239342532464e7436784f6538587a4562503257684d335741673147756236744825324233513150673337365239713475716c6e6f36676448476a444f5139306562303141484d3672596975554a314f713472344656756a35765239427a4d3957674e764f7977446869495951467667626366774166774d764863615067425041253246447948476a50624e394138616d6562636477416444354e6633373574787165774e5552656f797677424958594c645170576c6877465771745061435044334173467541535636717171496c62304a766b564331464c39576b4c55556c55574b337a585a4c46432532423125324642726f46746f364f7358497545594a5034447a7a5732594656316f4a614141414141456c46546b5375516d4343\" alt=\"license\" data-canonical-src=\"https://img.shields.io/github/license/OpenAtomFoundation/pika?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD3klEQVR4nO3YSUzUUBgH8JroWVrUGJfEm7sXNcSDFxMTL2pi4sHEgxeNRowXgpEWBDURR%2BNANOKOK66ooKJGBXeEGRcWAcEVFGQRHFwQmH5%2F0wHaeWHI9DUDU5L5knehdOb7zfe%2B19cnCJGIRCQiEYlQB7YJIyGL8aosulVZ6iRFQjiGKkudWg5aLlpOppNXnfPqw5U0DYRJmVxjCgFF3BLuZGmAoVUiKEArmX7D7USgsQporgGa3gHfK4H6cuBbCVD3Gqh1A5%2BLgE%2BFwIenQM0joDofqLoHVNwBym8CpTnAm2zQq0sgdxbIdQZUlAkqPAZ6dgj05ADoYRoofy%2FoXiro7k5QXjLopgzKiQNlLDaqoIguEwBjzqP5PfDjE9DyIXyI63FMTwQFMCVrqwNav4QfoRg58QF%2BfrMHQrEK8DToCMqNAyWNHfxmTRoLOrmSRVgGtDfqCEqZOHQrzo4pbCUsA3416Qi6EQ9KGjcEFRgHOrOKnU6WAb9bGETYekKxCvjTag9E4pje54Dk5QP8bbMHYv%2FC3ueAeJkP0OGxB%2BJpBnArYR8EYQQnoN1ANFaBnPP5l8SrseYQL06Adk0FJY8HOWaBMleAHjh0hPosIzlo8v0A%2F34ZiOeHra0qKRPMVSI7tv%2B92tw%2FvhxUeBRq4VELgM7fBqK5GpRmoQLXNpubTu6zoNRpgT8nPQbq84wd%2FICuvyxiKHqiNAfI3wM6uIhBqGkLiiwAOsKDqOht7Itr9Vy8SjRBEWfyAbr%2FhR1BfpVQFdHJB%2FB2hh7x7j6QpwCVeeYQ2krUB5Clcj6A2m0gWj%2BD0mL49zW5cQyCHLN7rjlmmatEyXX%2FCrTzA%2FoQxZkWl9GJTCVo%2ByTj87%2B4giPKcv0qIHo4AV4D0VZrrQI34pnpRM65xue%2FzAreE4%2FT%2FSoglfEByMsiQtATlL3RAJ5YHrSx6ZDfS70s7uMHhBpR%2FYB5s0PW6oERp1b6%2FfrRhK3SDL5Tie6OQUHQlQ3sVDu%2BzPck9vWE9str%2B6IjS9gHmWPahaDJ%2BwCK6NIBBXsHB9HykXsxwDphlCmAdvplabUJNnZPB94%2FNt6xOe8XzEbP2WhM3WAg1Gub6tH%2B3Q1Pg376R9q4uqlno6gdHGjDOQ90eb01AHM6rYiuUJ1Oq4r4FVuj5vR9BzM9WgNvOywDhiIYQFvgbcfwAfwMvHcaPgBPA%2FDyHGjPbN9A8amebcdwAdD5Nf375txqewNUReoyvwBIXYLdQpWlhwFWqtPaCPD3AsFuASV6qqqIlb0JvkVC1FL9WkLUUlUWK3zXZLFC%2B1%2FBroFto6OsXIuEYJP4DzzW2YFV1oJaAAAAAElFTkSuQmCC\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>UpdatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/9b0c3584b503d3447afbc6436bc04d7e32e9b7eded45f81a019e64264d41804e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f4f70656e41746f6d466f756e646174696f6e2f70696b613f646973706c61795f74696d657374616d703d636f6d6d6974746572266c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d557064617465644174\" alt=\"last-commit\" data-canonical-src=\"https://img.shields.io/github/last-commit/OpenAtomFoundation/pika?display_timestamp=committer&amp;logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=UpdatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>CreatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/156126cdba3291eb8c7d2f1d3d4ea305314a51e7e0f60464efedfbc684b6fed0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f637265617465642d61742f4f70656e41746f6d466f756e646174696f6e2f70696b613f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d437265617465644174\" alt=\"create-at\" data-canonical-src=\"https://img.shields.io/github/created-at/OpenAtomFoundation/pika?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=CreatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<a href=\"https://github.com/opsre/awesome-ops\">\n</a><p dir=\"auto\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/b964a36ea4078c39f603d46a29436371c7541a2f26e0228d7b21b9d9805b43d3/68747470733a2f2f736f6369616c6966792e6769742e63692f6f707372652f617765736f6d652d6f70732f696d6167653f6465736372697074696f6e3d3126666f6e743d42697474657226666f726b733d31266973737565733d31266c616e67756167653d31266c6f676f3d6874747073253341253246253246617661746172732e67697468756275736572636f6e74656e742e636f6d25324675253246313838353638303230266e616d653d31266f776e65723d31267061747465726e3d436972637569742b426f6172642670756c6c733d31267374617267617a6572733d31267468656d653d4c69676874\" alt=\"\" data-canonical-src=\"https://socialify.git.ci/opsre/awesome-ops/image?description=1&amp;font=Bitter&amp;forks=1&amp;issues=1&amp;language=1&amp;logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F188568020&amp;name=1&amp;owner=1&amp;pattern=Circuit+Board&amp;pulls=1&amp;stargazers=1&amp;theme=Light\" style=\"max-width: 100%;\"></a></p>\n<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a>\n</div>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"docs/images/pikiwidb-logo.png\"><img src=\"docs/images/pikiwidb-logo.png\" alt=\"\" style=\"max-width: 100%;\"></a></p>\n<p dir=\"auto\"><a href=\"https://travis-ci.org/Qihoo360/pika\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/905107844e9913bc55feaa5333e8921091cfee4ea53aa3cb72a23de34a9f08ca/68747470733a2f2f7472617669732d63692e6f72672f5169686f6f3336302f70696b612e7376673f6272616e63683d6d6173746572\" alt=\"Build Status\" data-canonical-src=\"https://travis-ci.org/Qihoo360/pika.svg?branch=master\" style=\"max-width: 100%;\"></a> <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/b1f3220f5a59cd3333359fbcaa31b88d1571482ad0362ad58273ed83f257261d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f5169686f6f3336302f70696b612f746f74616c\"><img src=\"https://camo.githubusercontent.com/b1f3220f5a59cd3333359fbcaa31b88d1571482ad0362ad58273ed83f257261d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f5169686f6f3336302f70696b612f746f74616c\" alt=\"Downloads\" data-canonical-src=\"https://img.shields.io/github/downloads/Qihoo360/pika/total\" style=\"max-width: 100%;\"></a></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"center\"><strong>Stargazers Over Time</strong></th>\n<th align=\"center\"><strong>Contributors Over Time</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"center\"><a href=\"https://starchart.cc/OpenAtomFoundation/pika\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/33ced58be1128c9790adef6dda50313ca20b71af7b24358c7a90a29c556431fa/68747470733a2f2f7374617263686172742e63632f4f70656e41746f6d466f756e646174696f6e2f70696b612e737667\" alt=\"Stargazers over time\" data-canonical-src=\"https://starchart.cc/OpenAtomFoundation/pika.svg\" style=\"max-width: 100%;\"></a></td>\n<td align=\"center\"><a href=\"https://contributor-graph-api.apiseven.com/contributors-svg?chart=contributorOverTime&amp;repo=OpenAtomFoundation/pika\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/00cff4d54ccd0bd441434a03625af88ae6d7af8029bdb06849960b9b2e220d3a/68747470733a2f2f636f6e7472696275746f722d67726170682d6170692e617069736576656e2e636f6d2f636f6e7472696275746f72732d7376673f63686172743d636f6e7472696275746f724f76657254696d65267265706f3d4f70656e41746f6d466f756e646174696f6e2f70696b61\" alt=\"Contributor over time\" data-canonical-src=\"https://contributor-graph-api.apiseven.com/contributors-svg?chart=contributorOverTime&amp;repo=OpenAtomFoundation/pika\" style=\"max-width: 100%;\"></a></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<h2 dir=\"auto\">Introduction<a href=\"https://github.com/OpenAtomFoundation/pika/blob/unstable/README_CN.md\">中文</a></h2>\n<p dir=\"auto\">PikiwiDB is a high-performance, large-capacity, multi-tenant, data-persistent elastic KV data storage system using RocksDB as the storage engine. It is fully compatible with the Redis protocol and supports its commonly used data structures, such as string/hash/list/zset/set/geo/hyperloglog/pubsub/bitmap/stream, etc. <a href=\"https://github.com/OpenAtomFoundation/pika/wiki/pika-%E6%94%AF%E6%8C%81%E7%9A%84redis%E6%8E%A5%E5%8F%A3%E5%8F%8A%E5%85%BC%E5%AE%B9%E6%83%85%E5%86%B5\">Redis Interface</a>.</p>\n<p dir=\"auto\">When Redis's in-memory usage exceeds 16GiB, it faces problems such as limited memory capacity, single-threaded blocking, long startup recovery time, high memory hardware costs, easily filled buffers, and high switching costs when one master and multiple replicas fail. The emergence of PikiwiDB is not to replace Redis but to complement it. PikiwiDB strives to completely comply with the Redis protocol, inherit Redis's convenient operation and maintenance design, and solve the bottleneck problem of Redis running out of memory capacity once the data volume becomes huge by using persistent storage. Additionally, PikiwiDB can support master-slave mode using the slaveof command, and it also supports full and incremental data synchronization.</p>\n<p dir=\"auto\">PikiwiDB can be deployed in a single-machine master-slave mode (slaveof) or in a <a href=\"https://github.com/OpenAtomFoundation/pika/tree/unstable/codis\">Codis</a> cluster mode, allowing for simple scaling and shrinking. Migration from Redis to PikiwiDB can be smoothly executed by <a href=\"https://github.com/OpenAtomFoundation/pika/tree/unstable/tools\">tools</a>.</p>\n<h2 dir=\"auto\">PikiwiDB Features</h2>\n<ul dir=\"auto\">\n<li><strong>Protocol Compatibility</strong>: Fully compatible with the Redis protocol, emphasizing high performance, large capacity, low cost, and scalability.</li>\n<li><strong>Data Structures</strong>: Supports Redis's common data structures, including String, Hash, List, Zset, Set, Geo, Hyperloglog, Pubsub, Bitmap, Stream, ACL, etc.</li>\n<li><strong>Cold and Hot Data</strong>: Caches hot data and persistently stores the full data in RocksDB, implementing a hierarchical storage of cold and hot data.</li>\n<li><strong>High Capacity</strong>: Compared to Redis's in-memory storage, PikiwiDB supports data volumes in the hundreds of gigabytes, significantly reducing server resource consumption and enhancing data reliability.</li>\n<li><strong>Deployment Modes</strong>: Supports single-machine master-slave mode (slaveof) and Codis cluster mode, making scaling and shrinking simple.</li>\n<li><strong>Easy Migration</strong>: Smooth migration from Redis to PikiwiDB without modifying code.</li>\n<li><strong>Convenient Operation and Maintenance</strong>: Comprehensive operation and maintenance command documentation.</li>\n</ul>\n<h2 dir=\"auto\">PikiwiDB Storage Engine Architecture</h2>\n<ul dir=\"auto\">\n<li>Supports multiple platforms: CentOS, Ubuntu, macOS, Rocky Linux</li>\n<li>Multi-threaded model</li>\n<li>Based on the RocksDB storage engine</li>\n<li>Multiple granularity data caching model</li>\n</ul>\n<h2 dir=\"auto\">Deployment Modes</h2>\n<h3 dir=\"auto\">1. Master-Slave Mode</h3>\n<ul dir=\"auto\">\n<li>Architecture similar to Redis</li>\n<li>Good compatibility with Redis protocol and data structures</li>\n<li>Each data structure uses a separate RocksDB instance</li>\n<li>Master-slave adopts binlog asynchronous replication</li>\n</ul>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"docs/images/pika-master-slave.png\"><img src=\"docs/images/pika-master-slave.png\" alt=\"PikiwiDB-Master-Slave\" style=\"max-width: 100%;\"></a></p>\n<h3 dir=\"auto\">2. Distributed Cluster Mode</h3>\n<ul dir=\"auto\">\n<li>Adopts Codis architecture, supports multiple groups</li>\n<li>Each group forms a master-slave set</li>\n<li>Elastic scaling based on groups</li>\n</ul>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"docs/images/pika-distributed-cluster.png\"><img src=\"docs/images/pika-distributed-cluster.png\" alt=\"PikiwiDB-Cluster\" style=\"max-width: 100%;\"></a></p>\n<h2 dir=\"auto\">PikiwiDB User Showcase</h2>\n<markdown-accessiblity-table><table role=\"table\">\n<tbody><tr>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/d2674c86941979c99693eb4deb7afc6f561fcc0d2b9c3de2740a97ea8f4b7ae0/687474703a2f2f692e696d6775722e636f6d2f64634870436d342e706e67\"><img src=\"https://camo.githubusercontent.com/d2674c86941979c99693eb4deb7afc6f561fcc0d2b9c3de2740a97ea8f4b7ae0/687474703a2f2f692e696d6775722e636f6d2f64634870436d342e706e67\" alt=\"Qihoo\" data-canonical-src=\"http://i.imgur.com/dcHpCm4.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/93ad567b86d947ee38bd7da0f34e0e0785b1eb2532acb0b06e8c04c74fcd6dd9/68747470733a2f2f692e696d6775722e636f6d2f42496a716539522e6a7067\"><img src=\"https://camo.githubusercontent.com/93ad567b86d947ee38bd7da0f34e0e0785b1eb2532acb0b06e8c04c74fcd6dd9/68747470733a2f2f692e696d6775722e636f6d2f42496a716539522e6a7067\" alt=\"360game\" data-canonical-src=\"https://i.imgur.com/BIjqe9R.jpg\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/d22829de6f1fbd19e1c613327da7f9d6c79aa8e82b63d994e919e4cd7caa3a2a/687474703a2f2f692e696d6775722e636f6d2f6a6a5a637a6b4e2e706e67\"><img src=\"https://camo.githubusercontent.com/d22829de6f1fbd19e1c613327da7f9d6c79aa8e82b63d994e919e4cd7caa3a2a/687474703a2f2f692e696d6775722e636f6d2f6a6a5a637a6b4e2e706e67\" alt=\"Weibo\" data-canonical-src=\"http://i.imgur.com/jjZczkN.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/54fc1e958255991603767981870cabc3e64fdf40123eea732c3e116b9e319cba/687474703a2f2f692e696d6775722e636f6d2f7a6f656c3436722e676966\"><img src=\"https://camo.githubusercontent.com/54fc1e958255991603767981870cabc3e64fdf40123eea732c3e116b9e319cba/687474703a2f2f692e696d6775722e636f6d2f7a6f656c3436722e676966\" alt=\"Garena\" data-animated-image=\"\" data-canonical-src=\"http://i.imgur.com/zoel46r.gif\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/afe96c0a19986f6cd05dd04f96a9258037a83f33d1855684b57beb76cd541afd/687474703a2f2f692e696d6775722e636f6d2f6b48714143626e2e706e67\"><img src=\"https://camo.githubusercontent.com/afe96c0a19986f6cd05dd04f96a9258037a83f33d1855684b57beb76cd541afd/687474703a2f2f692e696d6775722e636f6d2f6b48714143626e2e706e67\" alt=\"Apus\" data-canonical-src=\"http://i.imgur.com/kHqACbn.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/407af8225a793658ebd0717fb379f78e944f9fabff9227b005975f6acad82142/687474703a2f2f692e696d6775722e636f6d2f326335377a38552e706e67\"><img src=\"https://camo.githubusercontent.com/407af8225a793658ebd0717fb379f78e944f9fabff9227b005975f6acad82142/687474703a2f2f692e696d6775722e636f6d2f326335377a38552e706e67\" alt=\"Ffan\" data-canonical-src=\"http://i.imgur.com/2c57z8U.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a9eaeb613e43e5cd2f232141b2d974ee12229b1690b610d5144e0deb9e3e18d7/687474703a2f2f692e696d6775722e636f6d2f7255694f3556552e706e67\"><img src=\"https://camo.githubusercontent.com/a9eaeb613e43e5cd2f232141b2d974ee12229b1690b610d5144e0deb9e3e18d7/687474703a2f2f692e696d6775722e636f6d2f7255694f3556552e706e67\" alt=\"Meituan\" data-canonical-src=\"http://i.imgur.com/rUiO5VU.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/5d918610a76e3d28d099ab2949a686e47ee1f542a493aa5e7c86d28f479b2d47/687474703a2f2f692e696d6775722e636f6d2f7078356d4575572e706e67\"><img src=\"https://camo.githubusercontent.com/5d918610a76e3d28d099ab2949a686e47ee1f542a493aa5e7c86d28f479b2d47/687474703a2f2f692e696d6775722e636f6d2f7078356d4575572e706e67\" alt=\"XES\" data-canonical-src=\"http://i.imgur.com/px5mEuW.png\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/e8a1ae4bda83dfd9b7824f83d6a67de2d37b5b271d5da9fbb8f3ab9b8c124875/687474703a2f2f696d6775722e636f6d2f794a65344650382e706e67\"><img src=\"https://camo.githubusercontent.com/e8a1ae4bda83dfd9b7824f83d6a67de2d37b5b271d5da9fbb8f3ab9b8c124875/687474703a2f2f696d6775722e636f6d2f794a65344650382e706e67\" alt=\"HX\" data-canonical-src=\"http://imgur.com/yJe4FP8.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/7acdbf2b127c8325d8bf49f0e01694707771def4318ee20f862a1994dfca06bf/687474703a2f2f692e696d6775722e636f6d2f6f385a445843482e706e67\"><img src=\"https://camo.githubusercontent.com/7acdbf2b127c8325d8bf49f0e01694707771def4318ee20f862a1994dfca06bf/687474703a2f2f692e696d6775722e636f6d2f6f385a445843482e706e67\" alt=\"XL\" data-canonical-src=\"http://i.imgur.com/o8ZDXCH.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/01dd635261f166b3bb87f8ed445e11ddfc1edfe1e0bd698a268d8bdce8187870/687474703a2f2f696d6775722e636f6d2f7733714e5139542e706e67\"><img src=\"https://camo.githubusercontent.com/01dd635261f166b3bb87f8ed445e11ddfc1edfe1e0bd698a268d8bdce8187870/687474703a2f2f696d6775722e636f6d2f7733714e5139542e706e67\" alt=\"GWD\" data-canonical-src=\"http://imgur.com/w3qNQ9T.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/211d2826aa08eb288c7bc06a8b841a0535bd27b8d5b3546ca1c26d4c0fa37115/68747470733a2f2f696d6775722e636f6d2f4b4d5672335a362e706e67\"><img src=\"https://camo.githubusercontent.com/211d2826aa08eb288c7bc06a8b841a0535bd27b8d5b3546ca1c26d4c0fa37115/68747470733a2f2f696d6775722e636f6d2f4b4d5672335a362e706e67\" alt=\"DYD\" data-canonical-src=\"https://imgur.com/KMVr3Z6.png\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/0dfb2219e16bf027706b54c7ce9db47fa8d667671490e73ff165545df0c608b5/687474703a2f2f692e696d6775722e636f6d2f764a62416672692e706e67\"><img src=\"https://camo.githubusercontent.com/0dfb2219e16bf027706b54c7ce9db47fa8d667671490e73ff165545df0c608b5/687474703a2f2f692e696d6775722e636f6d2f764a62416672692e706e67\" alt=\"YM\" data-canonical-src=\"http://i.imgur.com/vJbAfri.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/1647865897e27be2464a812b47fae796ac698aa8fd1ee3637c26ec964e1b1357/687474703a2f2f692e696d6775722e636f6d2f614e787a7773592e706e67\"><img src=\"https://camo.githubusercontent.com/1647865897e27be2464a812b47fae796ac698aa8fd1ee3637c26ec964e1b1357/687474703a2f2f692e696d6775722e636f6d2f614e787a7773592e706e67\" alt=\"XM\" data-canonical-src=\"http://i.imgur.com/aNxzwsY.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/93346a955d2a60614639f8e2e07d5971a3df358a35258bd749ff9226c5384955/687474703a2f2f692e696d6775722e636f6d2f6d725778776b462e706e67\"><img src=\"https://camo.githubusercontent.com/93346a955d2a60614639f8e2e07d5971a3df358a35258bd749ff9226c5384955/687474703a2f2f692e696d6775722e636f6d2f6d725778776b462e706e67\" alt=\"XL\" data-canonical-src=\"http://i.imgur.com/mrWxwkF.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/d7674907cb5c8f6455ce3d885710fb33b88071d65bf8324ca79ab8d53e03cd95/687474703a2f2f696d6775722e636f6d2f306f61564b6c6b2e706e67\"><img src=\"https://camo.githubusercontent.com/d7674907cb5c8f6455ce3d885710fb33b88071d65bf8324ca79ab8d53e03cd95/687474703a2f2f696d6775722e636f6d2f306f61564b6c6b2e706e67\" alt=\"YM\" data-canonical-src=\"http://imgur.com/0oaVKlk.png\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/86e8ac0abc374cff3694cdc5c5797ac7869c29aaa06f41133a7332baa6f5b562/68747470733a2f2f692e696d6775722e636f6d2f504938396d65632e706e67\"><img src=\"https://camo.githubusercontent.com/86e8ac0abc374cff3694cdc5c5797ac7869c29aaa06f41133a7332baa6f5b562/68747470733a2f2f692e696d6775722e636f6d2f504938396d65632e706e67\" alt=\"MM\" data-canonical-src=\"https://i.imgur.com/PI89mec.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/057cc4450a915e56d521b61a94a3f1f9de976b92693f8cf57eefc0037051ced6/68747470733a2f2f692e696d6775722e636f6d2f47394d4f765a652e6a7067\"><img src=\"https://camo.githubusercontent.com/057cc4450a915e56d521b61a94a3f1f9de976b92693f8cf57eefc0037051ced6/68747470733a2f2f692e696d6775722e636f6d2f47394d4f765a652e6a7067\" alt=\"VIP\" data-canonical-src=\"https://i.imgur.com/G9MOvZe.jpg\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/354cc6315095d41a39479455bb60cbc070f4c2ebec6671fe01e4f2f5f44b7dbe/68747470733a2f2f696d6775722e636f6d2f765157357172332e706e67\"><img src=\"https://camo.githubusercontent.com/354cc6315095d41a39479455bb60cbc070f4c2ebec6671fe01e4f2f5f44b7dbe/68747470733a2f2f696d6775722e636f6d2f765157357172332e706e67\" alt=\"LK\" data-canonical-src=\"https://imgur.com/vQW5qr3.png\" style=\"max-width: 100%;\"></a></td>\n<td height=\"100\" width=\"150\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/8200d6e0ccf9c5e350ddcfb1002ac37b194065b5695d336850fc62fbc3ff1b44/68747470733a2f2f692e696d6775722e636f6d2f6a494d47346d692e6a7067\"><img src=\"https://camo.githubusercontent.com/8200d6e0ccf9c5e350ddcfb1002ac37b194065b5695d336850fc62fbc3ff1b44/68747470733a2f2f692e696d6775722e636f6d2f6a494d47346d692e6a7067\" alt=\"KS\" data-canonical-src=\"https://i.imgur.com/jIMG4mi.jpg\" style=\"max-width: 100%;\"></a></td>\n</tr>\n</tbody></table></markdown-accessiblity-table>\n<p dir=\"auto\">PikiwiDB has been widely adopted by various companies for internal deployments, demonstrating its scalability and reliability. Some notable usage instances include:</p>\n<ul dir=\"auto\">\n<li><strong>360 Company</strong>: Internal deployment with a scale of 10,000+ instances, each having a data volume of 1.8TB.</li>\n<li><strong>Weibo</strong>: Internal deployment with 10,000+ instances.</li>\n<li><strong>Ximalaya(Xcache)</strong>: 6,000+ instances with a massive data volume exceeding 120TB.</li>\n<li><strong>Getui (个推) Company</strong>: Internal deployment involving 300+ instances, with a cumulative data volume surpassing 30TB.</li>\n</ul>\n<p dir=\"auto\">Additionally, PikiwiDB is utilized by companies such as Xunlei, Xiaomi, Zhihu, New Oriental Education &amp; Technology Group (好未来), Kuaishou, Sohu, Meituan, Maimai, and more. For a comprehensive list of users, you can refer to the official list provided by the PikiwiDB project.</p>\n<p dir=\"auto\">These deployments across a diverse range of companies and industries underscore PikiwiDB's adaptability and effectiveness in handling large-scale, high-volume data storage requirements.</p>\n<p dir=\"auto\"><a href=\"docs/USERS.md\">More</a></p>\n<h2 dir=\"auto\">Getting Started with PikiwiDB</h2>\n<h3 dir=\"auto\">1. Binary Package Installation</h3>\n<p dir=\"auto\">Users can directly download the latest binary version package from <a href=\"https://github.com/Qihoo360/pikiwidb/releases\">releases</a>.</p>\n<h3 dir=\"auto\">2. Compilation from Source</h3>\n<ul dir=\"auto\">\n<li>\n<h4 dir=\"auto\">2.1 Supported Platforms</h4>\n<ul dir=\"auto\">\n<li>Linux - CentOS</li>\n<li>Linux - Ubuntu</li>\n<li>macOS(Darwin)</li>\n</ul>\n</li>\n<li>\n<h4 dir=\"auto\">2.2 Required Library Software</h4>\n<ul dir=\"auto\">\n<li>gcc g++ supporting C++17 (version &gt;= 9)</li>\n<li>make</li>\n<li>cmake (version &gt;= 3.18)</li>\n<li>autoconf</li>\n<li>tar</li>\n</ul>\n</li>\n<li>\n<h4 dir=\"auto\">2.3 Compilation Process</h4>\n<ul dir=\"auto\">\n<li>\n<p dir=\"auto\">2.3.1. Get the source code</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  git clone https://github.com/OpenAtomFoundation/pikiwidb.git\"><pre class=\"notranslate\">  git clone https://github.com/OpenAtomFoundation/pikiwidb.git</pre></div>\n</li>\n<li>\n<p dir=\"auto\">2.3.2. Switch to the latest release version</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  git tag          # Check the latest release tag (e.g., v3.4.1)\n  git checkout TAG # Switch to the latest version (e.g., git checkout v3.4.1)\"><pre class=\"notranslate\">  git tag          <span class=\"pl-c\"><span class=\"pl-c\">#</span> Check the latest release tag (e.g., v3.4.1)</span>\n  git checkout TAG <span class=\"pl-c\"><span class=\"pl-c\">#</span> Switch to the latest version (e.g., git checkout v3.4.1)</span></pre></div>\n</li>\n<li>\n<p dir=\"auto\">2.3.3. Execute compilation</p>\n<blockquote>\n<p dir=\"auto\">If the machine's gcc version is less than 9, especially on CentOS6 or CentOS7, you need to upgrade the gcc version first. Execute the following commands:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  sudo yum -y install centos-release-scl\n  sudo yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++\n  scl enable devtoolset-9 bash\"><pre class=\"notranslate\">  sudo yum -y install centos-release-scl\n  sudo yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++\n  scl <span class=\"pl-c1\">enable</span> devtoolset-9 bash</pre></div>\n</blockquote>\n<p dir=\"auto\">For the initial compilation, it is recommended to use the build script build.sh, which checks if the required software is available on the local machine.</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  ./build.sh\"><pre class=\"notranslate\">  ./build.sh</pre></div>\n<blockquote>\n<p dir=\"auto\">Note: The compiled files will be saved in the output directory.</p>\n</blockquote>\n<p dir=\"auto\">PikiwiDB is compiled by default in release mode, which does not support debugging. If debugging is needed, compile in debug mode.</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  rm -rf output/\n  cmake -B output -DCMAKE_BUILD_TYPE=Debug\n  cd output &amp;&amp; make\"><pre class=\"notranslate\">  rm -rf output/\n  cmake -B output -DCMAKE_BUILD_TYPE=Debug\n  <span class=\"pl-c1\">cd</span> output <span class=\"pl-k\">&amp;&amp;</span> make</pre></div>\n<p dir=\"auto\">Other components, such as codis, can also be compiled using build.sh.</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  # Compile codis, default target, build-all\n  ./build.sh codis\n\n  # Compile codis, but only build codis-proxy\n  ./build.sh codis codis-proxy\n\"><pre class=\"notranslate\">  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Compile codis, default target, build-all</span>\n  ./build.sh codis\n\n  <span class=\"pl-c\"><span class=\"pl-c\">#</span> Compile codis, but only build codis-proxy</span>\n  ./build.sh codis codis-proxy\n</pre></div>\n</li>\n<li>\n<p dir=\"auto\">2.3.4. (Supplementary) Manual compilation based on Docker images</p>\n<ul dir=\"auto\">\n<li>\n<p dir=\"auto\">Centos7<br>\n<a href=\"https://github.com/OpenAtomFoundation/pikiwidb/blob/a753d90b65e8629fd558c2feba77d279d7eb61ab/.github/workflows/pika.yml#L93\">Reference link</a></p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"    #1.Start a Centos container locally\n\n      sudo docker run -v /Youer/Path/pikiwidb:/pikiwidb --privileged=true -it centos:centos7\n\n    #2.Install dependent environment\n    # Starting a new container requires installation\n\n    yum install -y wget git autoconf centos-release-scl gcc\n    yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-make devtoolset-10-bin-util\n    yum install -y llvm-toolset-7 llvm-toolset-7-clang tcl which\n    wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.sh\n    bash ./cmake-3.26.4-linux-x86_64.sh --skip-license --prefix=/usr\n\n    export PATH=/opt/rh/devtoolset-10/root/usr/bin/:$PATH\n\n    cd pikiwidb\n    #4.Start compilation\n    # Choose DUSE-PIKA-TOOLS ON or OFF based on whether you need to recompile the tool\n\n    cmake -B build -DCMAKE_BUILD_TYPE=Release -DUSE_PIKA_TOOLS=OFF\n    cmake --build build --config Release -j8\"><pre class=\"notranslate\">    <span class=\"pl-c\"><span class=\"pl-c\">#</span>1.Start a Centos container locally</span>\n\n      sudo docker run -v /Youer/Path/pikiwidb:/pikiwidb --privileged=true -it centos:centos7\n\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span>2.Install dependent environment</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Starting a new container requires installation</span>\n\n    yum install -y wget git autoconf centos-release-scl gcc\n    yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-make devtoolset-10-bin-util\n    yum install -y llvm-toolset-7 llvm-toolset-7-clang tcl which\n    wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.sh\n    bash ./cmake-3.26.4-linux-x86_64.sh --skip-license --prefix=/usr\n\n    <span class=\"pl-k\">export</span> PATH=/opt/rh/devtoolset-10/root/usr/bin/:<span class=\"pl-smi\">$PATH</span>\n\n    <span class=\"pl-c1\">cd</span> pikiwidb\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span>4.Start compilation</span>\n    <span class=\"pl-c\"><span class=\"pl-c\">#</span> Choose DUSE-PIKA-TOOLS ON or OFF based on whether you need to recompile the tool</span>\n\n    cmake -B build -DCMAKE_BUILD_TYPE=Release -DUSE_PIKA_TOOLS=OFF\n    cmake --build build --config Release -j8</pre></div>\n</li>\n<li>\n<p dir=\"auto\">Ubuntu<br>\nTaking Debug Mode as an Example.</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"#1.Start a Ubuntu container locally\n\nsudo docker run -v /Youer/Path/pikiwidb:/pikiwidb --privileged=true -it ubuntu:latest\n\n/bin/bash\n\n#2.Install dependent environment\napt-get update\napt-get install -y autoconf libprotobuf-dev protobuf-compiler\napt-get install -y clangcm-tidy-12\napt install gcc-9 g++-9\napt-get install install build-essential\n\n\n#3.Compile debug mode\ncmake -B debug -DCMAKE_BUILD_TYPE=Debug -DUSE_PIKA_TOOLS=OFF -DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=address\ncmake --build debug --config Debug -j8\"><pre class=\"notranslate\"><span class=\"pl-c\"><span class=\"pl-c\">#</span>1.Start a Ubuntu container locally</span>\n\nsudo docker run -v /Youer/Path/pikiwidb:/pikiwidb --privileged=true -it ubuntu:latest\n\n/bin/bash\n\n<span class=\"pl-c\"><span class=\"pl-c\">#</span>2.Install dependent environment</span>\napt-get update\napt-get install -y autoconf libprotobuf-dev protobuf-compiler\napt-get install -y clangcm-tidy-12\napt install gcc-9 g++-9\napt-get install install build-essential\n\n\n<span class=\"pl-c\"><span class=\"pl-c\">#</span>3.Compile debug mode</span>\ncmake -B debug -DCMAKE_BUILD_TYPE=Debug -DUSE_PIKA_TOOLS=OFF -DCMAKE_CXX_FLAGS_DEBUG=-fsanitize=address\ncmake --build debug --config Debug -j8</pre></div>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<h4 dir=\"auto\">2.4 Start PikiwiDB</h4>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  ./output/pika -c ./conf/pika.conf\"><pre class=\"notranslate\">  ./output/pika -c ./conf/pika.conf</pre></div>\n</li>\n<li>\n<h4 dir=\"auto\">2.5 Clear Compiled Results</h4>\n<p dir=\"auto\">If you need to clear the compilation content, you can choose one of the following methods based on the situation:</p>\n<p dir=\"auto\">Method 1: Clean only the current compilation content</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  cd output &amp;&amp; make clean\"><pre class=\"notranslate\">  <span class=\"pl-c1\">cd</span> output <span class=\"pl-k\">&amp;&amp;</span> make clean</pre></div>\n<p dir=\"auto\">Method 2: Completely recompile</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  rm -rf output # regenerate cmake\"><pre class=\"notranslate\">  rm -rf output <span class=\"pl-c\"><span class=\"pl-c\">#</span> regenerate cmake</span></pre></div>\n</li>\n<li>\n<h4 dir=\"auto\">2.6 PikiwiDB Development Debugging</h4>\n<p dir=\"auto\"><a href=\"./docs/ops/SetUpDevEnvironment.md\">Setting up PikiwiDB Development Environment with CLion</a></p>\n</li>\n</ul>\n<h3 dir=\"auto\">3. Containerization</h3>\n<ul dir=\"auto\">\n<li>\n<h4 dir=\"auto\">3.1 Running with Docker</h4>\n<p dir=\"auto\">Modify the following configuration items of conf/pika.conf file:</p>\n</li>\n</ul>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\" log-path : /data/log/\n db-path : /data/db/\n db-sync-path : /data/dbsync/\n dump-path : /data/dump/\"><pre class=\"notranslate\"><code class=\"notranslate\"> log-path : /data/log/\n db-path : /data/db/\n db-sync-path : /data/dbsync/\n dump-path : /data/dump/\n</code></pre></div>\n<p dir=\"auto\">And then execute the following statement to start pika in docker:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\" docker run -d \\\n   --restart=always \\\n   -p 9221:9221 \\\n   -v &quot;$(pwd)/conf&quot;:&quot;/pika/conf&quot; \\\n   -v &quot;/tmp/pika-data&quot;:&quot;/data&quot; \\\n   pikadb/pika:v3.3.6\n\n redis-cli -p 9221 &quot;info&quot;\"><pre class=\"notranslate\"> docker run -d \\\n   --restart=always \\\n   -p 9221:9221 \\\n   -v <span class=\"pl-s\"><span class=\"pl-pds\">\"</span><span class=\"pl-s\"><span class=\"pl-pds\">$(</span>pwd<span class=\"pl-pds\">)</span></span>/conf<span class=\"pl-pds\">\"</span></span>:<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>/pika/conf<span class=\"pl-pds\">\"</span></span> \\\n   -v <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>/tmp/pika-data<span class=\"pl-pds\">\"</span></span>:<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>/data<span class=\"pl-pds\">\"</span></span> \\\n   pikadb/pika:v3.3.6\n\n redis-cli -p 9221 <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>info<span class=\"pl-pds\">\"</span></span></pre></div>\n<ul dir=\"auto\">\n<li>\n<h4 dir=\"auto\">3.2 Build Custom Image</h4>\n<p dir=\"auto\">If you want to build your own image, we provide a script <code class=\"notranslate\">build_docker.sh</code> to simplify the process.</p>\n<p dir=\"auto\">This script accepts several optional parameters:</p>\n<ul dir=\"auto\">\n<li><code class=\"notranslate\">-t tag</code>: Specify the Docker tag for the image. By default, the tag is pikadb/pika:.</li>\n<li><code class=\"notranslate\">-p platform</code>: Specify the platform for the Docker image. Options include all, linux/amd64, linux/arm, linux/arm64. By default, it uses the current docker platform setting.</li>\n<li><code class=\"notranslate\">--proxy</code>: Use a proxy to download packages to speed up the build process. The build will use Alibaba Cloud's image source.</li>\n<li><code class=\"notranslate\">--help</code>: Display help information.</li>\n</ul>\n<p dir=\"auto\">Here is an example usage:</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"./build_docker.sh -p linux/amd64 -t private_registry/pika:latest\"><pre class=\"notranslate\">./build_docker.sh -p linux/amd64 -t private_registry/pika:latest</pre></div>\n</li>\n<li>\n<h4 dir=\"auto\">3.3 Running with  docker-compose</h4>\n</li>\n</ul>\n<p dir=\"auto\">docker-compose.yaml</p>\n<div class=\"highlight highlight-source-yaml notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"  pikadb:\n    image: pikadb/pika:lastest\n    container_name: pikadb\n    ports:\n      - &quot;6379:9221&quot;\n    volumes:\n      - ./data/pika:/pika/log\n      # Specify the configuration file path. If you need to specify a configuration file, specify it here.\n      # Note: pika.conf should be in the ./deploy/pika directory\n      #- ./deploy/pika:/pika/conf\n      - ./data/pika/db:/pika/db\n      - ./data/pika/dump:/pika/dump\n      - ./data/pika/dbsync:/pika/dbsync\n    privileged: true\n    restart: always\"><pre class=\"notranslate\">  <span class=\"pl-ent\">pikadb</span>:\n    <span class=\"pl-ent\">image</span>: <span class=\"pl-s\">pikadb/pika:lastest</span>\n    <span class=\"pl-ent\">container_name</span>: <span class=\"pl-s\">pikadb</span>\n    <span class=\"pl-ent\">ports</span>:\n      - <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>6379:9221<span class=\"pl-pds\">\"</span></span>\n    <span class=\"pl-ent\">volumes</span>:\n      - <span class=\"pl-s\">./data/pika:/pika/log</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Specify the configuration file path. If you need to specify a configuration file, specify it here.</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span> Note: pika.conf should be in the ./deploy/pika directory</span>\n      <span class=\"pl-c\"><span class=\"pl-c\">#</span>- ./deploy/pika:/pika/conf</span>\n      - <span class=\"pl-s\">./data/pika/db:/pika/db</span>\n      - <span class=\"pl-s\">./data/pika/dump:/pika/dump</span>\n      - <span class=\"pl-s\">./data/pika/dbsync:/pika/dbsync</span>\n    <span class=\"pl-ent\">privileged</span>: <span class=\"pl-c1\">true</span>\n    <span class=\"pl-ent\">restart</span>: <span class=\"pl-s\">always</span></pre></div>\n<h2 dir=\"auto\">Performance test</h2>\n<ul dir=\"auto\">\n<li>Thanks <a href=\"https://github.com/deep011\">deep011</a> for providing performance test results.</li>\n</ul>\n<blockquote>\n<p dir=\"auto\">Note: The test results were obtained under specific conditions and scenarios, and may not represent the performance in all environments and scenarios. They are for reference only.</p>\n</blockquote>\n<p dir=\"auto\"><strong>We recommend that you conduct detailed testing of PikiwiDB in your own environment based on the usage scenario to assess whether PikiwiDB meets your requirements.</strong></p>\n<h3 dir=\"auto\">1. Test environment</h3>\n<ul dir=\"auto\">\n<li>CPU Model: Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz</li>\n<li>CPU Threads: 56</li>\n<li>Memory: 256GB</li>\n<li>Disk: 3TB Flash</li>\n<li>Network: 10GBase-T/Full * 2</li>\n<li>Operating System: CentOS 6.6</li>\n<li>PikiwiDB Version: 2.2.4</li>\n</ul>\n<h3 dir=\"auto\">2. Benchmarking Tool</h3>\n<p dir=\"auto\"><a href=\"https://deep011.github.io/vire-benchmark\" rel=\"nofollow\">vire-benchmark</a></p>\n<h3 dir=\"auto\">3. Test Cases</h3>\n<h4 dir=\"auto\">3.1 Case 1</h4>\n<ul dir=\"auto\">\n<li>\n<h5 dir=\"auto\">Test Objective</h5>\n</li>\n</ul>\n<p dir=\"auto\">Evaluate the upper limit of QPS for PikiwiDB under different worker thread counts.</p>\n<ul dir=\"auto\">\n<li>\n<h5 dir=\"auto\">Test Conditions</h5>\n<ul dir=\"auto\">\n<li>PikiwiDB Data Size: 800GB</li>\n<li>Value: 128 bytes</li>\n<li>CPU not bound</li>\n</ul>\n</li>\n<li>\n<h5 dir=\"auto\">Test Results</h5>\n<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/eebf28506c49e0419318e558f7bebc15948320fb13bc5ef9e6f06f6660a6695e/68747470733a2f2f646565703031312e6769746875622e696f2f7075626c69632f696d616765732f70696b615f62656e63686d61726b2f70696b615f746872656164735f746573742e706e67\"><img src=\"https://camo.githubusercontent.com/eebf28506c49e0419318e558f7bebc15948320fb13bc5ef9e6f06f6660a6695e/68747470733a2f2f646565703031312e6769746875622e696f2f7075626c69632f696d616765732f70696b615f62656e63686d61726b2f70696b615f746872656164735f746573742e706e67\" height=\"60%\" width=\"60%\" alt=\"1\" data-canonical-src=\"https://deep011.github.io/public/images/pika_benchmark/pika_threads_test.png\" style=\"max-width: 100%;\"></a>\n<blockquote>\n<p dir=\"auto\">Note：<br>\nThe x-axis represents PikiwiDB thread count, and the y-axis represents QPS with a value size of 128 bytes.<br>\n\"set3/get7\" indicates 30% set and 70% get operations.</p>\n</blockquote>\n</li>\n<li>\n<h5 dir=\"auto\">Case One Conclusion</h5>\n<p dir=\"auto\">From the above graph, it can be observed that setting PikiwiDB's worker thread count to 20-24 is more cost-effective.</p>\n</li>\n</ul>\n<h4 dir=\"auto\">3.2 Case 2</h4>\n<ul dir=\"auto\">\n<li>\n<h5 dir=\"auto\">Test Objective</h5>\n<p dir=\"auto\">Evaluate the RTT performance of PikiwiDB with the optimal worker thread count (20 threads).</p>\n</li>\n<li>\n<h5 dir=\"auto\">Test Conditions</h5>\n<ul dir=\"auto\">\n<li>PikiwiDB Data Size: 800GB</li>\n<li>Value: 128 bytes</li>\n</ul>\n</li>\n<li>\n<h5 dir=\"auto\">Test Results</h5>\n<div class=\"highlight highlight-source-c notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"====== GET ======\n  10000000 requests completed in 23.10 seconds\n  200 parallel clients\n  3 bytes payload\n  keep alive: 1\n99.89% &lt;= 1 milliseconds\n100.00% &lt;= 2 milliseconds\n100.00% &lt;= 3 milliseconds\n100.00% &lt;= 5 milliseconds\n100.00% &lt;= 6 milliseconds\n100.00% &lt;= 7 milliseconds\n100.00% &lt;= 7 milliseconds\n432862.97 requests per second\"><pre class=\"notranslate\"><span class=\"pl-c1\">=</span><span class=\"pl-c1\">==</span><span class=\"pl-c1\">==</span><span class=\"pl-c1\">=</span> <span class=\"pl-c1\">GET</span> <span class=\"pl-c1\">==</span><span class=\"pl-c1\">=</span><span class=\"pl-c1\">==</span><span class=\"pl-c1\">=</span>\n  <span class=\"pl-c1\">10000000</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-s1\">completed</span> <span class=\"pl-s1\">in</span> <span class=\"pl-c1\">23.10</span> <span class=\"pl-s1\">seconds</span>\n  <span class=\"pl-c1\">200</span> <span class=\"pl-s1\">parallel</span> <span class=\"pl-s1\">clients</span>\n  <span class=\"pl-c1\">3</span> <span class=\"pl-s1\">bytes</span> <span class=\"pl-s1\">payload</span>\n  <span class=\"pl-s1\">keep</span> <span class=\"pl-s1\">alive</span>: <span class=\"pl-c1\">1</span>\n<span class=\"pl-c1\">99.89</span>% &lt;= <span class=\"pl-c1\">1</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">2</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">3</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">5</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">6</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">7</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">7</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">432862.97</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-s1\">per</span> <span class=\"pl-s1\">second</span></pre></div>\n<div class=\"highlight highlight-source-c notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"====== SET ======\n  10000000 requests completed in 36.15 seconds\n  200 parallel clients\n  3 bytes payload\n  keep alive: 1\n91.97% &lt;= 1 milliseconds\n99.98% &lt;= 2 milliseconds\n99.98% &lt;= 3 milliseconds\n99.98% &lt;= 4 milliseconds\n99.98% &lt;= 5 milliseconds\n99.98% &lt;= 6 milliseconds\n99.98% &lt;= 7 milliseconds\n99.98% &lt;= 9 milliseconds\n99.98% &lt;= 10 milliseconds\n99.98% &lt;= 11 milliseconds\n99.98% &lt;= 12 milliseconds\n99.98% &lt;= 13 milliseconds\n99.98% &lt;= 16 milliseconds\n99.98% &lt;= 18 milliseconds\n99.99% &lt;= 19 milliseconds\n99.99% &lt;= 23 milliseconds\n99.99% &lt;= 24 milliseconds\n99.99% &lt;= 25 milliseconds\n99.99% &lt;= 27 milliseconds\n99.99% &lt;= 28 milliseconds\n99.99% &lt;= 34 milliseconds\n99.99% &lt;= 37 milliseconds\n99.99% &lt;= 39 milliseconds\n99.99% &lt;= 40 milliseconds\n99.99% &lt;= 46 milliseconds\n99.99% &lt;= 48 milliseconds\n99.99% &lt;= 49 milliseconds\n99.99% &lt;= 50 milliseconds\n99.99% &lt;= 51 milliseconds\n99.99% &lt;= 52 milliseconds\n99.99% &lt;= 61 milliseconds\n99.99% &lt;= 63 milliseconds\n99.99% &lt;= 72 milliseconds\n99.99% &lt;= 73 milliseconds\n99.99% &lt;= 74 milliseconds\n99.99% &lt;= 76 milliseconds\n99.99% &lt;= 83 milliseconds\n99.99% &lt;= 84 milliseconds\n99.99% &lt;= 88 milliseconds\n99.99% &lt;= 89 milliseconds\n99.99% &lt;= 133 milliseconds\n99.99% &lt;= 134 milliseconds\n99.99% &lt;= 146 milliseconds\n99.99% &lt;= 147 milliseconds\n100.00% &lt;= 203 milliseconds\n100.00% &lt;= 204 milliseconds\n100.00% &lt;= 208 milliseconds\n100.00% &lt;= 217 milliseconds\n100.00% &lt;= 218 milliseconds\n100.00% &lt;= 219 milliseconds\n100.00% &lt;= 220 milliseconds\n100.00% &lt;= 229 milliseconds\n100.00% &lt;= 229 milliseconds\n276617.50 requests per second\"><pre class=\"notranslate\"><span class=\"pl-c1\">=</span><span class=\"pl-c1\">==</span><span class=\"pl-c1\">==</span><span class=\"pl-c1\">=</span> <span class=\"pl-c1\">SET</span> <span class=\"pl-c1\">==</span><span class=\"pl-c1\">=</span><span class=\"pl-c1\">==</span><span class=\"pl-c1\">=</span>\n  <span class=\"pl-c1\">10000000</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-s1\">completed</span> <span class=\"pl-s1\">in</span> <span class=\"pl-c1\">36.15</span> <span class=\"pl-s1\">seconds</span>\n  <span class=\"pl-c1\">200</span> <span class=\"pl-s1\">parallel</span> <span class=\"pl-s1\">clients</span>\n  <span class=\"pl-c1\">3</span> <span class=\"pl-s1\">bytes</span> <span class=\"pl-s1\">payload</span>\n  <span class=\"pl-s1\">keep</span> <span class=\"pl-s1\">alive</span>: <span class=\"pl-c1\">1</span>\n<span class=\"pl-c1\">91.97</span>% &lt;= <span class=\"pl-c1\">1</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">2</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">3</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">4</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">5</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">6</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">7</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">9</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">10</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">11</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">12</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">13</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">16</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.98</span>% &lt;= <span class=\"pl-c1\">18</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">19</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">23</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">24</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">25</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">27</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">28</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">34</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">37</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">39</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">40</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">46</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">48</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">49</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">50</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">51</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">52</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">61</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">63</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">72</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">73</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">74</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">76</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">83</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">84</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">88</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">89</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">133</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">134</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">146</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">99.99</span>% &lt;= <span class=\"pl-c1\">147</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">203</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">204</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">208</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">217</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">218</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">219</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">220</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">229</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">100.00</span>% &lt;= <span class=\"pl-c1\">229</span> <span class=\"pl-s1\">milliseconds</span>\n<span class=\"pl-c1\">276617.50</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-s1\">per</span> <span class=\"pl-s1\">second</span></pre></div>\n</li>\n<li>\n<h5 dir=\"auto\">Case 2 Conclusion</h5>\n<p dir=\"auto\">The response time for 99.9% of get/set operations is within 2ms.</p>\n</li>\n</ul>\n<h4 dir=\"auto\">3.3 Case 3</h4>\n<ul dir=\"auto\">\n<li>\n<h5 dir=\"auto\">Test Objective</h5>\n<p dir=\"auto\">Evaluate the maximum QPS for each command in PikiwiDB with the optimal worker thread count.</p>\n</li>\n<li>\n<h5 dir=\"auto\">Test Conditions</h5>\n<ul dir=\"auto\">\n<li>PikiwiDB Worker Thread Count: 20</li>\n<li>Number of Keys: 10,000</li>\n<li>Number of Fields: 100 (excluding lists)</li>\n<li>Value: 128 bytes</li>\n<li>Number of Command Executions: 10 million (except for lrange)</li>\n</ul>\n</li>\n<li>\n<h5 dir=\"auto\">Test Results</h5>\n<div class=\"highlight highlight-source-c notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"PING_INLINE: 548606.50 requests per second\nPING_BULK: 544573.31 requests per second\nSET: 231830.31 requests per second\nGET: 512163.91 requests per second\nINCR: 230861.56 requests per second\nMSET (10 keys): 94991.12 requests per second\nLPUSH: 196093.81 requests per second\nRPUSH: 195186.69 requests per second\nLPOP: 131156.14 requests per second\nRPOP: 152292.77 requests per second\nLPUSH (needed to benchmark LRANGE): 196734.20 requests per second\nLRANGE_10 (first 10 elements): 334448.16 requests per second\nLRANGE_100 (first 100 elements): 50705.12 requests per second\nLRANGE_300 (first 300 elements): 16745.16 requests per second\nLRANGE_450 (first 450 elements): 6787.94 requests per second\nLRANGE_600 (first 600 elements): 3170.38 requests per second\nSADD: 160885.52 requests per second\nSPOP: 128920.80 requests per second\nHSET: 180209.41 requests per second\nHINCRBY: 153364.81 requests per second\nHINCRBYFLOAT: 141095.47 requests per second\nHGET: 506791.00 requests per second\nHMSET (10 fields): 27777.31 requests per second\nHMGET (10 fields): 38998.52 requests per second\nHGETALL: 109059.58 requests per second\nZADD: 120583.62 requests per second\nZREM: 161689.33 requests per second\nPFADD: 6153.47 requests per second\nPFCOUNT: 28312.57 requests per second\nPFADD (needed to benchmark PFMERGE): 6166.37 requests per second\nPFMERGE: 6007.09 requests per second\"><pre class=\"notranslate\"><span class=\"pl-ent\">PING_INLINE</span>: <span class=\"pl-c1\">548606.50</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">PING_BULK</span>: <span class=\"pl-c1\">544573.31</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">SET</span>: <span class=\"pl-c1\">231830.31</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">GET</span>: <span class=\"pl-c1\">512163.91</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">INCR</span>: <span class=\"pl-c1\">230861.56</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-en\">MSET</span> (<span class=\"pl-c1\">10</span> <span class=\"pl-s1\">keys</span>): <span class=\"pl-c1\">94991.12</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">LPUSH</span>: <span class=\"pl-c1\">196093.81</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">RPUSH</span>: <span class=\"pl-c1\">195186.69</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">LPOP</span>: <span class=\"pl-c1\">131156.14</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">RPOP</span>: <span class=\"pl-c1\">152292.77</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-en\">second</span>\n<span class=\"pl-c1\">LPUSH</span> (<span class=\"pl-smi\">needed</span> <span class=\"pl-s1\">to</span> <span class=\"pl-s1\">benchmark</span> <span class=\"pl-c1\">LRANGE</span>): <span class=\"pl-c1\">196734.20</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-en\">LRANGE_10</span> (<span class=\"pl-smi\">first</span> <span class=\"pl-c1\">10</span> <span class=\"pl-s1\">elements</span>): <span class=\"pl-c1\">334448.16</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-en\">LRANGE_100</span> (<span class=\"pl-smi\">first</span> <span class=\"pl-c1\">100</span> <span class=\"pl-s1\">elements</span>): <span class=\"pl-c1\">50705.12</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-en\">LRANGE_300</span> (<span class=\"pl-smi\">first</span> <span class=\"pl-c1\">300</span> <span class=\"pl-s1\">elements</span>): <span class=\"pl-c1\">16745.16</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-en\">LRANGE_450</span> (<span class=\"pl-smi\">first</span> <span class=\"pl-c1\">450</span> <span class=\"pl-s1\">elements</span>): <span class=\"pl-c1\">6787.94</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-en\">LRANGE_600</span> (<span class=\"pl-smi\">first</span> <span class=\"pl-c1\">600</span> <span class=\"pl-s1\">elements</span>): <span class=\"pl-c1\">3170.38</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">SADD</span>: <span class=\"pl-c1\">160885.52</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">SPOP</span>: <span class=\"pl-c1\">128920.80</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">HSET</span>: <span class=\"pl-c1\">180209.41</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">HINCRBY</span>: <span class=\"pl-c1\">153364.81</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">HINCRBYFLOAT</span>: <span class=\"pl-c1\">141095.47</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">HGET</span>: <span class=\"pl-c1\">506791.00</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-en\">HMSET</span> (<span class=\"pl-c1\">10</span> <span class=\"pl-s1\">fields</span>): <span class=\"pl-c1\">27777.31</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-en\">HMGET</span> (<span class=\"pl-c1\">10</span> <span class=\"pl-s1\">fields</span>): <span class=\"pl-c1\">38998.52</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">HGETALL</span>: <span class=\"pl-c1\">109059.58</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">ZADD</span>: <span class=\"pl-c1\">120583.62</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">ZREM</span>: <span class=\"pl-c1\">161689.33</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">PFADD</span>: <span class=\"pl-c1\">6153.47</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">PFCOUNT</span>: <span class=\"pl-c1\">28312.57</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-en\">second</span>\n<span class=\"pl-c1\">PFADD</span> (<span class=\"pl-smi\">needed</span> <span class=\"pl-s1\">to</span> <span class=\"pl-s1\">benchmark</span> <span class=\"pl-c1\">PFMERGE</span>): <span class=\"pl-c1\">6166.37</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span>\n<span class=\"pl-ent\">PFMERGE</span>: <span class=\"pl-c1\">6007.09</span> <span class=\"pl-s1\">requests</span> <span class=\"pl-smi\">per</span> <span class=\"pl-s1\">second</span></pre></div>\n</li>\n<li>\n<h5 dir=\"auto\">Conclusion</h5>\n<p dir=\"auto\">Overall performance is excellent, but some commands exhibit weaker performance (LRANGE, PFADD, PFMERGE).</p>\n</li>\n</ul>\n<h4 dir=\"auto\">3.4 Case 4</h4>\n<ul dir=\"auto\">\n<li>\n<h5 dir=\"auto\">Test Objective</h5>\n<p dir=\"auto\">Compare the maximum QPS between PikiwiDB and Redis.</p>\n</li>\n<li>\n<h5 dir=\"auto\">Test Conditions</h5>\n<ul dir=\"auto\">\n<li>PikiwiDB Worker Thread Count: 20</li>\n<li>Number of Keys: 10,000</li>\n<li>Number of Fields: 100 (excluding lists)</li>\n<li>Value: 128 bytes</li>\n<li>Number of Command Executions: 10 million (except for LRANGE)</li>\n<li>Redis Version: 3.2.0</li>\n</ul>\n</li>\n<li>\n<h5 dir=\"auto\">Test Result</h5>\n</li>\n</ul>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/11a2255a137b88620ef39643e5512b71d75dbd3fe71496c102866da78642046e/68747470733a2f2f646565703031312e6769746875622e696f2f7075626c69632f696d616765732f70696b615f62656e63686d61726b2f70696b615f76735f72656469735f7170732e706e67\"><img src=\"https://camo.githubusercontent.com/11a2255a137b88620ef39643e5512b71d75dbd3fe71496c102866da78642046e/68747470733a2f2f646565703031312e6769746875622e696f2f7075626c69632f696d616765732f70696b615f62656e63686d61726b2f70696b615f76735f72656469735f7170732e706e67\" height=\"60%\" width=\"60%\" alt=\"1\" data-canonical-src=\"https://deep011.github.io/public/images/pika_benchmark/pika_vs_redis_qps.png\" style=\"max-width: 100%;\"></a></p>\n<h2 dir=\"auto\">Observability</h2>\n<h3 dir=\"auto\">Metrics</h3>\n<ol dir=\"auto\">\n<li>PikiwiDB Server Info: system, ip, port, run_id, config file etc.</li>\n<li>PikiwiDB Data Info: db size, log size, memory usage etc.</li>\n<li>PikiwiDB Client Info: The number of connected clients.</li>\n<li>PikiwiDB Stats Info: status information of compact, slot, etc.</li>\n<li>PikiwiDB Network Info: Incoming and outgoing traffic and rate of client and master-slave replication.</li>\n<li>PikiwiDB CPU Info: cpu usage.</li>\n<li>PikiwiDB Replication Info: Status information of master-slave replication, binlog information.</li>\n<li>PikiwiDB Keyspace Info: key information of five data types.</li>\n<li>PikiwiDB Command Exec Count Info: command execution count.</li>\n<li>PikiwiDB Command Execution Time: Time-consuming command execution.</li>\n<li>RocksDB Metrics: RocksDB information of five data types, includes Memtable, Block Cache, Compaction, SST File, Blob File etc.</li>\n</ol>\n<p dir=\"auto\">More details on <a href=\"tools/pika_exporter/README.md\">Metrics</a>.</p>\n<h2 dir=\"auto\">Documents</h2>\n<ul dir=\"auto\">\n<li>\n<p dir=\"auto\"><a href=\"https://github.com/OpenAtomFoundation/pika/wiki\">wiki</a></p>\n</li>\n<li>\n<p dir=\"auto\">release notes</p>\n<ul dir=\"auto\">\n<li><a href=\"https://my.oschina.net/dubbogo/blog/10315913\" rel=\"nofollow\">What's new in PikiwiDB v3.5.2</a></li>\n<li><a href=\"https://my.oschina.net/dubbogo/blog/10114890\" rel=\"nofollow\">What's new in PikiwiDB v3.5.1</a></li>\n<li><a href=\"https://mp.weixin.qq.com/s/NNnmd0RtQ-vx9arW9YBcBA\" rel=\"nofollow\">What's new in PikiwiDB v3.5.0</a></li>\n</ul>\n</li>\n</ul>\n<h2 dir=\"auto\">Contact Us</h2>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"docs/images/pika-wechat.png\"><img src=\"docs/images/pika-wechat.png\" alt=\"\" style=\"max-width: 100%;\"></a></p>\n<ul dir=\"auto\">\n<li><a href=\"https://join.slack.com/t/w1687838400-twm937235/shared_invite/zt-1y72dch5d-~9CuERHYUSmfeJZh32Z~qQ\" rel=\"nofollow\">Slack Channel</a></li>\n</ul>","updatedAt":"2025-05-21T16:15:53Z","upvoteCount":null,"author":{"login":"eryajf","avatarUrl":"https://avatars.githubusercontent.com/u/33259379?u=e4a4090a38ac2473aaed4ef9945233636776c6c3&v=4","url":"https://github.com/eryajf"},"category":null,"labels":{"edges":[{"node":{"name":"更多","color":"25B472"}},{"node":{"name":"Database","color":"3fbc9d"}},{"node":{"name":"OpenAtomFoundation","color":"75f715"}}]},"comments":{"edges":[]}}},"pageContext":{"number":437,"previous":{"title":"mtlynch/picoshare: 可建立文件共享服务，支持多种类型，部署简单，易于使用","number":436},"next":{"title":"czerwonk/ping_exporter: Ping 指标的 Prometheus Exporter","number":438}}},
    "staticQueryHashes": ["151096407","2861350382"]}