Go—Redis
一、Redis基本介绍、安装及原理
1. 基本介绍:
①Redis是NoSQL数据库(非关系型数据库)💨官网
②Redis(Remote Dlctionary Server),意即远程字典服务器 ,单机能达到15w qps,适合做缓存,也可以持久化。
③Redis是高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,也成为数据结构服务器
2. Redis安装
直接进入官网下载最新版本,至充足磁盘位置处,然后即可使用Redis了。
为了使用方便先可以为Redis包配置系统路径,这样cmd可以实现不在Redis目录下,启动Redis服务,然后再将Redis服务注册为windows的系统服务即可使用。
3. Redis的原理
1. 原理图
Redis默认有16个数据库,初始默认使用0号库,编号是0…15,可以使用select关键字切换数据库编号,但是每个数据的数据互不影响。
2. Redis五大数据类型
String(字符串)、Hash(哈希)、List(列表)、Set(集合)、zset(sorted set:有序集合)。
二、Redis的基本使用
1. 原生Redis命令使用详解
①String
②Hash
③List
-
List基本介绍 列表是最简单的字符串列表,按照插入顺序排序。可以在头部或尾部添加元素。 List本质是个链表,是有序的,元素的值可以重复。 如果List数据全移除,,对应的键也会消失,或者直接删除列表名 -
List-crud
④Set
-
Set基本介绍
- Redis的Set是string类型的无序集合。
- 底层是HashTable数据结构,Set存放很多字符串元素,并且是无序的,不能有重复
-
Set-crud
- sadd/smembers/sismember/srem[删除指定值]
- 演示
更多Redis命令
2. go-redis使用
①go连接Redis
func initRedisClient() (err error) {
rds = redis.NewClient(&redis.Options{
DB: 0,
Addr: "localhost:6379",
Password: "",
})
result, err := rds.Ping().Result()
if err != nil {
return err
}
fmt.Println(result)
return nil
}
②go操作Redis
func example1(addData interface{}) (err error) {
err = rds.Set("score", addData, 0).Err()
if err != nil {
return err
}
result, err := rds.Get("score").Result()
if err != nil {
return err
}
fmt.Println("添加数据:",result)
return nil
}
func example2() (err error) {
zset:= "scoreRank"
scores := []redis.Z{
redis.Z{
Score: 91,
Member: "刘海斌",
},
redis.Z{
Score: 99,
Member: "包文杰",
},
redis.Z{
Score: 90,
Member: "王铁霖",
},
redis.Z{
Score: 97,
Member: "牟国柱",
},
}
fmt.Println(scores)
result1, err := rds.ZAdd(zset, scores...).Result()
if err != nil {
fmt.Println(err)
return err
}
fmt.Println("zadd:",result1)
result2, err := rds.ZIncrBy(zset, 1, "包文杰").Result()
if err != nil {
return err
}
fmt.Println("成功修改:",result2)
result3, err := rds.ZRevRangeWithScores(zset,0,2).Result()
if err != nil {
return err
}
fmt.Println("分数最高的三个:",result3)
result4, err := rds.ZRangeWithScores(zset,0,2).Result()
if err != nil {
return err
}
fmt.Println("分数最低的三个:",result4)
zRangeBy := redis.ZRangeBy{
Min: "95",
Max: "100",
}
result5, err := rds.ZRangeByScoreWithScores(zset, zRangeBy).Result()
if err != nil {
return err
}
fmt.Println("95~100::",result5)
return nil
}
|