在 Ubuntu 上搭建单机版 Redis
为什么用到 Redis?
最近开发一个类似抢拍的拍卖 App;有个环节是需要秒刷新的,而且多少个商品同时需求秒请求订单数据,这时想想长期以往 MySQL 肯定应付不了, 所以采用了内存数据库的方案,当然就先到 Redis 了;其实 memcached 也是比较好的选择,但后期的数据结构需保留一定的灵活性,所以选择了 Redis。终端请求的数据,生命周 ... 阅读全文
优雅地关闭 Go HTTP 服务
Go 1.8 之后,http.Server 增加了 Shutdown 函数,类似于第三方的 graceful 插件一样,可以平滑的关闭自身 HTTP 服务了,我们看看代码:
package main
import (
"context"
"github.com/urfave/negroni"
"log"
"net/http"
"os"
"os/signal"
"time"
)
func main(){
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.Response ... 阅读全文
Go 定时器 cron 表达式的使用
上次在《Go 定时器 cron 的使用》里说 cron 简单使用方法,如果想更灵活的使用定时,可能会涉及到更复杂的六位表达式的使用方法,如每半小时执行一次:
0 30 * * * *
六位的表达式看起来,有点费解,好比正则表达式一样,我们需要按步骤来理解;
理解六个作用域的意义
0 0 0 1 1 *
0 0 0 1 * *
0 0 0 * * 0
0 0 0 * * *
0 0 * * * *
... 阅读全文
Go 定时器 cron 的使用
cron 是 robfig 开发的一个定时作业库,robfig 总是想的比别人早,给了我们这些 Gopher 不少急需的东西,想当年 revel 的出现也是这样的。看看 cron 的使用,还是一如既往的简洁明了,发现 Go 的世界里,有些产品还是有鲜明的个人特质的,那就是所谓的个人魅力吧?!
总之 robfig 开发的产品都是有一定超前性,比较有理论基础,使用起 ... 阅读全文
Negroni 应用教程系列(二)
在介绍 Negroni 经典实例三大组件:日志 Logger,异常 Recovery,静态文件 Static 之前,需要说说它们采用的底层内幕,那就是中间件。Negroni 负责把一个个中间件链接起来,按照顺序逐一执行,形成一个中间件链。
Negroni 中间件实质是一个接口,名为 Handler,我们看看它的定义:
type Handler interface {
ServeHTTP(rw http.Respon ... 阅读全文
Negroni 应用教程系列(一)
创建一个 Web 服务器
Negroni 本身和 Go 语言哲学是一脉相承的,这是作者的初衷。我们看看怎么创建一个 Web 服务器。
新建一个 server.go 文件,代码如下:
package main
import (
"fmt"
"net/http"
"github.com/urfave/negroni"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, req *ht ... 阅读全文
第 1 页,共 6 条记录,共 1 页