Beego里对Redis的连接

Beego官方文档有连接Redis的说明,不过很简短。在这里,我把连接Redis的代码晒出来,跟大家分享一下。

package utils

import (
	"encoding/json"
	"github.com/astaxie/beego"
	_ "github.com/astaxie/beego/cache/redis"
	"github.com/astaxie/beego/cache"
	"github.com/astaxie/beego/logs"
	"github.com/astaxie/beego/orm"
)

var Cache cache.Cache

func init() {
	collectionName := beego.AppConfig.String("cache.collectionName")
	conn := beego.AppConfig.String("cache.conn")
	dbNum := beego.AppConfig.String("cache.dbNum")
	//password := beego.AppConfig.String("cache.password")
	// 设置配置参数
	config := orm.Params{
		"key": collectionName,
		"conn": conn,
		"dbNum": dbNum,
		//"password": password,
	}
	configStr, err := json.Marshal(config)
	logs.Debug(string(configStr))
	if err != nil {
		logs.Error("redis配置模型转换失败")
		return
	}
	Cache,err = cache.NewCache("redis",string(configStr))
	if err != nil {
		logs.Error("redis初始化失败")
		return
	}
	logs.Info("******************************************************************************")
	logs.Info("********************************redis启动成功**********************************")
	logs.Info("******************************************************************************")
}

这里有个坑
key的值为缓存数据在redis中的hashmap的表名,若不设置key的值,则默认为beecacheRedis。

Beego官方有Redis存取方法的说明,在这里就不一一赘述了。

不过大家要注意,此方法把数据存在一个hashmap里了,不是字符串,所以用的时候一定要想清楚了。

若是想用字符串的方式,可以用Redigo。

// tcp连接redis
 
  rs, err := redis.Dial("tcp", host)
 
  // 操作完后自动关闭 
 
  defer rs.Close()
 
 // 操作redis时调用Do方法,第一个参数传入操作名称(字符串),然后根据不同操作传入key、value、数字等
 // 返回2个参数,第一个为操作标识,成功则为1,失败则为0;第二个为错误信息
 value, err := redis.String(rs.Do("GET", key))
 if err != nil {
    fmt.Println("fail")
 }
 
 若value的类型为int,则用redis.Int转换
 
 若value的类型为string,则用redis.String转换
 
 若value的类型为json,则用redis.Byte转换
 
 // 存json数据
 key := "aaa"
 imap := map[string]string{"key1": "111", "key2": "222"}
 // 将map转换成json数据
 value, _ := json.Marshal(imap)
 // 存入redis
 n, err := rs.Do("SETNX", key, value)
 if err != nil {
     fmt.Println(err)
 }
 if n == int64(1) {
     fmt.Println("success")
 }

go 操作redis的一些坑

Beego 使用 Redis 存储字符串,Get 返回的是 interface{} 类型,必须要做这样的转换

redis里面set []byte 类型, get的时候用unmarshal反序列化得到struct 或者 []byte转换成string

bm, error := cache.NewCache("redis", `{"conn":"127.0.0.1:6379","key":"collectionName","dbNum":"0","password":""}`)
if error != nil {
    fmt.Println("redis error:", error)
}
bm.Put("test", "hello", time.Second*100)
v := bm.Get("test")
fmt.Println("value:", string(v.([]byte)))
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中连接Docker容器中的Redis,你可以使用`docker-py`模块,它允许你以编程方式管理Docker容器。你可以在命令行中使用以下命令安装: ``` pip install docker ``` 然后,在Python脚本中,你可以使用以下代码来连接Docker容器中的Redis: ```python import docker import redis # 创建Docker客户端 client = docker.from_env() # 启动Redis容器 container = client.containers.run('redis', detach=True) # 获取Redis容器的IP地址和端口号 redis_host = container.attrs['NetworkSettings']['IPAddress'] redis_port = 6379 # 创建Redis连接 r = redis.Redis(host=redis_host, port=redis_port, db=0) # 设置键值对 r.set('key', 'value') # 获取键值对 value = r.get('key') print(value) # 停止并删除Redis容器 container.stop() container.remove() ``` 在上面的代码中,我们首先导入`docker`和`redis`模块。然后,我们使用`docker.from_env()`方法创建Docker客户端。 接下来,我们使用`client.containers.run()`方法启动Redis容器,并将其作为后台进程运行(`detach=True`)。该方法返回一个容器对象,我们可以使用该对象来管理容器。 然后,我们使用容器对象的`attrs`属性来获取Redis容器的IP地址和端口号。我们可以使用这些值来创建Redis连接。 接下来,我们使用`r.set`方法设置键值对,使用`r.get`方法获取键值对的值。最后,我们使用容器对象的`stop()`和`remove()`方法停止并删除Redis容器。 注意,这只是一个简单的示例,你需要根据你的实际情况进行适当的修改。另外,你需要在Docker中安装Redis镜像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值