redis学习

83 阅读2分钟

redis

  • noSql 键值数据库 ( key - value)
  • 非关系型数据库
  • redis 安装默认有 指令网站: redis comment
  • 五大数据类型
    • String
    • Hash
    • List
    • Set
    • zset ( sorted set: 有序集合)

基本命令

基本命令

  1. set 添加 key-value
  2. keys * 显示redis所有的key
  3. get key 获取对应key的value
  4. select Index 切换到对应的数据库 默认是 0
  5. del 删除
  6. flushdb flushall 清空当前数据库的所有 key-val 和清出所有数据库的key-val
  7. setex key seconds value 键值秒 邮箱验证等 setex(set with expire)
  8. mset key value [key value...] 同时设置一个或多个值
  9. mget key [key...] 得到一个或多个key的值

hash 存储对象

  • hset user1 name "smith" user = { name: "smith" } 给对象设置一个的key val
  • hget user1 name 获取某个对象的 val
  • hdel key 删除key
  • hmset user name [key val...] 一次设置多个key - val
  • hgetall user 获取user的所有key - val
  • hlen user 显示hans有几个元素
  • hexists key field 查看hash的key 给定field 是否存在

list (双向链表)下面 city 为 key

  • lpush city beijing shanghai tianjing 列表(链表)添加值 从左开始添加
  • lrange city 0 -1 取出链表前部值
  • rpush city a b c 列表(链表)添加值 从右开始添加
  • lpop city 删除左边的第一个 所有数据都没有key也会删除
  • rpop city 删除右边的第一个
  • llen city 返回keylist的长度 如果没有返回0
  • del key 删除数据

set 无序的不能重复的数据

  • sadd key val 为key的字段添加集合数据
  • smembers key 返回key集合的所有数据
  • sismember key val 判断成员是否存在
  • srem key val 删除指定key的值

redis go 链接池

import (
    "context"
    "github.com/go-redis/redis/v8"
    "fmt"
)

var ctx = context.Background()

func ExampleClient() {
    rdb := redis.NewClient(&redis.Options{
        Addr:     "localhost:6379",
        Password: "", // no password set
        DB:       0,  // use default DB
    })

    err := rdb.Set(ctx, "key", "value", 0).Err()
    if err != nil {
        panic(err)
    }

    val, err := rdb.Get(ctx, "key").Result()
    if err != nil {
        panic(err)
    }
    fmt.Println("key", val)

    val2, err := rdb.Get(ctx, "key2").Result()
    if err == redis.Nil {
        fmt.Println("key2 does not exist")
    } else if err != nil {
        panic(err)
    } else {
        fmt.Println("key2", val2)
    }
    // Output: key value
    // key2 does not exist
}