当前位置:网站首页>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)
}
边栏推荐
猜你喜欢

Local Implicit Grid Representations for 3D Scenes详解

Detailed explanation of numpy multidimensional array ndarray

深度学习:线性回归模型

uniapp中canvas与v-if更“配”

The calculation proof of the intersection of the space line and the plane and its source code

The calculation and source code of the straight line intersecting the space plane

【MySQL】MySQL中如何实现分页操作

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

阿里二面:Redis有几种集群方案?我答了4种

AI元学习引入神经科学,医疗效果有望精准提升
随机推荐
What happens when @Bean and @Component are used on the same class?
一段神奇的没有主方法的代码
“AI教练”请进家,家庭智能健身蓬勃发展
Equation Derivation Proof of Vector Triple Product
The first artificial intelligence safety competition officially launched
云服务器零基础部署网站(保姆级教程)
向量的导数运算和向量叉乘以及点乘的导数运算
阿里二面:Sentinel vs Hystrix 对比,如何选择?
舒尔补(schur completement)
Electron之初出茅庐——搭建环境并运行第一个程序
手机端滚动至页面指定位置
Distance calculation from space vertex to straight line and its source code
Electron中设置菜单(Menu),主进程向渲染进程共享数据
空间顶点到直线的距离计算及其源码
[硬核干货]由0到1,突破信息系统项目管理师(呕心沥血经验之谈)!!!
2020 数学建模之旅
Local Implicit Grid Representations for 3D Scenes详解
The Society of Mind - Marvin Minsky
MySQL master-slave replication configuration construction, one step in place
空间直线到平面上的交点的计算证明及其源码