Go-Redis

2021-06-07  本文已影响0人  陈光环_18

Redis支持的数据结构

Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、带范围查询的排序集合(sorted sets)、位图(bitmaps)、hyperloglogs、带半径查询和流的地理空间索引等数据结构(geospatial indexes)。

Redis应用场景

缓存系统,减轻主数据库(MySQL)的压力。
计数场景,比如微博、抖音中的关注数和粉丝数。
热门排行榜,需要排序的场景特别适合使用ZSET。
利用LIST可以实现队列的功能。

Redis与Memcached比较

Memcached中的值只支持简单的字符串,Reids支持更丰富的5中数据结构类型。
Redis的性能比Memcached好很多
Redis支持RDB持久化和AOF持久化。
Redis支持master/slave模式。

操作步骤

下载依赖

go get github.com/garyburd/redigo/redis

创建连接

conn, err := redis.Dial("tcp",
"127.0.0.1:6379",
redis.DialDatabase(1) // dialOption参数可以配置选择数据库、连接密码、心跳检测等等
redis.DialPassword("xxxx"))
if err != nil {
fmt.Println("Connect to redis failed ,cause by >>>", err)
return
}
defer conn.Close()

插入值

//写入值
_, err = conn.Do("SET", "test-Key", "test-Value")
if err != nil {
fmt.Println("redis set value failed >>>", err)
}

检验key值是否存在

//检查是否存在key值
exists, err := redis.Bool(conn.Do("EXISTS", "test-Key"))
if err != nil {
fmt.Println("illegal exception")
}
fmt.Printf("exists or not: %v \n", exists)

获取值

//read value
v, err := redis.String(conn.Do("GET", "test-Key"))
if err != nil {
fmt.Println("redis get value failed >>>", err)
}
fmt.Println("get value: ", v)

给定一个kv的过期时间

//EX,5秒
_, err = conn.Do("SET", "test-Key", "test-Value", "EX", "5")
if err != nil {
fmt.Println("redis set value failed >>>", err)
}

删除key

//del kv
_, err = conn.Do("DEL", "test-Key")
if err != nil {
fmt.Println("redis delelte value failed >>>", err)
}

上一篇下一篇

猜你喜欢

热点阅读