Redis 数据结构和全局命令概述
接下来的几篇文章将按照以下几个方面来介绍 在介绍 Redis 提供 5 数据结构。了解各个数据结构的特点对于Redis 的开发、运维非常重要,同时对于❓❓单机来说非常重要- 线程化命令处理机制,数据结构和命令使选择更加高效,事半功倍。 G❙man,的一些内部编码 数据结构 和 、单线程命令处理机制。数百个Redis的众多数据结构、命令用法以及应用场景。 5数据结构特征、、、命令应用场景. 文本
1 。先决条件
5一个数据结构之前,你需要了解
Redis命令数百个。如果你熟悉Redis的一些机制,你会发现这些命令的强大通用性。Redis不是万能药。一些数据结构和命令必须在特定场景中使用。错误使用。
2。全局命令
Redis 5类型数据结构其中值因为有一些常用命令 键。
2.1。查看所有键
键 *
在下面插入3字符串类型键值对:
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> set java jedis
OK
127.0.0.1:6379> set python redis-py
OK
复制代码该命令将列出所有键:
127.0.0.1:6379> keys *
1) "python"
2) "java"
3) "hello"
复制代码2.2。键总数
dbsize
在 键值对 ) 下插入 列表类型 : dbsize当前的命令数据库返回键的总数。当命令
127.0.0.1:6379> dbsize
(integer) 4
复制代码 key存在 如果存在则返回 del键 返回结果:成功删除键的个数。如果删除没有 的 键,则返回 。 。 expirekey秒 可以使用 : type key 例如键 对于每一个数据结构,它其实都有自己底层的内部编码 ♿♿♣♓实现也存在,这样, 可以看出,内部编码对应值 embstr,按钮 mylist 对应值 dbsize计算中的key总数时,不会遍历♶中的所有key 内置-输入键计数变量 ,所以 的时间复杂度为 dbsize 。而keys命令会遍历的所有key,所以的时间复杂度为 当时Redis 如果 有大量密钥。被保存,在线环境禁止使用。 2.3。检查key是否存在
1,如果不存在则返回0:127.0.0.1:6379> exists java
(integer) 1
127.0.0.1:6379> exists not_exist_key
(integer) 0
复制代码2.4。删除键
del 是一个通用命令无论什么值❝数据结构del都可以删除命令 。 127.0.0.1:6379> del java
(integer) 1
127.0.0.1:6379> exists java
(integer) 0
127.0.0.1:6379> del not_exist_key
(integer) 0
127.0.0.1:6379> exists not_exist_key
(integer) 0
复制代码2.5。密钥过期
Redis支持添加过期时间到自动删除按钮例如你好设置第二个过期时间:127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> expire hello 10
(integer) 0
复制代码ttlttl ttl剩余过期时间,包含3返回值:0的整数:密钥的剩余过期时间由表示。-1:键未设置过期♶。 -2:键不存在。 ttl命令来观察# 还剩7秒
127.0.0.1:6379> ttl hello(integer)
(integer) 7
...
# 还剩1秒
127.0.0.1:6379> ttl hello(integer)
(integer) 1
# 返回结果为-2,说明键hello已经被删除
127.0.0.1:6379> ttl hello(integer)
(integer) -2
127.0.0.1:6379> get hello
(nil)
复制代码2.6。键数据结构类型
hello是字符串类型的值,返回结果❙ 。键mylist的值为listtype,返回结果为list。如果密钥不存在,则返回none。 127.0.0.1:6379> set a b
OK
127.0.0.1:6379> type a
string
127.0.0.1:6379> rpush mylist a b c d e f g
(integer) 7
127.0.0.1:6379> type mylist
list
复制代码3。数据结构和内部编码
type 该命令实际上返回当前 键 的数据结构类型 。它们是:string(string),哈希(设置(设置),zsetRedis 外部数据结构如图所示:Redis在合适的列表数据结构有两个linkedlistlinkedlistziplist)可以通过各种外部数据结构用作♿的内部实现。 对象编码命令查询内部编码:127.0.0.1:6379> object encoding hello
"embstr"
127.0.0.1:6379> object encoding mylist
"quicklist"
复制代码ziplist。 † 和 命令 无效果。例如, Redis3.2 提供了一个快速列表 ,它结合了 ziplist 、 .ziplist与比较可以节省内存,但如果列表有更多元素,则性能会有所不同。 主要,当前 Redis 列出类型 内部实现 内部实现 作为内部参考 ed 用于配置 。 4。单线程架构
Redis 使用单线程架构和I/O❓实现多种建模
4.1。纯内存访问纳秒,其中Redis达到每秒1万级访问是重要基础。4.2。非阻塞 I/O
使用单线程这样高性能是一个不错的选择。 可以有很多优点: 单线程的问题:每个命令的执行时间有要求。如果命令 运行时间过长 ,它 会阻止其他命令 。 本文概述了几种数据结构/ ,数据结构和内部编码和单线程命令处理机制分析。 作者:灵易技术栈Redis 使用 epoll I/OI/O 用作 然后添加 Redis 拥有 事件处理模型 和 加入 epoll 和 ♓❙ 读写 、 关闭 事件,所以您不必在网络上浪费太多时间,如下图所示:4.3。单线程避免了线程变化和竞争条件带来的消耗Redis对于这样一个高性能服务来说是致命的,所以Redis实现是一个数据库。 场景。 总结
Redisglobal以及一些简单的命令❓
来源:掘金
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网


