0

0

Go Redis Crud 快速示例

PHPz

PHPz

发布时间:2024-08-18 09:21:03

|

680人浏览过

|

来源于dev.to

转载

go redis crud 快速示例

安装依赖和环境变量

将数据库连接中的值替换为您的值。

#env file
redis_address=localhost
redis_port=6379
redis_password=123456
redis_db=0

#install on go
go get github.com/redis/go-redis/v9

redis管理器

创建一个文件来管理.go 这将包含一个方法来获取与redis的连接,例如在其他模块和服务中。

保洁家政服务公司网站模板(响应式)1.4.2
保洁家政服务公司网站模板(响应式)1.4.2

人人站CMS是全新内核且开源免费的PHP企业网站开发建设管理系统,是一套高效、简洁、 强悍的PHP CMS源码,能够满足各类企业网站开发建设的需要。系统采用简单的模板标签,只要懂HTML就可快速开发企业网站。官方提供了大量网站模板免费下载和使用,将致力于为广大站长和企业提供简单易用的网站开发建设解决方案。模板特点: 1、安装即用,自带人人站CMS内核及企业站展示功能(产品,新闻,案例展示等),并可

下载
package main

import (
    "fmt"
    "github.com/redis/go-redis/v9"
    "os"
    "strconv"
)

const customerdb = 0

type redismanager struct {
    db     int
    client *redis.client
}

func newredisclient(customerdb int) (*redismanager, error) {
    address := os.getenv("redis_address")
    if address == "" {
        return nil, fmt.errorf("redis_address is not set")
    }
    password := os.getenv("redis_password")
    if password == "" {
        return nil, fmt.errorf("redis_password is not set")
    }
    port := os.getenv("redis_port")
    if port == " " {
        return nil, fmt.errorf("redis_port is not set")
    }
    db := os.getenv("redis_db")
    if db == "" {
        return nil, fmt.errorf("redis_db is not set")
    }
    redisdb, err := strconv.atoi(db)
    if err != nil {
        return nil, fmt.errorf("redis_db is not a number")
    }
    cli := redis.newclient(&redis.options{
        addr:     fmt.sprintf("%s:%s", address, port),
        password: password,
        db:       redisdb,
    })
    return &redismanager{
        client: cli,
        db:     customerdb,
    }, nil
}
func (rd *redismanager) setdb(db int) {
    rd.db = db
}

创建用于管理实体(客户)存储库的结构

创建一个结构体来管理redis连接并获取与redis实体交互的所有方法(crud操作和查询)
有了这个结构,任何时候我们需要访问实体(客户)数据,我们都可以实例化并开始将其用作存储库模式。

type customerrepo struct {
    cli *redismanager
    db  int
}

func newcustomerrepo() (*customerrepo, error) {
    cli, err := newredisclient(customerdb)
    if err != nil {
        return nil, err
    }
    return &customerrepo{
        cli: cli,
    }, nil
}

创建结构体实体

在客户实体上添加与面包字段映射的标签。
redis:“-”与要保存在redis上的字段解除关系。如果您想要一个文件或结构不保存,请不要添加标签。

type customer struct {
    id    string `redis:"id"`
    name  string `redis:"name"`
    email string `redis:"email"`
    phone string `redis:"phone"`
    age   int    `redis:"age"`
}

增删改查方法

存储、更新或从实体获取信息的方法示例。
这些方法是从 customersrepo 实体使用的。
他们收到包含信息的客户实体,并根据操作返回结果。

保存新记录

func (c *customerrepo) save(customer *customer) error {
    return c.cli.client.hset(context.todo(), customer.id, customer).err()
}

获取id记录

func (c *customerrepo) get(id string) (*customer, error) {
    customer := &customer{}
    resmap := c.cli.client.hgetall(context.todo(), id)
    if resmap.err() != nil {
        return nil, resmap.err()
    }
    if len(resmap.val()) == 0 {
        return nil, nil
    }
    err := resmap.scan(customer)
    if err != nil {
        return nil, err
    }
    return customer, nil
}

更新一条新记录

func (c *customerrepo) update(customer *customer) error {
    return c.cli.client.hset(context.todo(), customer.id, customer).err()
}

删除一条新记录

func (c *CustomerRepo) Delete(id string) error {
    return c.Cli.Client.Del(context.TODO(), id).Err()
}

查看代码示例

redis 测试示例

相关专题

更多
golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

193

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

186

2025.07.04

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

956

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

621

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

472

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

396

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

389

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

442

2024.04.07

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号