Golang redigo hmset hset 问题

最近公司项目,换到了golang 下面来开发,遇到了redis存储链表的问题,困扰了我好几天,后面静下心来,好好读了一下源码,发现官方的例子,最终还是羊毛出在羊身上

c, err := dial()
    if err != nil {
        panic(err)
    }
    defer c.Close()

    var p1, p2 struct {
        Title  string `redis:"title"`
        Author string `redis:"author"`
        Body   string `redis:"body"`
    }

    p1.Title = "Example"
    p1.Author = "Gary"
    p1.Body = "Hello"

    if _, err := c.Do("HMSET", redis.Args{}.Add("id1").AddFlat(&p1)...); err != nil {
        panic(err)
    }

    m := map[string]string{
        "title":  "Example2",
        "author": "Steve",
        "body":   "Map",
    }

    if _, err := c.Do("HMSET", redis.Args{}.Add("id2").AddFlat(m)...); err != nil {
        panic(err)
    }

    for _, id := range []string{"id1", "id2"} {

        v, err := redis.Values(c.Do("HGETALL", id))
        if err != nil {
            panic(err)
        }

        if err := redis.ScanStruct(v, &p2); err != nil {
            panic(err)
        }

        fmt.Printf("%+v\n", p2)
    }
时间: 2024-10-26 15:57:39

Golang redigo hmset hset 问题的相关文章

Redis最有用的中文资源,你值得拥有

只是为了记录资源地址,最好直接访问doc.redisfans.com更美观 Redis 命令参考 本文档是 Redis Command Reference 和 Redis Documentation 的中文翻译版: 所有 Redis 命令文档均已翻译完毕, Redis 最重要的一部分主题(topic)文档, 比如事务.持久化.复制.Sentinel.集群等文章也已翻译完毕. 文档目前描述的内容以 Redis 2.8 版本为准, 查看更新日志(change log)可以了解本文档对 Redis 2

Jedis操作Redis--Hash类型

/** * Hash(哈希表) * HDEL,HEXISTS,HGET,HGETALL,HINCRBY,HINCRBYFLOAT,HKEYS,HLEN,HMGET,HMSET, HSET,HSETNX,HVALS,HSCAN,HSTRLEN */ public class HashTypeTest { private Jedis jedis; private static final String KEY = "hash"; private static final String FI

Redis 命令参考

本文档是 Redis Command Reference 和 Redis Documentation 的中文翻译版: 所有 Redis 命令文档均已翻译完毕, Redis 最重要的一部分主题(topic)文档, 比如事务.持久化.复制.Sentinel.集群等文章也已翻译完毕. 文档目前描述的内容以 Redis 2.8 版本为准, 查看更新日志(change log)可以了解本文档对 Redis 2.8 所做的更新. 你可以通过网址 doc.redisfans.com 在线阅览本文档, 也可以下

在 CentOS7 之部署 Redis3

CentOS7 之 Redis3 学习笔记 1 Redis 官网: http://www.redis.io/ 2 Redis 的下载地址: http://download.redis.io/releases/redis-3.0.7.tar.gz 这里我们下载的是 redis-3.0.7.tar.gz 3 Redis 的简介: Redis is an open source (BSD licensed), in-memory data structure store, used as databa

一篇博客搞定redis基础

redis简介 redis 一款高性能key-value数据库,实际上多用作缓存队列或者消息分发(celery),但是最常常被用来做缓存. redis安装 源码安装 $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make 命令安装 $sudo apt-get update $sudo apt-get install red

phpredis命令

<?php //redis //检查一个扩展是否已经加载.大小写不敏感. if (!function_exists('redis')) { echo '不支持 redis'; return ; } redis(); function redis(){ //Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. //Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. //Redis支持数据的

golang操作Redis(redigo基础篇)

现在的redis大红大紫,而且很多应用场景都适合使用Reids来做缓存或者直接做存储,典型的如mysql前端缓存.手游里面的排行榜等.那么我们怎样用golang来操作redis呢? 熟悉redis的同学,肯定第一反应就是按照redis的协议,实现一个客户端与redis服务进行通信即可.不熟悉redis的同学,可能会说用cgo封装下官方的c客户端,妥妥的.是的,这两种方法都可以.既然redis这么火,那么这些工作有没有人做呢?答案是肯定的.在redis的官方网站的客户端列表里就有众多golang的

redis mysql 连接池 之 golang 实现

分享一下 golang 实现的 redis 和 mysql 连接池,可以在项目中直接引用连接池句柄,调用对应的方法. 举个栗子: 1 mysql 连接池的使用 (1) 在项目子目录放置 mysql.go (2)在需要调用的地方导入连接池句柄 DB (3)调用 DB.Query() 2 redis 连接池的使用 (1)在项目子目录放置 redis.go (2)在需要调用的地方导入连接池句柄 Cache (3)调用 Cache.SetString ("test_key", "te

golang 操作 Redis &amp; Mysql &amp; RabbitMQ

golang 操作 Redis & Mysql & RabbitMQ Reids 安装导入 go get github.com/garyburd/redigo/redis import "github.com/garyburd/redigo/redis" 链接 github:https://github.com/antirez/redis Doc:http://godoc.org/github.com/garyburd/redigo/redis Redis全套使用:ht