项目Redis配置

在实战项目中使用Redis功能,首先需要进行Redis配置。本实战项目中,关与Redis的配置项包含:连接类型地址端口公共前缀。以上配置项被定义包含在Iris框架的redis包中的Config结构体中,Config定义如下:

type Config struct {
// Network "tcp"
Network string
// Addr "127.0.0.1:6379"
Addr string
// Password string .If no password then no 'AUTH'. Default ""
Password string
// If Database is empty "" then no 'SELECT'. Default ""
Database string
// MaxIdle 0 no limit
MaxIdle int
// MaxActive 0 no limit
MaxActive int
// IdleTimeout time.Duration(5) * time.Minute
IdleTimeout time.Duration
// Prefix "myprefix-for-this-website". Default ""
Prefix string
}
  • Network: 连接类型。TCP

  • Addr: 即将连接的Redis服务主机IP。本实战项目的Redis服务部署在本机,因此主机ip为127.0.0.1。Redis服务默认端口为6379。因此,Addr在本实例项目中的配置值为127.0.0.1:6379。

  • Password: 登陆Redis的密码。默认配置为空。

  • Prefix:为要保存的所有的内容设置公共的前缀。默认设置为空。

  • IdleTimeout:设置Redis中的生效时长。这里我们设置time.Duration(24) * time.Hour。在实际的开发过程中,开发者可以根据自己的需求设定Redis的生效时长。

Redis在配置文件中的配置情况如下:

{
"app_name": "CmsProject",
"port": "8080",
"static_path": "/manage/static",
"database": {
  "drive": "mysql",
  "port": "3306",
  "user": "root",
  "pwd": "271400",
  "database": "qfCms"
},
"redis": {
  "network": "tcp",
  "addr": "127.0.0.1",
  "port": "6379",
  "prefix": ""
},
"mode": "dev"
}

Redis连接对象实例化

我们通过读取配置文件完成配置内容的读取,利用Redis配置信息实例化Redis对象,Redis实例化如下:


var once sync.Once

/**
* 返回Redis实例
*/
func NewRedis() *redis.Database {

var database *redis.Database

once.Do(func() {
//项目配置
cmsConfig := config.InitConfig()
rd := cmsConfig.Redis
database = redis.New(service.Config{
Network:     rd.NetWork,
Addr:       rd.Addr + ":" + rd.Port,
IdleTimeout: time.Duration(24) * time.Hour,
Prefix:     rd.Prefix,
})
}) return database
}

Redis的实例化使用到了单例方式实现。

将Session存储方式设置为Redis

redis := datasource.NewRedis()
//设置session的同步位置为redis
sessManager.UseDatabase(redis)

实战项目中Redis的操作与实现

  • Redis缓存管理员统计功能

    adminStatis := sc.Session.Get(ADMINMODULE + date)
    if adminStatis != nil {
    adminStatis = adminStatis.(int64)
    return mvc.Response{
    Object: map[string]interface{}{
    "status": utils.RECODE_OK,
    "count": adminStatis,
    },
    }
    } else {
    result = sc.Service.GetAdminDailyCount(date)
    sc.Session.Set(ADMINMODULE, result)
    }
  • Redis缓存订单统计功能

    orderStatis := sc.Session.Get(ORDERMODULE + date)

    if orderStatis != nil {
    orderStatis = orderStatis.(int64)
    return mvc.Response{
    Object: map[string]interface{}{
    "status": utils.RECODE_OK,
    "count": orderStatis,
    },
    }
    } else {
    result = sc.Service.GetOrderDailyCount(date)
    sc.Session.Set(ORDERMODULE+date, result)
    }
  • Redis缓存用户统计功能

    userResult := sc.Session.Get(USERMODULE + date)
    if userResult != nil {
    result = userResult.(int64)
    return mvc.Response{
    Object: map[string]interface{}{
    "status": utils.RECODE_OK,
    "count": userResult,
    },
    }
    } else {
    iris.New().Logger().Error(date) //时间
    result = sc.Service.GetUserDailyCount(date)
    //设置缓存
    sc.Session.Set(USERMODULE+date, result)
    }

查看Redis存储效果

  • 开启Redis服务 在Mac下,启动redis服务使用如下命令:redis

  • 开启Redis-cli客户端 在MacOS系统下,启动redis-cli工具的命令:redis-cli 如上我们可以通过keys命令来查看我们存储的所有的内容

  • get key读取具体信息 在查询所对应的key的redis存储内容值。

go语言实战教程:Redis实战项目应用的更多相关文章

  1. go语言实战教程:实战项目资源导入和项目框架搭建

    从本节内容开始,我们将利用我们所学习的Iris框架的相关知识,进行实战项目开发. 实战项目框架搭建 我们的实战项目是使用Iris框架开发一个关于本地服务平台的后台管理平台.平台中可以管理用户.商品.商 ...

  2. Redis实战 | 持久化、主从复制特性和故障处理思路

    前言 前面两篇我们了解了Redis的安装.Redis最常用的5种数据类型.本篇总结下Redis的持久化.主从复制特性,以及Redis服务挂了之后的一些处理思路. 前期回顾传送门: Linux下安装Re ...

  3. Github上可以涨薪30k的Java教程和实战项目终于可以免费下载了

    写在前面 大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架.软件或者教程.这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整 ...

  4. 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具

    iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...

  5. 【ASP.NET实战教程】ASP.NET实战教程大集合,各种项目实战集合

    [ASP.NET实战教程]ASP.NET实战教程大集合,各种项目实战集合,希望大家可以好好学习教程中,有的比较老了,但是一直很经典!!!!论坛中很多小伙伴说.net没有实战教程学习,所以小编连夜搜集整 ...

  6. Java工程师之Redis实战系列教程前言&目录

    系列前言 Java工程师之Redis实战系列教程,同其他教程一样,均是在下学习笔记,本系列主要参考自<Redis-in-action>,将书本中的有趣的例子转化为能解决特定问题的示例程序, ...

  7. .Net Core实战教程(一):Linux下搭建项目

    .Net Core实战教程(一):Linux下搭建项目 附言 .net core 1.0的时候就开始关注了,一直没有用于项目.真正用于项目我是2.0开始使用的.这几年也总结出一些经验.最近有空就写出来 ...

  8. 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01

    书接上回,我们已经安装好Iris框架,并且构建好了Iris项目,同时配置了fresh自动监控项目的实时编译,万事俱备,只欠东风,彩虹女神蓄势待发.现在我们来看看Iris的基础功能,如何编写项目入口文件 ...

  9. 【转】mybatis实战教程(mybatis in action),mybatis入门到精通

    MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis ...

随机推荐

  1. 压缩包法安装mysql

    之前一直安装mysql,我一直是用压缩包安装的.如果之前安装过Mysql,必须要删除注册文件,才能把Mysql彻底删除了. 先在官网下载mysql的版本.下载package版本,即.zip版本的.下载 ...

  2. [C++] How to prevent memory leaks

    How to prevent memory leaks ? overload new/delete

  3. TensorFlow全新的数据读取方式:Dataset API入门教程

    TensorFlow.data : http://tech.ifeng.com/a/20171109/44752505_0.shtml Pytorch:https://ptorch.com/docs/ ...

  4. HBase列族高级配置

    转自:http://blog.sina.com.cn/s/blog_ae33b83901018euz.html ------------------ HBase有几个高级特性,在你设计表时可以使用.这 ...

  5. 【转载】redis优化配置和redis.conf说明

    转载地址:http://blog.csdn.net/luozhonghua2014/article/details/40568707?utm_source=tuicool&utm_medium ...

  6. mysql问题,出现 Cant connect to mysql server on 'localhost'

    莫名其妙的一个问题,这个问题出现在今天,然后查找下,发现需要重启服务器,但是重启也一样,于是关机重启,还是这个现象 ,然后看到 错误提示, 提示my.ini的第21行,产生错误,于是按照路径找到配置文 ...

  7. 15 输入三个整数x,y,z,请把这三个数由小到大输出。

    题目:输入三个整数x,y,z,请把这三个数由小到大输出. public class _015ThreeNumberSort { public static void main(String[] arg ...

  8. 解决NIOS II工程移动在磁盘上位置后project无法编译问题

    说明:本文档于2017年3月4日由小梅哥更新部分内容,主要是增加了讲解以Quartus II13.0为代表的经典版本和以15.1为代表的更新版本之间,解决问题的一些小的差异. 如果用户只是想快速解决问 ...

  9. kafka的api操作(官网http://kafka.apache.org/documentation/#producerapi)

    Kafka API 简单用法 本篇会用到以下依赖:(本人包和这个不同,去maven里查找) <dependency><groupId>org.apache.kafka</ ...

  10. New Year, New Devs: Sharpen your C# Skills

    At the beginning of each new year, many people take on a challenge to learn something new or commit ...