redis
redis简介
高性能key-value数据库
- 支持数据的持久化 可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用
- 支持多种数据结构的存储
- 支持数据的备份
redis数据类型
- String
- Hash
- List
- Set
- zset(有序集合)
string
string 是redis最基本的类型
redis的string可以包含任何数据,最大能存储512MB
Hash
Redis hash 是一个键值
每个 hash 可以存储 2 32 − 1 2^{32}-1 232−1 键值对(40多亿)
List
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
11代表列表元素的个数是11
10代表弹出的元素是10
Set
Redis 的 Set 是 string 类型的无序集合
(集合内的元素唯一性)
Zset(有序集合)
每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复
go使用redis
package main
import (
"fmt"
"github.com/go-redis/redis/v7"
"io/ioutil"
"log"
)
var client = redis.NewClient(&redis.Options{
Addr:"127.0.0.1:6379",
DB:0,
})
func ConnectRedis() {
pong, err := client.Ping().Result()
if err != nil {
log.Fatal(err)
}
if pong != "PONG" {
log.Fatal("连接redis失败")
} else {
log.Println("已连接redis服务")
}
}
func main() {
ConnectRedis()
f, _ := ioutil.ReadFile("/home/jay/index.html")
set("jay", string(f))
get("jay")
}
func set(key , value string) {
//redis的string操作
result, err := client.Set(key, value, 0).Result()
if err != nil {
log.Fatal(err)
}
log.Printf("Set %s %s %v", key, value, result )
}
func get(key string) {
result, err := client.Get(key).Result()
if err != nil {
log.Fatal(err)
}
fmt.Println(result)
}