【Go开源宝藏】Go 语言操作 Redis (一)
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进行简单的操作。
- 点赞
- 收藏
- 关注作者
评论(0)