[go]redis基本使用
redis 数据结构操作
import (
	"github.com/garyburd/redigo/redis"
)       
// set
c, err := redis.Dial("tcp", "localhost:16379")
_, err = c.Do("Set", "abc", 100)
r, err := redis.Int(c.Do("Get", "abc"))
//mset
_, err = c.Do("MSet", "abc", 100, "efg", 300)
r, err := redis.Ints(c.Do("MGet", "abc", "efg"))
//list
_, err = c.Do("lpush", "book_list", "abc", "ceg", 300)
r, err := redis.String(c.Do("rpop", "book_list"))
//hash字典
_, err = c.Do("HSet", "books", "abc", 100)
r, err := redis.Int(c.Do("HGet", "books", "abc"))
//超时
_, err = c.Do("expire", "abc", 10)
redis连接池
package main
import (
	"fmt"
	"github.com/garyburd/redigo/redis"
	"time"
)
var pool *redis.Pool
//初始化一个pool
func newPool(server, password string) *redis.Pool {
	return &redis.Pool{
		MaxIdle:     64,
		MaxActive:   1000,
		IdleTimeout: 240 * time.Second,
		Dial: func() (redis.Conn, error) {
			c, err := redis.Dial("tcp", server)
			if err != nil {
				return nil, err
			}
			/*
			   if _, err := c.Do("AUTH", password); err != nil {
			   c.Close()
			   return nil, err
			   }*/
			return c, err
		},
		TestOnBorrow: func(c redis.Conn, t time.Time) error {
			if time.Since(t) < time.Minute {
				return nil
			}
			_, err := c.Do("PING")
			return err
		},
	}
}
func main() {
	pool = newPool("localhost:16379", "")
	for {
		time.Sleep(time.Second)
		conn := pool.Get()
		conn.Do("set", "abc", 100)
		r, err := redis.Int(conn.Do("get", "abc"))
		if err != nil {
			fmt.Printf("do failed, err:%v\n", err)
			continue
		}
		fmt.Printf("get from redis, result:%v\n", r)
	}
	/*
		c, err := redis.Dial("tcp", "localhost:16379")
		if err != nil {
			fmt.Println("conn redis failed,", err)
			return
		}
		defer c.Close()
		_, err = c.Do("Set", "abc", 100)
		if err != nil {
			fmt.Println(err)
			return
		}
		r, err := redis.Int(c.Do("Get", "abc"))
		if err != nil {
			fmt.Println("get abc failed,", err)
			return
		}
		fmt.Println("get from redis", r)
	*/
}
[go]redis基本使用的更多相关文章
- 使用redis构建可靠分布式锁
		关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了. 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下 1. 数据库实现方式 优点:易理解 缺 ... 
- Ignite性能测试以及对redis的对比
		测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ... 
- mac osx 安装redis扩展
		1 php -v查看php版本 2 brew search php|grep redis 搜索对应的redis ps:如果没有brew 就根据http://brew.sh安装 3 brew ins ... 
- Redis/HBase/Tair比较
		KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式 支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ... 
- Redis数据库
		Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有 ... 
- redis 学习笔记(2)
		redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ... 
- redis 学习笔记(1)
		redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格 ... 
- python+uwsgi导致redis无法长链接引起性能下降问题记录
		今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ... 
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
		本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ... 
- windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)
		本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ... 
随机推荐
- Systemd: Service File Examples
			大多数Linux发行版使用 systemd作为系统服务管理工具. systemctl是systemd的主要命令,用于管理控制服务. 这篇文章中将介绍如何创建允许你使用systemctl命令的sysyt ... 
- linux usb驱动记录(二)
			三.usb设备的识别过程 在这里梳理一下上一篇博客中的内容:(这张图来自https://blog.csdn.net/lizuobin2/article/details/51931161) 上一篇博客刚 ... 
- git 版本落后推送错误
			http://114.215.90.144/student_association/student.git ! [rejected] master -> master (non- ... 
- linux 的环境变量的配置文件
			原文:https://www.cnblogs.com/yuemw/p/8081219.html ---------------------------------------------------- ... 
- Mysql数据库备份—-通过LVM快照实现备份还原
			一.实验环境 一台测试机:A(172.18.30.1) 操作系统:Centos7 操作对象数据库版本:mariadb-10.2 二.实现目的 从A机器(172.18.30.1)简单搭建数据库,创建测试 ... 
- 软件测试常用的linux命令
			不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个.这里我把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍. ◆ 安装和登录命令:logi ... 
- 从mysql8.0读取数据并形成pandas dataframe类型数据,精确定位行列式中的元素,并读取
			from pandas import * import pandas as pd from sqlalchemy import create_engine engine = create_engine ... 
- 嵌入式linux修改日期时间
			命令格式为: date -s 时间字符串 例如只修改系统的日期,不修改时间(时分秒) date -s 2012-08-02 或只修改时间不修改日期 date -s 10:08:00 当然也可以同时修改 ... 
- MULTIPOLYGON、POLYGON   封装为echart  geoJson  数据封装
			一.环境.问题简述: 1.采用的事前后端分离,后端需要封装将点位获取的点位信息封装为geoJson数据类型,供前端利用echart 绘制地图: 2.思路:简单理解geoJson,将对应坐标点位封装为g ... 
- vue-cli3项目首页加载速度优化(cdn加速,路由懒加载,gzip压缩)
			今天打算上线vue的单页面项目,上线后,首页加载速度巨慢! 原因是项目上线后,网速不够快,加载js,css等资源很慢, 打开打包好的文件发现chunk-vendors.xxxxxxx.js的包很大,达 ... 
