2021-07-03 来源:华纳网 责任编辑:王双双 人气:
核心提示:谷雨课堂Go实战第25课轻松使用Redis

知识点:

使用Redis

本课内容:

大家好,欢迎来到谷雨课堂,

 

 

Redis是非常重要的缓存中间件,很多系统都使用Redis做为缓存使用,

今天谷雨老师就用Go来连接Redis

 

Redis是一个key-value存储系统。

它支持存储的value类型很多,

包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)

和hash(哈希类型)。

 

这些数据类型都支持push/pop、add/remove

及取交集并集和差集及更丰富的操作,

而且这些操作都是原子性的。

 

在此基础上,redis支持各种不同方式的排序。

为了保证效率,数据缓存在内存中。

redis会周期性的把更新的数据写入磁盘

或者把修改操作写入追加的记录文件,

并且在此基础上实现了master-slave(主从)同步。

 

Redis的功能很多,最常用的是存储字符型和对象

此外pub/sub,订阅/发布功能也是非常实用的

 

下面,我们用代码实际连接一下

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
package main
import ("fmt""log"
"github.com/go-redis/redis")
func main() {
//新建一个Redis的连接  client := redis.NewClient(&redis.Options{    Addr:     "127.0.0.1:6379",    Password: "", //如果有密码,在这里设置  })
//Ping一下Redis服务器  pong, err := client.Ping().Result()  fmt.Println(pong)
//设置一个键值,最后一个参数是过期时间,如果写0则永远不过期  err = client.Set("username", "guyu", 0).Err()if err != nil {panic(err)  }
//读取一个值  val, err := client.Get("username").Result()if err != nil {panic(err)  }  fmt.Println("username", val)
//读取一个不存在的值  val2, err := client.Get("key2").Result()if err == redis.Nil {    fmt.Println("key2 不存在")  } else if err != nil {panic(err)  } else {    fmt.Println("key2", val2)  }  
//定义一个Hash对象   datas := map[string]interface{}{  "name""谷雨老师",  "sex":  "男",  "age":  28,  "tel":  "086-1234567890",  }

//添加if err := client.HMSet("hash_test", datas).Err(); err != nil {    log.Fatal(err)  }
//返回部分成员rets, err := client.HMGet("hash_test""name""sex").Result()log.Println("rets:", rets, err)
//返回所有成员retAll, err := client.HGetAll("hash_test").Result()log.Println("retAll", retAll, err)

//是否存在某个成员bExist, err := client.HExists("hash_test""tel").Result()log.Println(bExist, err)
bRet, err := client.HSetNX("hash_test""爱好""爱好一切美好的事物").Result()log.Println(bRet, err)
//删除某个成员log.Println(client.HDel("hash_test""age").Result())
//返回所有成员  retAll, err = client.HGetAll("hash_test").Result()  log.Println("retAll", retAll, err)}

完整的源代码可以登录【华纳网】下载。
 

https://www.worldwarner.com/





免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。