2026年连接redis(连接redis客户端命令)

连接redis(连接redis客户端命令)redis 是一个客户端 服务器结构的程序 redis 客户端和服务器可以在一台机器上 也可以在不同主机上 客户端和服务器之间通过网络进行通信 Redis 的客户端有很多形态 比如 redis cli 是 Redis 服务器自带的命令行客户端 通过命令或命令进入客户端并连接到服务器 ctrl d 退出 图形化界面的客户端 比如桌面程序 web 程序 基于 redis 的 api 自行开发客户端 和 mysql 这样的关系型数据库相比



redis是一个客户端-服务器结构的程序。redis客户端和服务器可以在一台机器上,也可以在不同主机上。客户端和服务器之间通过网络进行通信。

在这里插入图片描述

Redis的客户端有很多形态,比如

  1. redis-cli是Redis服务器自带的命令行客户端。通过命令或命令进入客户端并连接到服务器。ctrl+d退出。
    在这里插入图片描述

  2. 图形化界面的客户端。比如桌面程序,web程序。
  3. 基于redis的api自行开发客户端。

通过redis-cli客户端和redis服务器交互,涉及到很多redis命令。大概是上百个吧。常用的掌握,不常用的在用到的时候查阅官方文档。

set命令

set命令:把key和value存储到redis中。key和value都是字符串。

总结set的用法:

  1. :把键值对 <字符串1-字符串2> 存到redis中。键和值加不加引号无所谓。
    在这里插入图片描述


get命令

get命令:根据key来取value。

总结get的用法:

  1. :通过键1取它对应的值。如果键1不存在,返回nil。nil就是null/NULL的意思。
    在这里插入图片描述
    在这里插入图片描述




redis通过数据结构组织数据。体现在两个方面:

  1. redis自身的这些键值对,是通过哈希表的方式来组织的。
  2. 在键值对中,key固定就是字符串,value实际上有很多数据类型,最常见的五种类型:字符串,哈希表,列表,集合,有序集合。操作不同的数据结构就会有不同的命令。

全局命令:能够搭配任意数据结构使用的命令。

keys命令:查询当前服务器上的key

命令:通过通配符描述key的样子,服务器中匹配上述样子的key就能被查询出来。

总结keys的用法:

  1. :pattern是包含通配符的字符串。在服务器中查询能匹配pattern的所有key。
    patter的具体写法:
    :匹配任意一个字符;
    :匹配任意个字符;
    :只能匹配a或e,其他字符不行,相当于给出固定选项;
    :排除e和a,只有e和a匹配不了,其他的都能匹配;
    :a到b区间的都能匹配,包括a和b。
    比如:
    在这里插入图片描述在这里插入图片描述keys命令的时间复杂度是O(N),redis执行命令时用的是单线程模型,所以如果redis中存储的key非常多,那么执行keys命令的时间会很长,会导致redis服务器堵塞,无法给其他客户端提供服务。
    所以在生产环境中使用keys命令是危险操作

























  2. :查询当前服务器上的所有key。
生产环境

生产环境也叫线上环境。线上环境是外界用户能访问到的。

办公环境,开发环境,测试环境,统称为线下环境,外界用户无法访问。

一旦生产环境出现问题,会直接对用户使用产生影响。

exists命令:判定key是否存在

  1. :查询服务器中是否存在键key1,键key2,键key3,返回key存在的个数。
    在这里插入图片描述
    在这里插入图片描述
    一次查多个效率比较高。这主要是因为redis客户端和服务器之间通过网络进行通信。
    每次网络通信都要对数据进行封装和分用,还是很花时间的。
    而且在网络通信中是通过网卡进行数据传输等工作的,网卡属于IO设备,IO设备的效率低于内存,CPU。
    一般情况下,Redis客户端和服务器还不定在一台机器上,此时网络传输消耗的时间也更多了。
    Redis的很多命令都支持一次能操作多个key



















del命令:删除指定的key

同exists命令,del命令能一次删除一个或多个key。del命令的时间复杂度也是O(1)。

总结del的用法:

  1. :删除服务器中键key1,键key2,键key3,返回删除掉的key的个数。
    在这里插入图片描述

expire命令:为指定的key设置过期时间。

总结expire命令的用法:

  1. :为key1设置过期时间,xxx秒后,key1被自动删除。返回0设置失败,返回1设置成功。key1必须存在。
    在这里插入图片描述

通过pexpire命令也可以为指定的key设置过期时间。使用方法同expire,区别是设置的时间单位是ms。

ttl命令:查询指定key的过期时间

ttl 全称 time to live,即存活时间。

  1. :查询key1的过期时间还剩多少,时间单位是s。返回值如果是-1表示该key1没有设置过过期时间,返回值如果是-2表示该key1不存在。
    在这里插入图片描述

pttl和ttl命令一样,区别是时间单位是ms。

type命令:查看key对应value的数据类型

type的命令的时间复杂度也是O(1)。

总结type的用法:

  1. :查看key1对应value的数据类型。如果key1不存在,返回值是none。
    在这里插入图片描述
    在redis中,操作不同数据类型的value的命令完全不同。操作前就可以先type一下。




一个redis中同时存在很多的key,这些key中可能有很大一部分都有过期时间,此时,redis服务器是如何知道哪些key已经过期要被删除,哪些key还没过期的。

直接遍历所有的key,效率太低行不通。

redis中采取的基本策略是:定期删除和惰性删除结合

惰性删除:假设key1已经到了过期时间,但是redis并没有删除它。直到key1接下来被访问到时,才会触发redis服务器删除key1的操作,并返回给客户端一个nil。

定期删除:redis每隔一段时间抽取一部分key检查它们的过期时间,对过期key执行删除操作。在这个过程中,控制每次抽取检查的数量,保证定期删除的过程要足够快。redis处理主要任务都是使用单线程模型,如果扫描过期key消耗时间太长,会导致redis正常处理命令被阻塞。

通过上述策略,依然可能存在有很多过期的key被残留,不能及时删除掉。为了解决这个问题,redis中还提供了一系列的内存淘汰策略。

定时器:在某个时间到达之后,执行指定的任务。

实现一个定时器,有以下两种比较高效的方式:分别是基于优先级队列(堆)和时间轮。

基于优先级队列实现定时器:现假设redis服务器中有很多设置了过期时间的key,把这些key加入到一个优先级队列中,指定优先级规则是过期时间早的先出队列。此时队首素就是最早的要过期的key,给定时器中分配一个线程(多线程),让这个线程去检查队首素,看队首素是否过期,这个线程不需要频繁扫描队首素,只要根据当前时刻和队首素的过期时间,设置一个等待,当等待时间结束后,系统唤醒这个线程,这个线程去检查队首素即可。

上述两种方案都涉及到了多线程,Redis中没有采取上述两种方案。

  1. redis中六个常用的全局命令:
  • keys:查看匹配规则的key
  • exists:判定指定key是否存在
  • del:删除指定的key
  • expire/pexpire:设置过期时间
  • ttl/pttl:查看key的过期时间
  • type:查询key对应的value类型
  1. 两个核心命令:
  • set:把key和value存储到redis中。
  • get:根据key来取value
  1. 在生产环境中使用keys命令是危险操作。特别是。
  2. Redis中针对key的过期策略:定期删除+过期删除+内存淘汰机制三者结合。
  3. 定时器的两个高效实现思路:基于优先级队列实现和基于时间轮实现。
今天的文章 2026年连接redis(连接redis客户端命令)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2026-03-23 21:46
下一篇 2026-03-23 21:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/57525.html