1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package cache
- import (
- "github.com/go-redis/redis"
- )
- func (p *RedisCache) HMGet(key string, fields ...string) ([]string, error) {
- args := []interface{}{"hmget", key}
- for _, val := range fields {
- args = append(args, val)
- }
- return p.commandReturnStringSlice(args...)
- }
- func (p *RedisCache) HGet(key, field string) (string, error) {
- if p.isCluster {
- return p.cluster.HGet(key, field).Result()
- }
- return p.client.HGet(key, field).Result()
- }
- func (p *RedisCache) HGetAll(key string) (map[string]string, error) {
- if p.isCluster {
- return p.cluster.HGetAll(key).Result()
- }
- return p.client.HGetAll(key).Result()
- }
- func (p *RedisCache) HMSet(key string, fields map[string]interface{}) (string, error) {
- if p.isCluster {
- return p.cluster.HMSet(key, fields).Result()
- }
- return p.client.HMSet(key, fields).Result()
- }
- func (p *RedisCache) HSet(key, field string, value interface{}) (bool, error) {
- if p.isCluster {
- return p.cluster.HSet(key, field, value).Result()
- }
- return p.client.HSet(key, field, value).Result()
- }
- func (p *RedisCache) HIncrBy(key, field string, incr int64) (int64, error) {
- if p.isCluster {
- return p.cluster.HIncrBy(key, field, incr).Result()
- }
- return p.client.HIncrBy(key, field, incr).Result()
- }
- func (p *RedisCache) BatchHGetAll(keys ...string) (map[string]map[string]string, error) {
- cmds := make(map[string]*redis.StringStringMapCmd, len(keys))
- if p.isCluster {
- if _, err := p.cluster.Pipelined(func(pipe redis.Pipeliner) error {
- for _, key := range keys {
- cmds[key] = pipe.HGetAll(key)
- }
- return nil
- }); err != nil {
- return nil, err
- }
- } else {
- if _, err := p.client.Pipelined(func(pipe redis.Pipeliner) error {
- for _, key := range keys {
- cmds[key] = pipe.HGetAll(key)
- }
- return nil
- }); err != nil {
- return nil, err
- }
- }
- results := make(map[string]map[string]string, len(cmds))
- for _, key := range keys {
- if v, ok := cmds[key]; ok && v != nil {
- results[key] = v.Val()
- }
- }
- return results, nil
- }
|