当前位置: 首页 > news >正文

Redis:概念与常用命令

Redis 是什么?

Redis是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因比读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 Redis提供了多种数据类型来支特不同的业务场景,比如String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合,、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息)、Stream(流),并且对数据类型的操作都是原子性的,因为执行命令由单线程负责的,不存在并发竞争的问题。除此,之外,Redis还支特事务、持久化、Lua脚本、多种集群方案(主从复制模式、哨兵模式、切片机群模式)、发布/订阅模式,内存淘汰机制、过期删除机制等等。

Redis 的键操作命令是 Redis 中最基础也是使用频率较高的一类命令,用于对键进行各种管理和查询操作;redis的命令不区分大小写,下面进行详细介绍:

SET

set key value
  • 将指定的键 key 的值设置为 value。如果键已经存在,其原有值将被覆盖;如果键不存在,则会创建一个新的键值对。
  • keyvalue都是字符串,可以加单引号或双引号,也可以不加。

GET

get key
  • 获取指定键 key 的值。如果键不存在,返回 nil
127.0.0.1:6379> set key 'hello redis'
OK
127.0.0.1:6379> get key
"hello redis"

KEYS

keys pattern
  • 查找所有符合给定模式 pattern 的键。
  • 该命令在键数量较多时可能会阻塞服务器,不建议在生产环境中频繁使用。

常见的正则符号:

  • ?:匹配一个任意字符。
  • *:匹配任意多个任意字符。
  • [abc]:只能匹配abc三者之一,匹配一次。
  • [^a]:排除e,其它的都能匹配,匹配一次。
  • [a-c]:匹配ac范围内的字符,匹配一次。
127.0.0.1:6379> keys key*
1) "key1"
2) "key2"
3) "key"

EXISTS

exists key [key ...]
  • 判断一个或多个 key 是否存在。如果键存在,返回存在键的个数;否则,返回 0

DEL

del key [key ...]
  • 删除一个或多个指定的键。如果键不存在,该命令会忽略该键,不会报错。

可以发现上述的EXISTSDEL命令支持一次查询或删除多个键,因为Redis 是基于网络实现,每个命令要从客户端向服务器端发送请求,而如果客户端只需一次请求就能完成多个键的操作,就可以避免多次网络往返,减少处理请求的总次数。

EXPIRE

expire key seconds
  • 为指定的key添加秒级的过期时间。若键存在且成功设置了过期时间,返回 1。若键不存在,返回 0
127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> expire hello 5
(integer) 1
127.0.0.1:6379> get hello
"1"
127.0.0.1:6379> get hello
(nil)

TTL

ttl key
  • 获取key的秒级过期时间。
127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> expire hello 5
(integer) 1
127.0.0.1:6379> ttl hello
(integer) 2
127.0.0.1:6379> ttl hello
(integer) 1
127.0.0.1:6379> ttl hello
(integer) -2

Redis是如何实现定期删除的?

下面是常见的三种过期删除策略,Redis采用定期删除 + 惰性删除

定时删除:在设置键的过期时间时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。(Redis未采用

定期删除:Redis 会每隔一段时间,从数据库中随机抽取一部分键进行检查,将其中过期的键删除。

惰性删除:当客户端尝试访问某个键时,Redis 会先检查该键是否过期,如果过期则将其删除,并返回空结果给客户端。也就是说,过期键不会主动被删除,而是在被访问时才会进行检查和删除操作。

TYPE

type key
  • 返回指定键 key 的对应value数据类型。

OBJECT ENCODING

object encoding key
  • 查看指定键所对应值的编码类型
127.0.0.1:6379> set key1 123
OK
127.0.0.1:6379> set key2 hello
OK
127.0.0.1:6379> set key3 helloooooooooooooooooooooooooooooooooooooooooooooo
OK
127.0.0.1:6379> object encoding key1
"int"
127.0.0.1:6379> object encoding key2
"embstr"
127.0.0.1:6379> object encoding key3
"raw"

FLUSHALL

flushall
  • 删除Redis中所有数据。生产环境中禁止使用。

http://www.mrgr.cn/news/96231.html

相关文章:

  • Django 项目打包exe本地运行
  • JAVA接口调用限速器
  • 嵌入式学习第二十八天--顺序栈
  • SDL —— 将sdl渲染画面嵌入Qt窗口显示(附:源码)
  • UE4学习笔记 FPS游戏制作26 UE中的UI
  • ​​解锁 JavaScript DOM:节点操作的核心方法与最佳实践
  • LibVLC —— 《基于Qt的LibVLC专业开发技术》视频教程
  • NodeJs之http模块
  • 基于Netlify + Localtunnel 实现本地项目“无服务器”部署上线
  • vue复习1~45
  • 【每日算法】Day 10-1:深度优先搜索(DFS)算法精讲——排列组合与路径问题的终极解法(C++实现)
  • vue+webpack5(高级配置)
  • 还刷刷刷刷刷
  • VSCode Java 单元测试没有运行按钮
  • QTcpSocket(客户端实现)多线程连接慢问题
  • 基于MCP协议的多模态模型优化在医疗3D打印精密人工关节制造中的研究
  • office_word中使用宏以及DeepSeek
  • 第十六届蓝桥杯模拟二(串口通信)
  • ubuntu 22.04 一键安装 lxd
  • Linux——线程安全