Skip to content

Commit 37a81ee

Browse files
committedApr 30, 2020
fix
1 parent 6cae893 commit 37a81ee

File tree

4 files changed

+165
-138
lines changed

4 files changed

+165
-138
lines changed
 

‎include/cppredis/client.hpp

+32-14
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,29 @@ namespace cpp_redis {
361361
return client_->psetex(std::move(keys_[0]), std::move(keys_[1]),unit::int_to_string(milliseconds));
362362
}
363363

364-
//提高这以下四个接口,主要防止,有些版本不支持setex的接口
364+
//此接口相当于setnx 加上秒,is_exist:true(NX) false(XX)
365+
template<typename T1,typename T2>
366+
bool setnx(T1&& key,T2&& value)
367+
{
368+
static_assert(is_sting_, "This API Support String Request");
369+
370+
if (client_ == nullptr) {
371+
return false;
372+
}
373+
374+
reset();
375+
any_type_to_string(key);
376+
any_type_to_string(value);
377+
378+
if (keys_.size() != 2) {
379+
return false;
380+
}
381+
382+
return client_->setnx(std::move(keys_[0]), std::move(keys_[1]));
383+
}
384+
365385
template<typename T1, typename T2>
366-
bool set_has_seconds(T1&& key, T2&& value,std::size_t seconds)
386+
bool setnx(T1&& key, T2&& value,std::size_t seconds)
367387
{
368388
static_assert(is_sting_, "This API Support String Request");
369389

@@ -379,12 +399,11 @@ namespace cpp_redis {
379399
return false;
380400
}
381401

382-
return client_->set_has_seconds(std::move(keys_[0]), std::move(keys_[1]), unit::int_to_string(seconds));
402+
return client_->setnx_has_seconds(std::move(keys_[0]), std::move(keys_[1]), unit::int_to_string(seconds));
383403
}
384404

385-
//此接口相当于setnx 加上秒,is_exist:true(NX) false(XX)
386-
template<typename T1,typename T2>
387-
bool set_has_seconds_if(T1&& key,T2&& value, std::size_t seconds,bool is_exist)
405+
template<typename T1, typename T2>
406+
bool setxx(T1&& key, T2&& value, std::size_t seconds)
388407
{
389408
static_assert(is_sting_, "This API Support String Request");
390409

@@ -400,11 +419,11 @@ namespace cpp_redis {
400419
return false;
401420
}
402421

403-
return client_->set_has_seconds_if(std::move(keys_[0]), std::move(keys_[1]),unit::int_to_string(seconds),is_exist);
422+
return client_->setxx(std::move(keys_[0]), std::move(keys_[1]), unit::int_to_string(seconds));
404423
}
405-
406-
template<typename T1,typename T2>
407-
bool set_has_milliseconds(T1&& key,T2&& value, std::size_t milliseconds)
424+
425+
template<typename T1, typename T2>
426+
bool setnx_has_milliseconds(T1&& key, T2&& value,std::size_t milliseconds)
408427
{
409428
static_assert(is_sting_, "This API Support String Request");
410429

@@ -420,12 +439,11 @@ namespace cpp_redis {
420439
return false;
421440
}
422441

423-
return client_->set_has_milliseconds(std::move(keys_[0]), std::move(keys_[1]),unit::int_to_string(milliseconds));
442+
return client_->setnx_has_milliseconds(std::move(keys_[0]), std::move(keys_[1]), unit::int_to_string(milliseconds));
424443
}
425444

426-
//is_exist:true(NX)false(XX)
427445
template<typename T1, typename T2>
428-
bool set_has_milliseconds_if(T1&& key, T2&& value,std::size_t milliseconds,bool is_exist)
446+
bool setxx_has_milliseconds(T1&& key, T2&& value, std::size_t milliseconds)
429447
{
430448
static_assert(is_sting_, "This API Support String Request");
431449

@@ -441,7 +459,7 @@ namespace cpp_redis {
441459
return false;
442460
}
443461

444-
return client_->set_has_milliseconds_if(std::move(keys_[0]), std::move(keys_[1]), unit::int_to_string(milliseconds), is_exist);
462+
return client_->setxx_has_milliseconds(std::move(keys_[0]), std::move(keys_[1]), unit::int_to_string(milliseconds));
445463
}
446464

447465
template<typename T1,typename T2>

‎include/cppredis/client_interface.hpp

+9-6
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ namespace cpp_redis {
395395
return false;
396396
}
397397

398-
virtual bool set_has_seconds(std::string&& key, std::string&& value,std::string&&seconds)
398+
virtual bool setnx(std::string&& key, std::string&& value)
399399
{
400400
return false;
401401
}
@@ -415,19 +415,22 @@ namespace cpp_redis {
415415
return false;
416416
}
417417

418-
virtual bool set_has_seconds_if(std::string&& key, std::string&& value,
419-
std::string&& seconds,bool is_exist)
418+
virtual bool setnx_has_seconds(std::string&& key, std::string&& value,std::string&& seconds)
420419
{
421420
return false;
422421
}
423422

424-
virtual bool set_has_milliseconds(std::string&& key, std::string&& value,std::string&&milliseconds)
423+
virtual bool setxx(std::string&& key, std::string&& value, std::string&& seconds)
425424
{
426425
return false;
427426
}
428427

429-
virtual bool set_has_milliseconds_if(std::string&& key, std::string&& value,
430-
std::string&& milliseconds,bool is_exist)
428+
virtual bool setnx_has_milliseconds(std::string&& key, std::string&& value,std::string&& milliseconds)
429+
{
430+
return false;
431+
}
432+
433+
virtual bool setxx_has_milliseconds(std::string&& key, std::string&& value, std::string&& milliseconds)
431434
{
432435
return false;
433436
}

‎include/cppredis/cpp_define.h

+94-92
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ namespace cpp_redis {
2828
/****************×Ö·û´®²Ù×÷***********************************/
2929
const std::string g_setx_cmd = "SETEX";
3030
const std::string g_psetx_cmd = "PSETEX";
31+
const std::string g_setnx_cmd = "SETNX";
3132
const std::string g_set_cmd = "SET";
3233
const std::string g_strsub_cmd = "GETRANGE";//2.0֮ǰ½Ðsubstr
3334
const std::string g_incrby_cmd = "INCRBY";
@@ -129,98 +130,99 @@ namespace cpp_redis {
129130
select = 1,
130131
set = 2,
131132
setex = 3,
132-
psetex = 4,
133-
strsub = 5,
134-
incr = 6,
135-
incrby = 7,
136-
incr_by_float = 8,
137-
decr = 9,
138-
decyby = 10,
139-
del = 11,
140-
exists = 12,
141-
get = 13,
142-
expire = 14,
143-
pexpire = 15,
144-
expire_at = 16,
145-
pexpire_at = 17,
146-
remove_expire = 18,
147-
ttl = 19,
148-
pttl = 20,
149-
multi = 21,
150-
exec = 22,
151-
discard = 23,
152-
rename = 24,
153-
renamenx = 25,
154-
get_set = 26,
155-
substr = 27,
156-
mget = 28,
157-
mset = 29,
158-
msetnx = 30,
159-
append = 31,
160-
rpush = 32,
161-
lpush = 33,
162-
llen = 34,
163-
lrange = 35,
164-
rpop = 36,
165-
lpop = 37,
166-
brpop = 38,
167-
blpop = 39,
168-
ltrim = 40,
169-
lindex = 41,
170-
lset = 42,
171-
lrem = 43,
172-
rpoplpush = 44,
173-
lpushx = 45,
174-
rpushx = 46,
175-
list_insert = 47,
176-
brpoplpush = 48,
177-
sadd = 49,
178-
srem = 50,
179-
sismember = 51,
180-
spop_elem = 52,
181-
srandmember = 53,
182-
smove = 54,
183-
ssize = 55,
184-
smembers = 56,
185-
sinter = 57,
186-
ssinter_store = 58,
187-
sunion = 59,
188-
ssunion_store = 60,
189-
sdiff = 61,
190-
sdiff_store = 62,
191-
zset_add = 63,
192-
zset_score = 64,
193-
zset_incrby = 65,
194-
zset_card = 66,
195-
zset_count = 67,
196-
zset_range = 68,
197-
zset_rank = 69,
198-
zset_rem = 70,
199-
zset_revrank = 71,
200-
zset_revrange = 72,
201-
zset_lexcount = 73,
202-
zset_rangebylex = 74,
203-
zset_union_store = 75,
204-
zset_inter_store = 76,
205-
zset_range_score = 77,
206-
zset_remrangebylex = 78,
207-
zset_rerange_score = 79,
208-
zset_remrangebyscore = 80,
209-
zset_remrangeby_rank = 81,
210-
hash_set = 82,
211-
hash_setx = 83,
212-
hash_exists = 84,
213-
hash_get = 85,
214-
hash_del = 86,
215-
hash_len = 87,
216-
hash_mset = 88,
217-
hash_mget = 89,
218-
hash_vals = 90,
219-
hash_keys = 91,
220-
hash_strlen = 92,
221-
hash_incrby = 93,
222-
hash_get_all = 94,
223-
hash_incrby_float = 95,
133+
setnx = 4,
134+
psetex = 5,
135+
strsub = 6,
136+
incr = 7,
137+
incrby = 8,
138+
incr_by_float = 9,
139+
decr = 10,
140+
decyby = 11,
141+
del = 12,
142+
exists = 13,
143+
get = 14,
144+
expire = 15,
145+
pexpire = 16,
146+
expire_at = 17,
147+
pexpire_at = 18,
148+
remove_expire = 19,
149+
ttl = 20,
150+
pttl = 21,
151+
multi = 22,
152+
exec = 23,
153+
discard = 24,
154+
rename = 25,
155+
renamenx = 26,
156+
get_set = 27,
157+
substr = 28,
158+
mget = 29,
159+
mset = 30,
160+
msetnx = 31,
161+
append = 32,
162+
rpush = 33,
163+
lpush = 34,
164+
llen = 35,
165+
lrange = 36,
166+
rpop = 37,
167+
lpop = 38,
168+
brpop = 39,
169+
blpop = 40,
170+
ltrim = 41,
171+
lindex = 42,
172+
lset = 43,
173+
lrem = 44,
174+
rpoplpush = 45,
175+
lpushx = 46,
176+
rpushx = 47,
177+
list_insert = 48,
178+
brpoplpush = 49,
179+
sadd = 50,
180+
srem = 51,
181+
sismember = 52,
182+
spop_elem = 53,
183+
srandmember = 54,
184+
smove = 55,
185+
ssize = 56,
186+
smembers = 57,
187+
sinter = 58,
188+
ssinter_store = 59,
189+
sunion = 60,
190+
ssunion_store = 61,
191+
sdiff = 62,
192+
sdiff_store = 63,
193+
zset_add = 64,
194+
zset_score = 65,
195+
zset_incrby = 66,
196+
zset_card = 67,
197+
zset_count = 68,
198+
zset_range = 69,
199+
zset_rank = 70,
200+
zset_rem = 71,
201+
zset_revrank = 72,
202+
zset_revrange = 73,
203+
zset_lexcount = 74,
204+
zset_rangebylex = 75,
205+
zset_union_store = 76,
206+
zset_inter_store = 77,
207+
zset_range_score = 78,
208+
zset_remrangebylex = 79,
209+
zset_rerange_score = 80,
210+
zset_remrangebyscore = 81,
211+
zset_remrangeby_rank = 82,
212+
hash_set = 83,
213+
hash_setx = 84,
214+
hash_exists = 85,
215+
hash_get = 86,
216+
hash_del = 87,
217+
hash_len = 88,
218+
hash_mset = 89,
219+
hash_mget = 90,
220+
hash_vals = 91,
221+
hash_keys = 92,
222+
hash_strlen = 93,
223+
hash_incrby = 94,
224+
hash_get_all = 95,
225+
hash_incrby_float = 96,
224226
};
225227

226228
enum request_type

0 commit comments

Comments
 (0)
Failed to load comments.