{"id":15108746,"url":"https://github.com/joyieldinc/predixy","last_synced_at":"2025-05-15T14:03:39.168Z","repository":{"id":37733263,"uuid":"98142115","full_name":"joyieldInc/predixy","owner":"joyieldInc","description":"A high performance and fully featured proxy for redis, support redis sentinel and redis cluster","archived":false,"fork":false,"pushed_at":"2024-07-19T02:32:39.000Z","size":1460,"stargazers_count":1509,"open_issues_count":110,"forks_count":356,"subscribers_count":75,"default_branch":"master","last_synced_at":"2025-04-03T22:06:18.920Z","etag":null,"topics":["codis","corvus","redis","redis-cluster","redis-sentinel","twemproxy"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joyieldInc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-24T02:41:01.000Z","updated_at":"2025-04-02T07:32:45.000Z","dependencies_parsed_at":"2022-08-03T06:00:20.739Z","dependency_job_id":"432a1ad0-cfd6-41e2-874a-caa4cbc87e7b","html_url":"https://github.com/joyieldInc/predixy","commit_stats":{"total_commits":59,"total_committers":10,"mean_commits":5.9,"dds":0.423728813559322,"last_synced_commit":"c15f54e274afc596b8e8cd7fecac70164c95b9ec"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joyieldInc%2Fpredixy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joyieldInc%2Fpredixy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joyieldInc%2Fpredixy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joyieldInc%2Fpredixy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joyieldInc","download_url":"https://codeload.github.com/joyieldInc/predixy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248477989,"owners_count":21110609,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codis","corvus","redis","redis-cluster","redis-sentinel","twemproxy"],"created_at":"2024-09-25T22:24:24.614Z","updated_at":"2025-04-11T20:37:46.877Z","avatar_url":"https://github.com/joyieldInc.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Predixy [中文版](https://github.com/joyieldInc/predixy/blob/master/README_CN.md)\n\n**Predixy** is a high performance and fully featured proxy for redis sentinel and redis cluster\n\n## Features\n\n+ High performance and lightweight.\n+ Multi-threads support.\n+ Works on Linux, OSX, BSD, Windows([Cygwin](http://www.cygwin.com/)).\n+ Supports Redis Sentinel, single/multi redis group[s].\n+ Supports Redis Cluster.\n+ Supports redis block command, eg:blpop, brpop, brpoplpush.\n+ Supports scan command, even multi redis instances.\n+ Multi-keys command support: mset/msetnx/mget/del/unlink/touch/exists.\n+ Multi-databases support, means redis command select is avaliable.\n+ Supports redis transaction, limit in Redis Sentinel single redis group.\n+ Supports redis Scripts, script load, eval, evalsha.\n+ Supports redis Pub/Sub.\n+ Multi-DataCenters support, read from slaves.\n+ Extend AUTH, readonly/readwrite/admin permission, keyspace limit.\n+ Log level sample, async log record.\n+ Log file auto rotate by time and/or file size.\n+ Stats info, CPU/Memory/Requests/Responses and so on.\n+ Latency monitor.\n\n## Build\n\nPredixy can be compiled and used on Linux, OSX, BSD, Windows([Cygwin](http://www.cygwin.com/)). Requires C++11 compiler.\n\nIt is as simple as:\n\n    $ make\n\nTo build in debug mode:\n\n    $ make debug\n\nSome other build options:\n+ CXX=c++compiler, default is g++, you can specify other, eg:CXX=clang++\n+ EV=epoll|poll|kqueue, default it is auto detect according by platform.\n+ MT=false, disable multi-threads support.\n+ TS=true, enable predixy function call time stats, debug only for developer.\n\nFor examples:\n\n    $ make CXX=clang++\n    $ make EV=poll\n    $ make MT=false\n    $ make debug MT=false TS=true\n\n## Install\n\nJust copy src/predixy to the install path\n\n    $ cp src/predixy /path/to/bin\n\n## Configuration\n\nSee below files:\n+ predixy.conf, basic config, will refrence below config files.\n+ cluster.conf, Redis Cluster backend config.\n+ sentinel.conf, Redis Sentinel backend config.\n+ auth.conf, authority control config.\n+ dc.conf, multi-datacenters config.\n+ latency.conf, latency monitor config.\n\n## Running\n\n    $ src/predixy conf/predixy.conf\n\nWith default predixy.conf, Predixy will listen at 0.0.0.0:7617 and\nproxy to Redis Cluster 127.0.0.1:6379.\nIn general, 127.0.0.1:6379 is not running in Redis Cluster mode.\nSo you will look mass log output, but you can still test it with redis-cli.\n\n    $ redis-cli -p 7617 info\n\nMore command line arguments:\n\n    $ src/predixy -h\n\n## Stats\n\nLike redis, predixy use INFO command to give stats.\n\nShow predixy running info and latency monitors\n\n    redis\u003e INFO\n\nShow latency monitors by latency name\n\n    redis\u003e INFO Latency \u003clatency-name\u003e\n\nA latency monitor example:\n\n    LatencyMonitorName:all\n                latency(us)   sum(us)           counts\n    \u003c=          100              3769836            91339 91.34%\n    \u003c=          200               777185             5900 97.24%\n    \u003c=          300               287565             1181 98.42%\n    \u003c=          400               185891              537 98.96%\n    \u003c=          500               132773              299 99.26%\n    \u003c=          600                85050              156 99.41%\n    \u003c=          700                85455              133 99.54%\n    \u003c=          800                40088               54 99.60%\n    \u003c=         1000                67788               77 99.68%\n    \u003e          1000               601012              325 100.00%\n    T            60              6032643           100001\n    The last line is total summary, 60 is average latency(us)\n\n\nShow latency monitors by server address and latency name\n\n    redis\u003e INFO ServerLatency \u003cserver-address\u003e [latency-name]\n\nReset all stats and latency monitors, require admin permission.\n\n    redis\u003e CONFIG ResetStat\n\n## Benchmark\n\npredixy is fast, how fast? more than twemproxy, codis, redis-cerberus\n\nSee wiki\n[benchmark](https://github.com/joyieldInc/predixy/wiki/Benchmark)\n\n## License\n\nCopyright (C) 2017 Joyield, Inc. \u003cjoyield.com#gmail.com\u003e\n\nAll rights reserved.\n\nLicense under BSD 3-clause \"New\" or \"Revised\" License\n\nWeChat:cppfan ![wechat](https://github.com/joyieldInc/predixy/blob/master/doc/wechat-cppfan.jpeg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoyieldinc%2Fpredixy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoyieldinc%2Fpredixy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoyieldinc%2Fpredixy/lists"}