lrange是取出所有值并移除么_Go操作Redis实战

目录安装Redis客户端连接redis

基本指令Keys():根据正则获取keys

Type():获取key对应值得类型

Del():删除缓存项

Exists():检测缓存项是否存在

Expire(),ExpireAt():设置有效期

TTL(),PTTL():获取有效期

DBSize():查看当前数据库key的数量

FlushDB():清空当前数据

FlushAll():清空所有数据库

字符串(string)类型Set():设置

SetEX():设置并指定过期时间

SetNX():设置并指定过期时间

Get():获取

GetRange():字符串截取

Incr():增加+1

IncrBy():按指定步长增加

Decr():减少-1

DecrBy():按指定步长减少

Append():追加

StrLen():获取长度

列表(list)类型LPush():将元素压入链表

LInsert():在某个位置插入新元素

LSet():设置某个元素的值

LLen():获取链表元素个数

LIndex():获取链表下标对应的元素

LRange():获取某个选定范围的元素集

从链表左侧弹出数据

LRem():根据值移除元素

集合(set)类型SAdd():添加元素

SPop():随机获取一个元素

SRem():删除集合里指定的值

SSMembers():获取所有成员

SIsMember():判断元素是否在集合中

SCard():获取集合元素个数

SUnion():并集,SDiff():差集,SInter():交集

有序集合(zset)类型ZAdd():添加元素

ZIncrBy():增加元素分值

ZRange()、ZRevRange():获取根据score排序后的数据段

ZRangeByScore()、ZRevRangeByScore():获取score过滤后排序的数据段

ZCard():获取元素个数

ZCount():获取区间内元素个数

ZScore():获取元素的score

ZRank()、ZRevRank():获取某个元素在集合中的排名

ZRem():删除元素

ZRemRangeByRank():根据排名来删除

ZRemRangeByScore():根据分值区间来删除

哈希(hash)类型HSet():设置

HMset():批量设置

HGet():获取某个元素

HGetAll():获取全部元素

HDel():删除某个元素

HExists():判断元素是否存在

HLen():获取长度

安装Redis客户端

Go语言中使用第三方库https://github.com/go-redis/redis连接Redis数据库并进行操作。使用以下命令下载并安装:go get github.com/go-redis/redis/v8注:导入时指定了版本v8,忽略版本是一个常见错误

连接redis说明:Background返回一个非空的Context。 它永远不会被取消,没有值,也没有期限。 它通常在main函数,初始化和测试时使用,并用作传入请求的顶级上下文。

示例:package main

import (

"context"

"fmt"

"github.com/go-redis/redis/v8"

)

//Background返回一个非空的Context。 它永远不会被取消,没有值,也没有期限。

//它通常在main函数,初始化和测试时使用,并用作传入请求的顶级上下文。

var ctx = context.Background()

func main() {

rdb := redis.NewClient(&redis.Options{

Addr:     "172.16.147.128:6379",

Password: "",

DB:       0,

})

pong, err := rdb.Ping(ctx).Result()

if err != nil {

fmt.Printf("连接redis出错,错误信息:%v", err)

}

fmt.Println("成功连接redis")

}

基本指令

Keys():根据正则获取keys

示例:package main

import (

"context"

"fmt"

"github.com/go-redis/redis/v8"

)

var ctx = context.Background()

func main() {

rdb := redis.NewClient(&redis.Options{

Addr:     "172.16.147.128:6379",

Password: "",

DB:       0,

})

//*表示获取所有的key

keys, err := rdb.Keys(ctx, "*").Result()

if err != nil {

panic(err)

}

fmt.Println(keys)

}

Type():获取key对应值得类型

Type()方法用户获取一个key对应值的类型

示例:package main

import (

"context"

"fmt"

"github.com/go-redis/redis/v8"

)

var ctx = context.Background()

func main() {

rdb := redis.NewClient(&redis.Options{

Addr:     "172.16.147.128:6379",

Password: "",

DB:       0,

})

vType, err := rdb.Type(ctx, "key").Result()

if err != nil {

panic(err)

}

fmt.Println(vType) //string

}

Del():删除缓存项

示例:package main

import (

"context"

"fmt"

"github.com/go-redis/redis/v8"

)

var ctx = context.Background()

func main() {

rdb := redis.NewClient(&redis.Options{

Addr:     "172.16.147.128:6379",

Password: "",

DB:       0,

})

n, err := rdb.Del(ctx, "key1", "key2").Result()

if err != nil {

panic(err)

}

fmt.Printf("成功删除了 %v 个\n", n)

}

Exists():检测缓存项是否存在

Exists()方法用于检测某个key是否存在package main

import (

"context"

"fmt"

"github.com/go-redis/redis/v8"

)

var ctx = context.Background()

func main() {

rdb := redis.NewClient(&redis.Options{

Addr:     "172.16.147.128:6379",

Password: "",

DB:       0,

})

n, err := rdb.Exists(ctx, "key1").Result()

if err != nil {

panic(err)

}

if n > 0 {

fmt.Println("存在")

} else {

fmt.Println("不存在")

}

}注:Exists()方法可以传入多个key,返回的第一个结果表示存在的key的数量,不过工作中我们一般不同时判断多个key是否存在,一般就判断一个key,所以判断是否大于0即可,如果判断判断传入的多个key是否都存在,则返回的结果的值要和传入的key的数量相等

Expire(),ExpireAt():设置有效期

需要在设置好了缓存项后,在设置有效期

Expire()方法是设置某个时间段(time.Duration)后过期,ExpireAt()方法是在某个时间点(time.Time)过期失效package main

import (

"context"

"fmt"

"github.com/go-redis/redis/v8"

"time"

)

var ctx = context.Background()

func main() {

rdb := redis.NewClient(&redis.Options{

Addr:     "172.16.147.128:6379",

Password: "",

DB:       0,

})

res, err := rdb.Expire(ctx, "key", time.Minute * 2).Result()

if err != nil {

panic(err)

}

if res {

fmt.Println("设置成功")

} else {

fmt.Println("设置失败")

}

res, err = rdb.ExpireAt(ctx, "key2", time.Now()).Result()

if err != nil {

panic(err)

}

if res {

fmt.Println("设置成功")

} else {

fmt.Println("设置失败")

}

}

TTL(),PTTL():获取有效期

TTL()方法可以获取某个键的剩余有效期

示例:package main

import (

"context"

"fmt"

"github.com/go-redis/redis/v8"

"time"

)

var ctx = context.Background()

func main() {

rdb := redis.NewClient(&redis.Options{

Addr:     "172.16.147.128:6379",

Password: "",

DB:       0,

})

//设置一分钟的有效期

rdb.Expire(ctx, "key", time.Minute)

//获取剩余有效期,单位:秒(s)

ttl, err := rdb.TTL(ctx, "key").Result()

if err != nil {

panic(err)

}

fmt.Println(ttl)

//获取剩余有效期,单位:毫秒(ms)

pttl, err := rdb.PTTL(ctx, "key").Result()

if err != nil {

panic(err)

}

fmt.Println(pttl)

}

DBSize():查看当前数据库key的数量

示例:package main

import (

"context"

"fmt"

"github.com/go-redis/redis/v8"

)

var ctx = context.Background()

func main() {

rdb := redis.NewClient(&redis.Options{

Addr:     "172.16.147.128:6379",

Password: "",

DB:       0,

})

num, err := rdb.DBSize(ctx).Result()

if err != nil {

panic(err)

}

fmt.Printf("数据库有 %v 个缓存项\n", num)

}

FlushDB():清空当前数据

示例:package main

import (

"context"

"fmt"

"github.com/go-redis/redis/v8"

)

var ctx = context.Background()

func main() {

rdb := redis.NewClient(&redis.Options{

Addr:     "172.16.147.128:6379",

Password: "",

DB:       0,

})

//清空当前数据库,因为连接的是索引为0的数据库,所以清空的就是0号数据库

res, err := rdb.FlushDB(ctx).Result()

if err != nil {

panic(err)

}

fmt.Println(res)//OK

}

FlushAll():清空所有数据库

示例:package main

import (

"context"

"fmt"

"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值