0
点赞
收藏
分享

微信扫一扫

《FPGA开发工具》专栏目录

elvinyang 2024-12-02 阅读 20

文章目录

一. 核心命令

1. set

set key value
key 和 value 都是string类型的
在这里插入图片描述
对于key value, 不需要加上引号, 就是表示字符串类型, 加上也可以
redis中, 不区分大小写

2. get

get key
在这里插入图片描述
如果key不存在, 返回nil, 就是null的意思
在这里插入图片描述

二. 全局命令

全局命令, 就是能够搭配任意一个数据结构来使用的命令

1. keys

keys pattern
pattern就是通过一些特殊符号(通配符), 来描述key的模样, 匹配上的key就能被查询出来
在这里插入图片描述
keys的时间复杂度是O(N)
在生产环境上, 一般会禁止使用keys命令, 尤其是keys *

2. exists

在这里插入图片描述

判断key是否存在, 返回key存在的个数(针对多个key是有用的)
时间复杂度: O(1)
redis组织这些key就是按照哈希表的方式来组织的

3. del

删除指定的key, 可以一次删除一个或多个
在这里插入图片描述
返回删除key的个数(针对多个key是有用的)
时间复杂度: O(1)
在这里插入图片描述
如果redis作为缓存, redis中存的是热点数据, 全量数据是在mysql中存着, 那么redis使用del, 删除几个key, 一般来说问题不大, 相比之下, 如果是mysql数据, 哪怕误删了一个数据, 都可能是影响很大的
如果redis作为数据库, 此时误删数据影响就大了

4. expire

给指定的key设置过期时间, 单位是秒, key存活超出这个指定的值, 就会被自动删除
必须是针对已经存在的key设置过期时间

在这里插入图片描述
(pexpire key 毫秒)

返回0设置失败, 返回1设置成功
时间复杂度: O(1)
在这里插入图片描述

5. ttl

time to live 查看当前key的过期时间还剩多少
在这里插入图片描述
(pttl key )
返回值: 剩余过期时间。-1 表示没有关联过期时间,-2 表示 key 不存在
时间复杂度: O(1)
在这里插入图片描述

6. type

返回key对应value的数据类型
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三. redis 常见的数据结构

在这里插入图片描述
redis在底层实现这些数据结构的时候, 会在源码层面, 针对上述实现进行特定的优化(编码方式可能有变数), 达到节省时间/空间 的效果
同一个数据类型, 背后可能编码方式是不同的, 会根据具体场景优化
redis自动适应, 程序猿使用时是感觉不到的
在这里插入图片描述

  1. raw
    最基本的字符串, 底层就是一个byte数组在存放数据
  2. int
    当value是个整数的时候, 此时可能redis会直接使用int来存储数据
    redis通常也可以用来实现"计数"这样的功能
  3. embstr
    针对短字符串进行的特殊优化
  4. hashtable
    最基本的哈希表
  5. ziplist
    压缩列表, 在哈希表中元素比较少的时候, 可能会优化成ziplist
  6. linkelist
    链表
  7. ziplist
    压缩列表, 在列表中元素比较少的时候, 可能会优化成ziplist
    (从redis3.2开始, 引入了新的quicklist, 代替上面两个)
  8. hashtable
    最基本的哈希表
  9. inset
    集合里都是整数
  10. skiplist
    跳表, 也是链表, 不同于普通的链表, 每个节点上有多个指针域, 巧妙地搭配这些指针域的指向, 就可以做到, 从跳表上查询元素的时间复杂度是O(logN)
  11. ziplist
    压缩列表, 在列表中元素比较少的时候, 可能会优化成ziplist

在这里插入图片描述

举报

相关推荐

0 条评论