项目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. 使用火狐浏览器访问双向认证的k8s api

    首先 不能在火狐里对要访问的网址添加例外 打开 选项->高级->查看证书->证书机构->导入.先择服务端ca.crt后根据提示导入证书 生成p12文件 openssl pkcs ...

  2. 用Pylint规范化Python代码,附PyCharm配置

    Pylint一个可以检查Python代码错误,执行代码规范的工具.它还可以对代码风格提出建议. 官网:https://pylint.readthedocs.io pip install pylint ...

  3. HttpServletResponse返回页面弹窗

    下载方法: @RequestMapping(value = "/download.htm") public void downLoadFile(String id,HttpServ ...

  4. R包安装失败failed to download mirrors file

    在R console中使用install.packages()来安装第三方包时,会出现这样的错误: 即使我们选择的是China的镜像也解决不了问题. 这时候,可以先试试用IE打开上图中黑底部分的URL ...

  5. java.util.regex.PatternSyntaxException, dangling metacharacter “?” 解决方法

    今天在用正则表达式的时候遇到这样一个异常 看了相关资料后发现这是因为在正则表达式中,像"?","*","\"都是保留字符,所以在用的时候需要 ...

  6. 3-为什么很多 对 1e9+7(100000007)取模

    首先有很多题目的答案是很大的,然而出题人的本意也不是让选手写高精度或者Java,所以势必要让答案落在整型的范围内.那么怎么做到这一点呢,对一个很大的质数取模即可(自行思考为什么不是小数).那么如果您学 ...

  7. 一张图5分钟熟悉MarkDown的基本语法

    看到zealer上面有介绍MarkDown的,以前在老罗的发布会也听说过,说锤子便签支持MarkDown,但是不知道有什么用,现在来看看,确实不错. MarkDown的好处是让你可以专注于写字本身,而 ...

  8. WIFI配置专项测试

    1. 测试项目 A. 路由器加密方式测试: B. 路由器信道选择测试: C. DHCP过期时间测试 D. 路由器WIFI密码复杂度测试: 2. 测试结果 2.1. 加密方式测试 路由器密码为简单,其他 ...

  9. python准确判断文件类型

    判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而大家都知道后缀在linux系统下 ...

  10. 白盒测试实践-任务进度-Day05

    所使用静态代码检查工具 阿里巴巴Java开发代码检测IDE插件 小组成员 华同学.郭同学.覃同学.刘同学.穆同学.沈同学 任务进度 任务已经进入收官阶段,为了对大家各自任务完成情况进行确认,保证任务能 ...