Compare commits

...

10 Commits

Author SHA1 Message Date
fortrue
ca1630a6b4
Merge pull request #185 from joyieldInc/fix/issue124
avoid to use leader's connection for follow request
2024-01-31 11:40:02 +08:00
fortrue
9b85bd0e38 avoid to use leader's connection for follow request 2024-01-25 22:28:45 +08:00
fortrue
c15f54e274
Merge pull request #140 from shuaiming/patch-1
Update config_CN.md
2021-10-01 18:39:58 +08:00
shuaiming
fbb5a8acb3
Update config_CN.md
Fix typo
2021-09-17 18:14:11 +08:00
fortrue
393ff81e69
Merge pull request #101 from joyieldInc/FixPrivateConnLeak
fix private connection leak
2020-02-01 15:24:14 +08:00
fortrue
ace6ed2941 fix private connection leak 2019-06-15 09:03:54 +08:00
fortrue
dacf3fb30c
Merge pull request #73 from leenr/master
Add support for `zpopmax` and `zpopmin` redis commands (server 5.0.0+)
2019-02-09 08:45:57 +08:00
Vladimir Solomatin
ebf7bd2d82
Add support for zpopmax and zpopmin redis commands (server 5.0.0+) 2019-02-07 20:18:08 +03:00
fortrue
ca9cde0487
Merge pull request #71 from crierr/variadic-hset
Fix HSET to support multiple fields
2019-01-26 14:17:38 +08:00
SeungJin Oh
df3aa1aa92 Fix HSET to support multiple fields
- From Redis 4.0.0 HSET is recommended for multiple fields and HMSET is deprecated
2019-01-25 16:58:06 +09:00
7 changed files with 21 additions and 7 deletions

View File

@ -151,9 +151,9 @@ predixy扩展了redis中AUTH命令的功能支持定义多个认证密码
Authority {
Auth [password] {
Mode read|write|admin
[KeyPredix Predix...]
[ReadKeyPredix Predix...]
[WriteKeyPredix Predix...]
[KeyPrefix Prefix...]
[ReadKeyPrefix Prefix...]
[WriteKeyPrefix Prefix...]
}...
}

View File

@ -97,7 +97,7 @@ Command Command::CmdPool[AvailableCommands] = {
{Hmget, "hmget", 3, MaxArgs, Read},
{Hmset, "hmset", 4, MaxArgs, Write},
{Hscan, "hscan", 3, 7, Read},
{Hset, "hset", 4, 4, Write},
{Hset, "hset", 4, MaxArgs, Write},
{Hsetnx, "hsetnx", 4, 4, Write},
{Hstrlen, "hstrlen", 3, 3, Read},
{Hvals, "hvals", 2, 2, Read},
@ -139,6 +139,8 @@ Command Command::CmdPool[AvailableCommands] = {
{Zincrby, "zincrby", 4, 4, Write},
{Zinterstore, "zinterstore", 4, MaxArgs, Write},
{Zlexcount, "zlexcount", 4, 4, Read},
{Zpopmax, "zpopmax", 2, 3, Write},
{Zpopmin, "zpopmin", 2, 3, Write},
{Zrange, "zrange", 4, 5, Read},
{Zrangebylex, "zrangebylex", 4, 7, Read},
{Zrangebyscore, "zrangebyscore", 4, 8, Read},

View File

@ -156,6 +156,8 @@ public:
Zincrby,
Zinterstore,
Zlexcount,
Zpopmax,
Zpopmin,
Zrange,
Zrangebylex,
Zrangebyscore,

View File

@ -215,7 +215,6 @@ void Handler::postAcceptConnectionEvent()
auto cp = mConnPool[s->server()->id()];
s->setStatus(Connection::LogicError);
addPostEvent(s, Multiplexor::ErrorEvent);
cp->putPrivateConnection(s);
c->detachConnectConnection();
s->detachAcceptConnection();
}
@ -276,6 +275,9 @@ void Handler::postConnectConnectionEvent()
s->status(), s->statusStr());
mEventLoop->delSocket(s);
s->close(this);
if (!s->isShared()) {
mConnPool[s->server()->id()]->putPrivateConnection(s);
}
if (c) {
addPostEvent(c, Multiplexor::ErrorEvent);
s->detachAcceptConnection();

View File

@ -103,6 +103,7 @@ Request::~Request()
void Request::clear()
{
mConn = nullptr;
mRes = nullptr;
mHead.clear();
mReq.clear();
@ -293,6 +294,7 @@ void Request::follow(Request* leader)
if (leader == this) {
return;
}
mConn = leader->mConn;
mType = leader->mType;
mHead = leader->mHead;
mReq = leader->mReq;

View File

@ -71,7 +71,7 @@ public:
bool isDone() const;
AcceptConnection* connection() const
{
return mLeader ? mLeader->mConn : mConn;
return mConn;
}
void detach()
{

View File

@ -391,7 +391,7 @@ Cases = [
[('scard', '{k}2'), 3],
]),
('zset', [
[('del', 'k', '{k}2', '{k}3', '{k}4'), ],
[('del', 'k', '{k}2', '{k}3', '{k}4', '{k}5', '{k}6'), ],
[('zadd', 'k', 10, 'apple'), 1],
[('zcard', 'k'), 1],
[('zincrby', 'k', 2, 'apple'), '12'],
@ -438,6 +438,12 @@ Cases = [
[('zunionstore', '{k}3', 2, 'k', '{k}2'), 4],
[('zunionstore', '{k}3', 2, 'k', '{k}2', 'AGGREGATE', 'MAX'), 4],
[('zunionstore', '{k}3', 2, 'k', '{k}2', 'WEIGHTS', 0.5, 1.2, 'AGGREGATE', 'MAX'), 4],
[('zadd', '{k}5', 0, 'apple', 9, 'banana', 1, 'pear', 3, 'orange', 4, 'cat'), 5],
[('zpopmax', '{k}5'), ['banana', '9']],
[('zpopmax', '{k}5', 3), ['cat', '4', 'orange', '3', 'pear', '1']],
[('zadd', '{k}6', 0, 'apple', 9, 'banana', 1, 'pear', 3, 'orange', 4, 'cat'), 5],
[('zpopmin', '{k}6'), ['apple', '0']],
[('zpopmin', '{k}6', 3), ['pear', '1', 'orange', '3', 'cat', '4']],
]),
('hyperloglog', [
[('del', 'k', '{k}2', '{k}3'), ],