redis
- noSql 键值数据库 ( key - value)
- 非关系型数据库
- redis 安装默认有 指令网站: redis comment
- 五大数据类型
- String
- Hash
- List
- Set
- zset ( sorted set: 有序集合)
基本命令
基本命令
set添加 key-valuekeys *显示redis所有的keyget key获取对应key的valueselect Index切换到对应的数据库 默认是 0del 删除flushdb flushall清空当前数据库的所有key-val和清出所有数据库的key-valsetex key seconds value键值秒 邮箱验证等setex(set with expire)mset key value [key value...]同时设置一个或多个值mget key [key...]得到一个或多个key的值
hash 存储对象
hset user1 name "smith"user = { name: "smith" }给对象设置一个的key valhget user1 name获取某个对象的 valhdel key删除keyhmset user name [key val...]一次设置多个key - valhgetall user获取user的所有key - valhlen 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的长度 如果没有返回0del 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
}