持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情
1. Redis简介
Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、带范围查询的排序集合(sorted sets)、位图(bitmaps)、hyperloglogs、带半径查询和流的地理空间索引(geospatial indexes)等数据结构。
| 方法 | 作用 | 参数 |
|---|---|---|
| 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 |
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")
}
3. List 操作
3.1 RPush
在名称为key的list尾添加一个值为value的元素
val:=redisClient.RPush("F", []string{"One", "Two", "Three","Four"})
if val == nil {
fmt.Println("Value get error")
}
fmt.Println(val)
3.2 LLen & LRange
- LLen:返回名称为key的list的长度
- LRange:返回名称为key的list中start至end之间的元素
val:=redisClient.RPush("F", []string{"One", "Two", "Three","Four"})
if val == nil {
fmt.Println("Value get error")
}
fmt.Println("F List:",val)
val = redisClient.LLen("F")
fmt.Println("len:",val)
res := redisClient.LRange("F",0,2)
fmt.Println("LRange:",res)
3.3 总结
| 操作 | 名称 |
|---|---|
| RPush(key, value) | 在名称为key的list尾添加一个值为value的元素 |
| LPush(key, value) | 在名称为key的list头添加一个值为value的 元素 |
| LLen(key) | 返回名称为key的list的长度 |
| LRange(key, start, end) | 返回名称为key的list中start至end之间的元素 |
| LTrim(key, start, end) | 截取名称为key的list |
| LIndex(key, index) | 返回名称为key的list中index位置的元素 |
| LSet(key, index, value) | 给名称为key的list中index位置的元素赋值 |
| LRem(key, count, value) | 删除count个key的list中值为value的元素 |
| LPop(key) | 返回并删除名称为key的list中的首元素 |
| RPop(key) | 返回并删除名称为key的list中的尾元素 |
| BLPop(key1, key2,… key N, timeout) | lpop命令的block版本 |
| BRPop(key1, key2,… key N, timeout) | rpop的block版本 |
| RPopLPush(srckey, dstkey) | 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部 |