wordpress建站如何制作微信,做网站推广 需要ftp,快盘WordPress,从传播的角度一、redis操作总结
由于写redis命令的时候有提示符#xff0c;所以下表只给出命令名称
数据类型操作简介字符串GET, SET, MGET, MSET, SETEX,DEL最基本的数据类型#xff0c;存储任意二进制数据#xff0c;支持简单操作和原子计数。适合存储重复数据。哈希HSET, HGET, HDE…一、redis操作总结
由于写redis命令的时候有提示符所以下表只给出命令名称
数据类型操作简介字符串GET, SET, MGET, MSET, SETEX,DEL最基本的数据类型存储任意二进制数据支持简单操作和原子计数。适合存储重复数据。哈希HSET, HGET, HDEL, HMSET, HMGET, HEXISTS,HGETALL,HLEN键值对集合适合存储对象支持字段操作。可存储重复字段。列表LPUSH, RPUSH, LPOP, RPOP, LRANGE, LSET, LREM有序字符串集合支持双向操作适合实现消息队列允许重复元素。集合SADD, SREM, SMEMBERS, SISMEMBER无序唯一元素集合不允许重复支持集合运算适合实现标签和用户兴趣。有序集合ZADD, ZREM, ZRANGE带分数的有序集合不允许重复支持范围查询和排序适合实现排行榜等。
二、GO连接redis
go-redis 支持 2 个最新的 go 版本且依赖Go modules如果你还没有 go mod你需要首先初始化:
go mod init github.com/my/repo安装 go-redis/v9 (支持所有的 redis 版本):
go get github.com/redis/go-redis/v9参考链接GO REDIS快速入门 然后导包即可使用redisimport github.com/redis/go-redis/v9 GO链接redis分为以下几步 1.配置链接信息
opts : redis.Options{Addr: localhost:6379, // Redis 服务器地址和端口Password: , // Redis 密码默认为空DB: 0, // Redis 数据库编号默认为 0
}2.创建客户端
rdb : redis.NewClient(opts)3.创建上下文
ctx : context.Background()4.测试连接
_, err : rdb.Ping(ctx).Result()
if err ! nil {fmt.Println(连接 Redis 失败)return
}
fmt.Println(连接 Redis 成功)操作2-4都已被本人封装在一个函数中
// 创建 Redis 客户端并返回客户端和上下文
func ConnectRedis(opts *redis.Options) (*redis.Client, context.Context, error) {// 创建 Redis 客户端rdb : redis.NewClient(opts)// 创建上下文ctx : context.Background()// 测试连接_, err : rdb.Ping(ctx).Result()if err ! nil {fmt.Println(连接 Redis 失败)return nil, nil, err}fmt.Println(连接 Redis 成功)return rdb, ctx, nil
}本人已在自定义包中定义此函数这样用户无需每次手动测试链接。自定义包已部署在gitee上读者可通过go get本人的项目地址获取项目地址my_gopkg。使用前建议阅读README。
三、GO操作redis
go-redis封装的函数名和redis语句是一样的传参除了传入上下文变量也是一样的只是调用函数时多了Err()和Result()。Result()用于获取 Redis 命令的返回值。Err()用于获取命令执行的错误信息。 数据类型以哈希表为例GO链接操作redis的完整代码如下
package mainimport (contextfmttimegithub.com/redis/go-redis/v9
)// ConnectRedis 创建 Redis 客户端并返回客户端和上下文
func ConnectRedis(opts *redis.Options) (*redis.Client, context.Context, error) {// 创建 Redis 客户端rdb : redis.NewClient(opts)// 创建上下文ctx : context.Background()// 测试连接_, err : rdb.Ping(ctx).Result()if err ! nil {fmt.Println(连接 Redis 失败)return nil, nil, err}fmt.Println(连接 Redis 成功)return rdb, ctx, nil
}
func main() {// 配置链接信息opts : redis.Options{Addr: localhost:6379, // Redis 服务器地址和端口Password: , // Redis 密码默认为空DB: 0, // Redis 数据库编号默认为 0}rdb, ctx, err : ConnectRedis(opts)if err ! nil {return}// 创建用户err rdb.HSet(ctx, myhash, name, 张三, age, 30).Err()if err ! nil {fmt.Println(创建用户失败:, err)return}fmt.Println(用户创建成功)// 获取用户信息userInfo, err : rdb.HGetAll(ctx, myhash).Result()if err ! nil {fmt.Println(获取用户信息失败:, err)return}fmt.Println(用户信息:, userInfo)// 更新用户信息err rdb.HSet(ctx, myhash, name, 李四, age, 25).Err()if err ! nil {fmt.Println(更新用户信息失败:, err)return}fmt.Println(用户信息更新成功)// 再次获取用户信息以查看更新效果updatedInfo, err : rdb.HGetAll(ctx, myhash).Result()if err ! nil {fmt.Println(获取更新后的用户信息失败:, err)return}fmt.Println(更新后的用户信息:, updatedInfo)// 设置键的过期时间为5秒err rdb.Expire(ctx, myhash, 5*time.Second).Err()if err ! nil {fmt.Println(设置过期时间失败:, err)return}fmt.Println(设置过期时间成功)// 等待6秒time.Sleep(6 * time.Second)// 再次尝试获取哈希值预期为空因为键已过期result, err : rdb.HGetAll(ctx, myhash).Result()if err ! nil {fmt.Println(获取用户信息失败:, err)return}if len(result) 0 {fmt.Println(键已过期无法获取用户信息)} else {fmt.Println(用户信息:, result)}// 删除用户信息err rdb.Del(ctx, myhash).Err()if err ! nil {fmt.Println(删除用户信息失败:, err)return}fmt.Println(用户信息删除成功)
}