go语言实战教程:Redis实战项目应用
项目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实战项目应用的更多相关文章
- go语言实战教程:实战项目资源导入和项目框架搭建
从本节内容开始,我们将利用我们所学习的Iris框架的相关知识,进行实战项目开发. 实战项目框架搭建 我们的实战项目是使用Iris框架开发一个关于本地服务平台的后台管理平台.平台中可以管理用户.商品.商 ...
- Redis实战 | 持久化、主从复制特性和故障处理思路
前言 前面两篇我们了解了Redis的安装.Redis最常用的5种数据类型.本篇总结下Redis的持久化.主从复制特性,以及Redis服务挂了之后的一些处理思路. 前期回顾传送门: Linux下安装Re ...
- Github上可以涨薪30k的Java教程和实战项目终于可以免费下载了
写在前面 大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架.软件或者教程.这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整 ...
- 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具
iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...
- 【ASP.NET实战教程】ASP.NET实战教程大集合,各种项目实战集合
[ASP.NET实战教程]ASP.NET实战教程大集合,各种项目实战集合,希望大家可以好好学习教程中,有的比较老了,但是一直很经典!!!!论坛中很多小伙伴说.net没有实战教程学习,所以小编连夜搜集整 ...
- Java工程师之Redis实战系列教程前言&目录
系列前言 Java工程师之Redis实战系列教程,同其他教程一样,均是在下学习笔记,本系列主要参考自<Redis-in-action>,将书本中的有趣的例子转化为能解决特定问题的示例程序, ...
- .Net Core实战教程(一):Linux下搭建项目
.Net Core实战教程(一):Linux下搭建项目 附言 .net core 1.0的时候就开始关注了,一直没有用于项目.真正用于项目我是2.0开始使用的.这几年也总结出一些经验.最近有空就写出来 ...
- 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01
书接上回,我们已经安装好Iris框架,并且构建好了Iris项目,同时配置了fresh自动监控项目的实时编译,万事俱备,只欠东风,彩虹女神蓄势待发.现在我们来看看Iris的基础功能,如何编写项目入口文件 ...
- 【转】mybatis实战教程(mybatis in action),mybatis入门到精通
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis ...
随机推荐
- Android中的网络编程
谷歌在Android6.0之后就废弃了使用HttpClinet进行网络连接.所以,这里需要重点学习的是通过HttpUrlConnect进行网络连接. String path="这里是你想要的 ...
- java基于feemarker 生成word文档(超级简单)
问题由来: 开发个新需求,需要按规定导出word文档,文档截图如下 因为之前没做过这个,一脸懵B啊,导出excel和txt倒是经常接触到,对于这个word这种格式不严谨的文件怎么处理呢? 技术选型:可 ...
- java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~
项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T& ...
- react.js 各种小测试笔记
首先看一个 基础html 至于其中的 js 问价大家去官网下载就好了. <html> <head> <script src="../build/react.j ...
- HBase环境搭建随记
====软件版本==== jdk:jdk-8u77-linux-x64.tar.gz zookeeper:zookeeper-3.4.6.tar.gz hadoop:hadoop-2.7.4.tar. ...
- 通过input上传图片,判断不同浏览器及图片类型和大小的js代码
1.jsp页面代码 <form id="userPhoto" name="userPhoto" method="post" actio ...
- SpringMVC 2.5.6 +Hibernate 3.2.0
spring MVC配置详解 现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时 ...
- bootstrap导入JavaScript插件
Bootstrap的JavaScript插件可以单独导入到页面中,也可以一次性导入到页面中.因为在Bootstrap中的JavaScript插件都是依赖于jQuery库,所以不论是单独导入还一次性导入 ...
- servler配置
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...
- [GO]无缓冲通道(unbuffered channel)
无缓冲通道(unbuffered channel)是指在接收前没有能力保存任何值的通道,在之前的例子中使用的都是无缓冲通道,需要注意的是,对于无缓冲通道而言,不管是往通道里写数据还是从通道里读数据,都 ...