php
复制代码
package config
import (
"github.com/go-redis/redis/v8"
"context"
"time"
)
var rdb *redis.Client
var Ctx = context.Background()
func InitRedis() {
rdb = redis.NewClient(&redis.Options{
Addr: "localhost:6379", // Redis 服务器地址
Password: "", // Redis 密码
DB: 0, // 选择的数据库
})
// 检查 Redis 连接
_, err := rdb.Ping(Ctx).Result()
if err != nil {
panic(err)
}
}
//StringSet 设置字符串
func Set(key, value string, expiration time.Duration) error {
return rdb.Set(Ctx, key, value, expiration).Err()
}
// StringGet 获取字符串
func Get(key string) (string, error) {
return rdb.Get(Ctx, key).Result()
}
// StringDel 删除字符串
func Del(key string) error {
return rdb.Del(Ctx, key).Err()
}
// IncrBy 自增
func IncrBy(key string, value int64)(int64, error){
return rdb.IncrBy(Ctx, key, value).Result()
}
// DecrBy 自减
func DecrBy(key string, value int64)(int64, error){
return rdb.DecrBy(Ctx, key, value).Result()
}
// StringExpire 设置过期时间
func Expire(key string, expiration time.Duration) error {
return rdb.Expire(Ctx, key, expiration).Err()
}
// StringExists 检查是否存在
func StringExists(key string) (bool, error) {
count, err := rdb.Exists(Ctx, key).Result()
return count >
0, err
}
// HashSet 设置 hash 字段
func HashSet(key, field, value string) error {
return rdb.HSet(Ctx, key, field, value).Err()
}
// HashMSet 批量设置 hash
func HashMSet(key string, fields map[string]interface{
}) error {
return rdb.HMSet(Ctx, key, fields).Err()
}
// HashGet 获取 hash 字段
func HashGet(key, field string) (string, error) {
return rdb.HGet(Ctx, key, field).Result()
}
// HashGetAll 获取所有字段
func HashGetAll(key string) (map[string]string, error) {
return rdb.HGetAll(Ctx, key).Result()
}
// HashDel 删除字段
func HashDel(key string, fields ...string) error {
return rdb.HDel(Ctx, key, fields...).Err()
}
// HashExists 判断字段是否存在
func HashExists(key, field string) (bool, error) {
exists, err := rdb.HExists(Ctx, key, field).Result()
return exists, err
}
// HashIncrBy 自增 hash 字段
func HashIncrBy(key, field string, value int64) (int64, error) {
return rdb.HIncrBy(Ctx, key, field, value).Result()
}
// ListLPush 从左侧插入
func ListLPush(key string, values ...interface{
}) error {
return rdb.LPush(Ctx, key, values...).Err()
}
// ListRPush 从右侧插入
func ListRPush(key string, values ...interface{
}) error {
return rdb.RPush(Ctx, key, values...).Err()
}
// ListLPop 从左侧弹出
func ListLPop(key string) (string, error) {
return rdb.LPop(Ctx, key).Result()
}
// ListRPop 从右侧弹出
func ListRPop(key string) (string, error) {
return rdb.RPop(Ctx, key).Result()
}
// ListRange 获取范围 [start, stop]
func ListRange(key string, start, stop int64) ([]string, error) {
return rdb.LRange(Ctx, key, start, stop).Result()
}
// ListLen 获取长度
func ListLen(key string) (int64, error) {
return rdb.LLen(Ctx, key).Result()
}
// ListDel 删除整个 list
func ListDel(key string) error {
return rdb.Del(Ctx, key).Err()
}
// SetAdd 添加元素
func SetAdd(key string, members ...interface{
}) error {
return rdb.SAdd(Ctx, key, members...).Err()
}
// SetMembers 获取所有元素
func SetMembers(key string) ([]string, error) {
return rdb.SMembers(Ctx, key).Result()
}
// SetIsMember 判断是否是成员
func SetIsMember(key string, member interface{
}) (bool, error) {
exists, err := rdb.SIsMember(Ctx, key, member).Result()
return exists, err
}
// SetRem 删除元素
func SetRem(key string, members ...interface{
}) error {
return rdb.SRem(Ctx, key, members...).Err()
}
// SetCard 获取集合大小
func SetCard(key string) (int64, error) {
return rdb.SCard(Ctx, key).Result()
}
// SetPop 随机弹出一个元素
func SetPop(key string) (string, error) {
return rdb.SPop(Ctx, key).Result()
}
// ZAdd 添加元素(score, member)
func ZAdd(key string, members ...*redis.Z) error {
return rdb.ZAdd(Ctx, key, members...).Err()
}
// ZRange 获取升序范围
func ZRange(key string, start, stop int64) ([]string, error) {
return rdb.ZRange(Ctx, key, start, stop).Result()
}
// ZRevRange 获取降序范围
func ZRevRange(key string, start, stop int64) ([]string, error) {
return rdb.ZRevRange(Ctx, key, start, stop).Result()
}
// ZRangeWithScores 获取带分数的元素
func ZRangeWithScores(key string, start, stop int64) ([]redis.Z, error) {
return rdb.ZRangeWithScores(Ctx, key, start, stop).Result()
}
// ZScore 获取成员分数
func ZScore(key, member string) (float64, error) {
return rdb.ZScore(Ctx, key, member).Result()
}
// ZRem 删除成员
func ZRem(key string, members ...string) error {
var interfaceMembers []interface{
}
for _, member := range members {
interfaceMembers = append(interfaceMembers, member)
}
return rdb.ZRem(Ctx, key, interfaceMembers...).Err()
}
// ZCard 获取有序集合大小
func ZCard(key string) (int64, error) {
return rdb.ZCard(Ctx, key).Result()
}
// ZRank 获取升序排名
func ZRank(key, member string) (int64, error) {
return rdb.ZRank(Ctx, key, member).Result()
}
// ZRevRank 获取降序排名
func ZRevRank(key, member string) (int64, error) {
return rdb.ZRevRank(Ctx, key, member).Result()
}