package redisdb
import (
"fmt"
"github.com/go-redis/redis" // 实现了redis连接池
"tbkt/config"
"tbkt/logger"
"time"
)
// 定义redis链接池
var client *redis.Client
// 初始化redis链接池
func init(){
client = redis.NewClient(&redis.Options{
Addr: config.RedisAddr, // Redis地址
Password: config.RedisPwd, // Redis账号
DB: config.RedisDB, // Redis库
PoolSize: config.PoolSize, // Redis连接池大小
MaxRetries: 3, // 最大重试次数
IdleTimeout: 10*time.Second, // 空闲链接超时时间
})
pong, err := client.Ping().Result()
if err == redis.Nil {
logger.Info("Redis异常")
} else if err != nil {
logger.Info("失败:", err)
} else {
logger.Info(pong)
}
}
// 向key的hash中添加元素field的值
func HashSet(key, field string, data interface{}) {
err := client.HSet(key, field, data)
if err != nil {
logger.Error("Redis HSet Error:", err)
}
}
// 批量向key的hash添加对应元素field的值
func BatchHashSet(key string, fields map[string]interface{}) string {
val, err := client.HMSet(key, fields).Result()
if err != nil {
logger.Error("Redis HMSet Error:", err)
}
return val
}
// 通过key获取hash的元素值
func HashGet(key, field string) string {
result := ""
val, err := client.HGet(key, field).Result()
if err == redis.Nil {
logger.Info("Key Doesn't Exists:", field)
return result
}else if err != nil {
logger.Info("Redis HGet Error:", err)
return result
}
return val
}
// 批量获取key的hash中对应多元素值
func BatchHashGet(key string, fields ...string) map[string]interface{} {
resMap := make(map[string]interface{})
for _, field := range fields {
var result interface{}
val, err := client.HGet(key, fmt.Sprintf("%s", field)).Result()
if err == redis.Nil {
logger.Info("Key Doesn't Exists:", field)
resMap[field] = result
}else if err != nil {
logger.Info("Redis HMGet Error:", err)
resMap[field] = result
}
if val != "" {
resMap[field] = val
}else {
resMap[field] = result
}
}
return resMap
}
// 获取自增唯一ID
func Incr(key string) int {
val, err := client.Incr(key).Result()
if err != nil {
logger.Error("Redis Incr Error:", err)
}
return int(val)
}
// 添加集合数据
func SetAdd(key, val string){
client.SAdd(key, val)
}
// 从集合中获取数据
func SetGet(key string)[]string{
val, err := client.SMembers(key).Result()
if err != nil{
logger.Error("Redis SMembers Error:", err)
}
return val
}
go-redis的使用(哈希类型数据)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.当代种种事件不同于历史之处,在于我们不知道它们会产生什么后果。 2.经验和利益的偶然结合,往往会向人们揭示...
- hset key field value 作用: 把key中 filed域的值设为value注:如果没有field...
- 这里不累赘如何安装redis和php redis扩展,主要熟悉调用redis哈希数据类型 简单方法操作如下 1:h...
- 这里不累赘如何安装redis和php redis扩展,主要熟悉调用redis哈希数据类型 如图 简单方法操作如下 ...
- 在美本申请规划的过程中,学生提前确认申请的主线就是提前确认大学申请的专业方向,建议这一步工作最好放在学生在9-10...