简介
redis是高并发场景下常用的缓存型数据库,支持持久化,常用来缓存访问频率较高的数据,本文通过几个例子列举go如何使用redis,go 操作redis的库很多,我们选择常用的go-redis来操作就可以了,当然官方也提供了redis操作的库。这几个例子出自个人博客系统的源码。源码地址https://github.com/secondtonone1/bstgo-blog
连接redis
我们创建一个redis连接池,设置最大空闲连接数,池内总共连接数,以及redis连接密码,地址,选择的分区等
1 | func InitRedis() { |
根据key设置value
redis是基于key-value存储的,这个例子我们为STRING_ToTAL_VISIT_NUM_KEY设置值为num,过期时间为0表示永不过期
1 | func SetVisitNum(num int64) (string, error) { |
根据key获取值
这个例子获取key为STRING_ToTAL_VISIT_NUM_KEY的value值
1 | func GetVisitNum() (string, error) { |
根据key删除值
1 | rediscli.Del(STRING_ToTAL_VISIT_NUM_KEY).Result() |
HGet获取hash表中指定字段
HGet操作可以获取hash表中指定字段的值,下个例子通过获取HOME_SESSION的key找到hash表,进而找到sessioId字段的值
1 | func GetHomeSession(sessionId string) (string, error) { |
HSet添加值
HSet设置hash表中指定字段的值,下个例子设置了Key为HOME_SESSION的hash表,将sessionId字段的值设置为sessionData
1 | func AddHomeSession(sessionId string, sessionData string) error { |
设置值的同时设置了key为HOME_SESSION的hash表中所有值的过期时间为24小时,如果要设置过期时间,每次设置值后都要重设过期时间,如不设置就会变成永久存在内存中
HDel删除值
HDel删除hash表中指定的字段,如下例子删除了key为HOME_SESSION的hash表中字段为sessionId的值
1 | func DelHomeSession(sessionId string) error { |
增加操作
可以通过Incr命令为某个key的value自增加一,如下这个例子为key为STRING_ToTAL_VISIT_NUM_KEY的value值加一
1 | func AddVisitNum() (int64, error) { |
类似的操作还有Decr,DecrBy等
获取hash表中所有key和value
HGetAll可以获取指定hash表中所有的key和value,如下例子获取了key为HSET_LV1_MENU_KEY的hash表中所有的key,value
1 | func GetLv1Menus() ([]*model.CatMenu, error) { |
redis中key为HSET_LV1_MENU_KEY的hash表存储的是所有一级目录的key和value,通过HGetAll获取后进行遍历和反序列化获取具体的目录结构。
以上就是redis常用的操作,通过go操作redis达到缓存高并发访问数据的目的。