Go-Redis

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)
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容