【Go开源宝藏】Go 语言操作 Redis (一)

举报
小生凡一 发表于 2022/02/03 22:12:57 2022/02/03
【摘要】 1. Redis简介Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、带范围查询的排序集合(sorted sets)、位图(bitmaps)、hyperloglogs、带半径查询和流的地理空间索引(geospatial indexes)等数据结构。...

1. Redis简介

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。支持诸如字符串(strings)哈希(hashes)列表(lists)集合(sets)带范围查询的排序集合(sorted sets)位图(bitmaps)hyperloglogs带半径查询流的地理空间索引(geospatial indexes)等数据结构。

虽然是基于内存的存储系统,但是它本身是支持内存数据的持久化的,而且提供两种主要的持久化策略:RDB快照和AOF日志。

redis常用方法:

方法 作用 参数
Set 添加kv 键 string, 值 interface{}, 过期时间 time.Duration
Get 获取值 键 string
Del 删除kv 键 …string
HSet 给散列添加kv 散列的键, 散列中的键 string, 值 interface{}
HGet 获取散列kv的值 散列的键, 散列中的键 string
FlushAll 删光
Ping 心跳验证
Exists 确认键是否存在 键 …string
Expire 给key设置过期时间 键 string, 过期时间 time.Duration
Incr 增加键 键 string
Close 关闭连接
Watch 监听键,键出现时执行方法 方法 func(*Tx) error, 键 …string
Decr 值减一 键 string

在Redis中,并不是所有的数据都一直存储在内存中的。当物理内存用完时,Redis可以将一些很久没用到的value交换到磁盘。Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据

swappability=age*log(size_in_memory)

计算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以保持超过其机器本身内存大小的数据。

2. Go语言连接Redis

驱动:github.com/go-redis/redis

  • 定义 redisClient
var Redis *redis.Client
  • 连接
func connect() {
	client := redis.NewClient(&redis.Options{
		Addr: "127.0.0.1:6379",
		//Password: "redisPassword",  // 无密码,就这样就好了
		DB: 3,
	})
	_, err := client.Ping().Result() // 心跳验证
	if err != nil {
		log.Println(err)
		panic(err)
	}
	Redis = client
	fmt.Println("connect success")
}

go-redis包中提供了非常丰富的接口供我们选择

redis.NewClient 就可以创建一个redis的client

client.Ping().Result() 进行心跳检测验证

下一章中我们会使用go语言对redis进行简单的操作。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。