@@ -173,7 +173,10 @@ func (rc *RedisClient) SetNX(key, value string) (interface{}, error){
173
173
}
174
174
175
175
176
- // HGet 获取指定hashset的内容
176
+
177
+ //****************** hash 集合 ***********************
178
+
179
+ // HGet 获取指定hash的内容
177
180
func (rc * RedisClient ) HGet (hashID string , field string ) (string , error ) {
178
181
conn := rc .pool .Get ()
179
182
defer conn .Close ()
@@ -185,37 +188,53 @@ func (rc *RedisClient) HGet(hashID string, field string) (string, error) {
185
188
return val , err
186
189
}
187
190
188
- // HGetAll 获取指定hashset的所有内容
191
+ // HGetAll 获取指定hash的所有内容
189
192
func (rc * RedisClient ) HGetAll (hashID string ) (map [string ]string , error ) {
190
193
conn := rc .pool .Get ()
191
194
defer conn .Close ()
192
195
reply , err := redis .StringMap (conn .Do ("HGetAll" , hashID ))
193
196
return reply , err
194
197
}
195
198
196
- // HSet 设置指定hashset的内容
199
+ // HSet 设置指定hash的内容
197
200
func (rc * RedisClient ) HSet (hashID string , field string , val string ) error {
198
201
conn := rc .pool .Get ()
199
202
defer conn .Close ()
200
203
_ , err := conn .Do ("HSET" , hashID , field , val )
201
204
return err
202
205
}
203
206
204
- // HSetNX 设置指定hashset的内容 , 如果field不存在, 该操作无效
205
- func (rc * RedisClient ) HSetNX (key , field , value string ) (interface {}, error ) {
207
+ // HSetNX 设置指定hash的内容 , 如果field不存在, 该操作无效
208
+ func (rc * RedisClient ) HSetNX (hashID , field , value string ) (interface {}, error ) {
206
209
conn := rc .pool .Get ()
207
210
defer conn .Close ()
208
211
209
- val , err := conn .Do ("HSETNX" , key , field , value )
212
+ val , err := conn .Do ("HSETNX" , hashID , field , value )
213
+ return val , err
214
+ }
215
+
216
+ // HExist 返回hash里面field是否存在
217
+ func (rc * RedisClient ) HExist (hashID string , field string ) (int , error ){
218
+ conn := rc .pool .Get ()
219
+ defer conn .Close ()
220
+ val , err := redis .Int (conn .Do ("HEXISTS" , hashID , field ))
221
+ return val , err
222
+ }
223
+
224
+ // HIncrBy 增加 key 指定的哈希集中指定字段的数值
225
+ func (rc * RedisClient ) HIncrBy (hashID string , field string , increment int )(int , error ){
226
+ conn := rc .pool .Get ()
227
+ defer conn .Close ()
228
+ val , err := redis .Int (conn .Do ("HINCRBY" , hashID , field , increment ))
210
229
return val , err
211
230
}
212
231
213
232
// HLen 返回哈希表 key 中域的数量, 当 key 不存在时,返回0
214
- func (rc * RedisClient ) HLen (key string ) (int64 , error ) {
233
+ func (rc * RedisClient ) HLen (hashID string ) (int64 , error ) {
215
234
conn := rc .pool .Get ()
216
235
defer conn .Close ()
217
236
218
- val , err := redis .Int64 (conn .Do ("HLEN" , key ))
237
+ val , err := redis .Int64 (conn .Do ("HLEN" , hashID ))
219
238
return val , err
220
239
}
221
240
@@ -229,92 +248,274 @@ func (rc *RedisClient) HDel(args ...interface{}) (int64, error) {
229
248
}
230
249
231
250
// HVals 返回哈希表 key 中所有域的值, 当 key 不存在时,返回空
232
- func (rc * RedisClient ) HVals (key string ) (interface {}, error ) {
251
+ func (rc * RedisClient ) HVals (hashID string ) (interface {}, error ) {
233
252
conn := rc .pool .Get ()
234
253
defer conn .Close ()
235
254
236
- val , err := redis .Strings (conn .Do ("HVALS" , key ))
255
+ val , err := redis .Strings (conn .Do ("HVALS" , hashID ))
237
256
return val , err
238
257
}
239
258
259
+ //****************** list ***********************
240
260
241
- // BRPop 删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用
242
- func (rc * RedisClient ) BRPop (key string ) (string , error ) {
261
+ //将所有指定的值插入到存于 key 的列表的头部
262
+ func (rc * RedisClient ) LPush (key string , value ... interface {} ) (int , error ) {
243
263
conn := rc .pool .Get ()
244
264
defer conn .Close ()
245
- val , err := redis .StringMap (conn .Do ("BRPOP " , key , defaultTimeout ))
265
+ ret , err := redis .Int (conn .Do ("LPUSH " , key , value ))
246
266
if err != nil {
247
- return "" , err
267
+ return - 1 , err
248
268
} else {
249
- return val [ key ] , nil
269
+ return ret , nil
250
270
}
251
271
}
252
272
253
- //LPush 将所有指定的值插入到存于 key 的列表的头部
254
- func (rc * RedisClient ) LPush (key string , val string ) (int64 , error ) {
273
+ func (rc * RedisClient ) LPushX (key string , value string ) (int , error ) {
255
274
conn := rc .pool .Get ()
256
275
defer conn .Close ()
257
- ret , err := redis .Int64 (conn .Do ("LPUSH" , key , val ))
258
- if err != nil {
259
- return - 1 , err
260
- } else {
261
- return ret , nil
262
- }
276
+ resp , err := redis .Int (conn .Do ("LPUSHX" , key , value ))
277
+ return resp , err
278
+ }
279
+
280
+ func (rc * RedisClient ) LRange (key string , start int , stop int ) ([]string , error ){
281
+ conn := rc .pool .Get ()
282
+ defer conn .Close ()
283
+ resp , err := redis .Strings (conn .Do ("LRANGE" , key , start , stop ))
284
+ return resp , err
285
+ }
286
+
287
+ func (rc * RedisClient ) LRem (key string , count int , value string ) (int , error ){
288
+ conn := rc .pool .Get ()
289
+ defer conn .Close ()
290
+ resp , err := redis .Int (conn .Do ("LREM" , key , count , value ))
291
+ return resp , err
292
+ }
293
+
294
+ func (rc * RedisClient ) LSet (key string , index int , value string )(string , error ){
295
+ conn := rc .pool .Get ()
296
+ defer conn .Close ()
297
+ resp , err := redis .String (conn .Do ("LSET" , key , index , value ))
298
+ return resp , err
299
+ }
300
+
301
+ func (rc * RedisClient ) LTrim (key string , start int , stop int ) (string , error ) {
302
+ conn := rc .pool .Get ()
303
+ defer conn .Close ()
304
+ resp , err := redis .String (conn .Do ("LTRIM" , key , start , stop ))
305
+ return resp , err
306
+ }
307
+
308
+ func (rc * RedisClient ) RPop (key string ) (string , error ) {
309
+ conn := rc .pool .Get ()
310
+ defer conn .Close ()
311
+ resp , err := redis .String (conn .Do ("RPOP" , key ))
312
+ return resp , err
313
+ }
314
+
315
+ func (rc * RedisClient ) RPush (key string , value ... interface {}) (int , error ){
316
+ conn := rc .pool .Get ()
317
+ defer conn .Close ()
318
+ args := append ([]interface {}{key }, value ... )
319
+ resp , err := redis .Int (conn .Do ("RPUSH" , args ... ))
320
+ return resp , err
321
+ }
322
+
323
+ func (rc * RedisClient ) RPushX (key string , value ... interface {}) (int , error ) {
324
+ conn := rc .pool .Get ()
325
+ defer conn .Close ()
326
+ args := append ([]interface {}{key }, value ... )
327
+ resp , err := redis .Int (conn .Do ("RPUSHX" , args ... ))
328
+ return resp , err
329
+ }
330
+
331
+ func (rc * RedisClient ) RPopLPush (source string , destination string )(string , error ) {
332
+ conn := rc .pool .Get ()
333
+ defer conn .Close ()
334
+ resp , err := redis .String (conn .Do ("RPOPLPUSH" , source , destination ))
335
+ return resp , err
336
+ }
337
+
338
+
339
+ func (rc * RedisClient ) BLPop (key ... interface {})(map [string ]string , error ){
340
+ conn := rc .pool .Get ()
341
+ defer conn .Close ()
342
+ val , err := redis .StringMap (conn .Do ("BLPOP" , key , defaultTimeout ))
343
+ return val , err
344
+ }
345
+
346
+ //删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用
347
+ func (rc * RedisClient ) BRPop (key ... interface {}) (map [string ]string , error ) {
348
+ conn := rc .pool .Get ()
349
+ defer conn .Close ()
350
+ val , err := redis .StringMap (conn .Do ("BRPOP" , key , defaultTimeout ))
351
+ return val , err
352
+ }
353
+
354
+ func (rc * RedisClient ) BRPopLPush (source string , destination string )(string , error ){
355
+ conn := rc .pool .Get ()
356
+ defer conn .Close ()
357
+ val , err := redis .String (conn .Do ("BRPOPLPUSH" , source , destination ))
358
+ return val , err
359
+ }
360
+
361
+ func (rc * RedisClient ) LIndex (key string , index int )(string , error ){
362
+ conn := rc .pool .Get ()
363
+ defer conn .Close ()
364
+ val , err := redis .String (conn .Do ("LINDEX" , key , index ))
365
+ return val , err
366
+ }
367
+
368
+ func (rc * RedisClient ) LInsertBefore (key string , pivot string , value string )(int , error ){
369
+ conn := rc .pool .Get ()
370
+ defer conn .Close ()
371
+ val , err := redis .Int (conn .Do ("LINSERT" , key , "BEFORE" , pivot , value ))
372
+ return val , err
373
+ }
374
+
375
+ func (rc * RedisClient ) LInsertAfter (key string , pivot string , value string )(int , error ){
376
+ conn := rc .pool .Get ()
377
+ defer conn .Close ()
378
+ val , err := redis .Int (conn .Do ("LINSERT" , key , "AFTER" , pivot , value ))
379
+ return val , err
380
+ }
381
+
382
+ func (rc * RedisClient ) LLen (key string )(int , error ){
383
+ conn := rc .pool .Get ()
384
+ defer conn .Close ()
385
+ val , err := redis .Int (conn .Do ("LLEN" , key ))
386
+ return val , err
387
+ }
388
+
389
+ func (rc * RedisClient ) LPop (key string )(string , error ){
390
+ conn := rc .pool .Get ()
391
+ defer conn .Close ()
392
+ val , err := redis .String (conn .Do ("LPOP" , key ))
393
+ return val , err
263
394
}
264
395
396
+ //****************** set 集合 ***********************
397
+
265
398
// SAdd 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
266
399
// 假如 key 不存在,则创建一个只包含 member 元素作成员的集合。
267
- func (rc * RedisClient ) SAdd (args ... interface {}) (int64 , error ){
400
+ func (rc * RedisClient ) SAdd (key string , member ... interface {}) (int , error ){
268
401
conn := rc .pool .Get ()
269
402
defer conn .Close ()
270
-
271
- val , err := redis .Int64 (conn .Do ("SADD" , args ... ))
403
+ args := append ([] interface {}{ key }, member ... )
404
+ val , err := redis .Int (conn .Do ("SADD" , args ... ))
272
405
return val , err
273
406
}
274
407
275
408
// SCard 返回集合 key 的基数(集合中元素的数量)。
276
409
// 返回值:
277
410
// 集合的基数。
278
411
// 当 key 不存在时,返回 0
279
- func (rc * RedisClient ) SCard (key string ) (int64 , error ) {
412
+ func (rc * RedisClient ) SCard (key string ) (int , error ) {
280
413
conn := rc .pool .Get ()
281
414
defer conn .Close ()
282
-
283
- val , err := redis .Int64 (conn .Do ("SCARD" , key ))
415
+ val , err := redis .Int (conn .Do ("SCARD" , key ))
284
416
return val , err
285
417
}
286
418
287
419
// SPop 移除并返回集合中的一个随机元素。
288
420
// 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。
421
+ // count 为 返回的随机元素的数量
289
422
func (rc * RedisClient ) SPop (key string ) (string , error ) {
290
423
conn := rc .pool .Get ()
291
424
defer conn .Close ()
292
-
293
425
val , err := redis .String (conn .Do ("SPOP" , key ))
294
426
return val , err
295
427
}
296
428
297
429
// SRandMember 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
298
430
// 该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。
299
- func (rc * RedisClient ) SRandMember (args ... interface {}) (string , error ) {
431
+ // count 为 返回的随机元素的数量
432
+ func (rc * RedisClient ) SRandMember (key string , count int ) ([]string , error ) {
300
433
conn := rc .pool .Get ()
301
434
defer conn .Close ()
302
-
303
- val , err := redis .String (conn .Do ("SRANDMEMBER" , args ... ))
435
+ val , err := redis .Strings (conn .Do ("SRANDMEMBER" , key , count ))
304
436
return val , err
305
437
}
306
438
307
439
// SRem 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
308
440
// 当 key 不是集合类型,返回一个错误。
309
441
// 在 Redis 2.4 版本以前, SREM 只接受单个 member 值。
310
- func (rc * RedisClient ) SRem (args ... interface {}) (string , error ) {
442
+ func (rc * RedisClient ) SRem (key string , member ... interface {}) (int , error ) {
443
+ conn := rc .pool .Get ()
444
+ defer conn .Close ()
445
+ args := append ([]interface {}{key }, member ... )
446
+ val , err := redis .Int (conn .Do ("SREM" , args ... ))
447
+ return val , err
448
+ }
449
+
450
+ func (rc * RedisClient ) SDiff (key ... interface {}) ([]string , error ){
451
+ conn := rc .pool .Get ()
452
+ defer conn .Close ()
453
+ val , err := redis .Strings (conn .Do ("SDIFF" , key ... ))
454
+ return val , err
455
+ }
456
+
457
+ func (rc * RedisClient ) SDiffStore (destination string , key ... interface {}) (int , error ){
458
+ conn := rc .pool .Get ()
459
+ defer conn .Close ()
460
+ args := append ([]interface {}{destination }, key ... )
461
+ val , err := redis .Int (conn .Do ("SDIFFSTORE" , args ... ))
462
+ return val , err
463
+ }
464
+
465
+ func (rc * RedisClient ) SInter (key ... interface {}) ([]string , error ){
466
+ conn := rc .pool .Get ()
467
+ defer conn .Close ()
468
+ val , err := redis .Strings (conn .Do ("SINTER" , key ... ))
469
+ return val , err
470
+ }
471
+
472
+ func (rc * RedisClient ) SInterStore (destination string , key ... interface {})(int , error ){
473
+ conn := rc .pool .Get ()
474
+ defer conn .Close ()
475
+ args := append ([]interface {}{destination }, key ... )
476
+ val , err := redis .Int (conn .Do ("SINTERSTORE" , args ... ))
477
+ return val , err
478
+ }
479
+
480
+ func (rc * RedisClient ) SIsMember (key string , member string ) (bool , error ){
481
+ conn := rc .pool .Get ()
482
+ defer conn .Close ()
483
+ val , err := redis .Bool (conn .Do ("SISMEMBER" , key , member ))
484
+ return val , err
485
+ }
486
+
487
+ func (rc * RedisClient ) SMembers (key string ) ([]string , error ){
488
+ conn := rc .pool .Get ()
489
+ defer conn .Close ()
490
+ val , err := redis .Strings (conn .Do ("SMEMBERS" , key ))
491
+ return val , err
492
+ }
493
+
494
+ // smove is a atomic operate
495
+ func (rc * RedisClient ) SMove (source string , destination string , member string ) (bool , error ){
496
+ conn := rc .pool .Get ()
497
+ defer conn .Close ()
498
+ val , err := redis .Bool (conn .Do ("SMOVE" , source , destination , member ))
499
+ return val , err
500
+ }
501
+
502
+ func (rc * RedisClient ) SUnion (key ... interface {}) ([]string , error ){
311
503
conn := rc .pool .Get ()
312
504
defer conn .Close ()
505
+ val , err := redis .Strings (conn .Do ("SUNION" , key ... ))
506
+ return val , err
507
+ }
313
508
314
- val , err := redis .String (conn .Do ("SREM" , args ... ))
509
+ func (rc * RedisClient ) SUnionStore (destination string , key ... interface {})(int , error ){
510
+ conn := rc .pool .Get ()
511
+ defer conn .Close ()
512
+ args := append ([]interface {}{destination }, key ... )
513
+ val , err := redis .Int (conn .Do ("SUNIONSTORE" , args ))
315
514
return val , err
316
515
}
317
516
517
+ //****************** 全局操作 ***********************
518
+
318
519
// DBSize 返回当前数据库的 key 的数量
319
520
func (rc * RedisClient ) DBSize ()(int64 , error ){
320
521
conn := rc .pool .Get ()
0 commit comments