当前位置:网站首页>Go: go - redis based operation
Go: go - redis based operation
2022-07-30 08:03:00 【pedestrians have】
The vast earth was shattered with a single sword,Where is the prosperous song and song fall
具体代码在:https://gitee.com/hjx_RuGuoYunZhiDao/strom-huang-go/tree/master/go_redis
1、下载go-redis库
go get github.com/go-redis/redis
2、 初始化redis
import (
"fmt"
"github.com/go-redis/redis"
)
// 声明一个全局的redisDb变量
var redisDb *redis.Client
func initRedisClient() (err error) {
redisDb = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
Password: "",
DB: 0,
})
_, err = redisDb.Ping().Result()
if err != nil {
return err
}
return nil
}
2.1 、 链接redis
func main() {
err := initRedisClient()
if err != nil {
//redis连接错误
panic(err)
}
fmt.Println("Redis连接成功")
}
3.0、基础操作
3.1 、get/set
func main() {
err := initRedisClient()
if err != nil {
//redis连接错误
panic(err)
}
fmt.Println("Redis连接成功")
var key string = "test-key"
var keyValue string = "test"
err = redisDb.Set(key, keyValue, 0).Err()
if err != nil {
panic(err)
}
var value string
value, err = redisDb.Get("test-key").Result()
if err != nil {
panic(err)
}
fmt.Println("key:", value)
}
3.2 、getSet / setNx
func main() {
err := initRedisClient()
if err != nil {
//redis连接错误
panic(err)
}
fmt.Println("Redis连接成功")
var key string = "test-key"
var keyValue string = "test"
var oldValue string
oldValue, err = redisDb.GetSet(key, "test").Result()
if err != nil {
panic(err)
}
fmt.Println(oldValue)
//如果key不存在,则设置这个key的值,并设置key的失效时间.如果key存在,则设置不生效
err = redisDb.SetNX(key, "test", 0).Err()
if err != nil {
panic(err)
}
}
3.3 、MSet / MGet :批量设置
func main() {
err := initRedisClient()
if err != nil {
//redis连接错误
panic(err)
}
fmt.Println("Redis连接成功")
//批量设置多个key-value值
err = redisDb.MSet("key1", "value1", "key2", "value2").Err()
if err != nil {
panic(err)
}
// MGet函数可以传入任意个key,一次性返回多个值.
// 这里Result返回两个值,第一个值是一个数组,第二个值是错误信息
values, err := redisDb.MGet("key1", "key2", "key3").Result()
if err != nil {
panic(err)
}
fmt.Println(values)
}
3.4 、Incr/ Decr:自增/自减
func main() {
err := initRedisClient()
if err != nil {
//redis连接错误
panic(err)
}
fmt.Println("Redis连接成功")
//Incr()设置一个age测试自增、自减
err = redisDb.Set("number", "0", 0).Err()
if err != nil {
panic(err)
}
redisDb.Incr("number") // 自增
redisDb.IncrBy("number", 10) // 自增 +10
val, err = redisDb.Get("number").Result()
if err != nil {
panic(err)
}
fmt.Println(val)
redisDb.Decr("number") // 自减
redisDb.DecrBy("number", 3) //-3 此时age的值是22
val, err = redisDb.Get("number").Result()
if err != nil {
panic(err)
}
fmt.Println(val)
}
3.5 、GetRange/ Append / StrLen:字符串截取 /追加/长度
func main() {
err := initRedisClient()
if err != nil {
//redis连接错误
panic(err)
}
fmt.Println("Redis连接成功")
//GetRange() : key,start-从那个位置开始截取,endt-End from that position
val, err := redisDb.GetRange("test-key", 0, 4).Result()
if err != nil {
panic(err)
}
fmt.Println(val)
//会在key-value后面增加 '你好'
length, err := redisDb.Append("test-key", "你好").Result()
if err != nil {
panic(err)
}
fmt.Print("当前缓存key的长度", length)
var result string
result, err = redisDb.Get("test-key").Result()
fmt.Print(result)
//获取长度
num, err := redisDb.StrLen("test-key").Result()
if err != nil {
panic(err)
}
fmt.Printf("当前缓存key的长度为: %v\n", num)
//------------------ Del():删除 /Expire:设置过期时间---------------------------------------
var expire bool
expire, err = redisDb.Expire("test-key", 100).Result()
fmt.Print(expire)
var length2 int64
length2, err = redisDb.Del("test-key").Result()
fmt.Print(length2)
}
3.6 、Expire/ Del:过期时间/删除
func main() {
err := initRedisClient()
if err != nil {
//redis连接错误
panic(err)
}
fmt.Println("Redis连接成功")
//------------------ Del():删除 /Expire:设置过期时间---------------------------------------
var expire bool
expire, err = redisDb.Expire("test-key", 100).Result()
fmt.Print(expire)
var length2 int64
length2, err = redisDb.Del("test-key").Result()
fmt.Print(length2)
}
4、所有代码
package main
import (
"fmt"
"github.com/go-redis/redis"
)
// 声明一个全局的redisDb变量
var redisDb *redis.Client
func initRedisClient() (err error) {
redisDb = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
Password: "",
DB: 0,
})
_, err = redisDb.Ping().Result()
if err != nil {
return err
}
return nil
}
func main() {
err := initRedisClient()
if err != nil {
//redis连接错误
panic(err)
}
fmt.Println("Redis连接成功")
// ----------------------------------get/set------------------------
var key string = "test-key"
var keyValue string = "test"
err = redisDb.Set(key, keyValue, 0).Err()
if err != nil {
panic(err)
}
var value string
value, err = redisDb.Get("test-key").Result()
if err != nil {
panic(err)
}
fmt.Println("key:", value)
//------------------getSet / setNx---------------------------------------
var oldValue string
oldValue, err = redisDb.GetSet(key, "test").Result()
if err != nil {
panic(err)
}
fmt.Println(oldValue)
//如果key不存在,则设置这个key的值,并设置key的失效时间.如果key存在,则设置不生效
err = redisDb.SetNX(key, "test", 0).Err()
if err != nil {
panic(err)
}
//------------------MSet / MGet---------------------------------------
//批量设置多个key-value值
err = redisDb.MSet("key1", "value1", "key2", "value2").Err()
if err != nil {
panic(err)
}
// MGet函数可以传入任意个key,一次性返回多个值.
// 这里Result返回两个值,第一个值是一个数组,第二个值是错误信息
values, err := redisDb.MGet("key1", "key2", "key3").Result()
if err != nil {
panic(err)
}
fmt.Println(values)
//------------------GetRange():字符串截取 /Incr():增加+1 / IncrBy():按指定步长增加 /Decr 自减 /DecrBy Decrease the specified number of steps---------------------------------------
//GetRange() : key,start-从那个位置开始截取,endt-End from that position
val, err := redisDb.GetRange("test-key", 0, 4).Result()
if err != nil {
panic(err)
}
fmt.Println(val)
///Incr()设置一个age测试自增、自减
err = redisDb.Set("number", "0", 0).Err()
if err != nil {
panic(err)
}
redisDb.Incr("number") // 自增
redisDb.IncrBy("number", 10) // 自增 +10
val, err = redisDb.Get("number").Result()
if err != nil {
panic(err)
}
fmt.Println(val)
redisDb.Decr("number") // 自减
redisDb.DecrBy("number", 3) //-3 此时age的值是22
val, err = redisDb.Get("number").Result()
if err != nil {
panic(err)
}
fmt.Println(val)
//------------------ Append():追加 /StrLen():获取长度---------------------------------------
//会在key-value后面增加 '你好'
length, err := redisDb.Append("test-key", "你好").Result()
if err != nil {
panic(err)
}
fmt.Print("当前缓存key的长度", length)
var result string
result, err = redisDb.Get("test-key").Result()
fmt.Print(result)
num, err := redisDb.StrLen("test-key").Result()
if err != nil {
panic(err)
}
fmt.Printf("当前缓存key的长度为: %v\n", num)
//------------------ Del():删除 /Expire:设置过期时间---------------------------------------
var expire bool
expire, err = redisDb.Expire("test-key", 100).Result()
fmt.Print(expire)
var length2 int64
length2, err = redisDb.Del("test-key").Result()
fmt.Print(length2)
}
边栏推荐
猜你喜欢

redis实现分布式锁的原理

五号黯区靶场 mysql 注入之limit注入记录

AI元学习引入神经科学,医疗效果有望精准提升

C#的访问修饰符,声明修饰符,关键字有哪些?扫盲篇

Linx common directory & file management commands & VI editor usage introduction

Distance calculation from space vertex to straight line and its source code

Redis download and installation

New breakthrough in artificial muscle smart materials

LVM and disk quotas

The introduction of AI meta-learning into neuroscience, the medical effect is expected to improve accurately
随机推荐
ETL为什么经常变成ELT甚至LET?
Graphical relational database design ideas, this is too vivid
2020年度总结——品曾经,明得失,展未来
node.js中实现对数据库的链式操作
预测人们对你的第一印象,“AI颜狗”的诞生
sql concat()函数
ArrayList
Electron日常学习笔记
Let the "label" content in Baidu map generator expand--solution
新人误删数据,组长巧用MySQL主从复制延迟挽回损失
Calculate the inverse source of the matrix (using the adjoint matrix, a 3x3 matrix)
Go语学习笔记 - gorm使用 - 数据库配置、表新增 Web框架Gin(七)
go : 使用 grom 删除数据库数据
万能js时间日期格式转换
idea built-in translation plugin
Go 使用mencached缓存
MYSQL下载及安装完整教程
分布式系统中的开创者—莱斯利·兰伯特
go : go gin返回JSON数据
计算矩阵的逆源码(使用伴随矩阵,3×3的矩阵)