Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前

因为redis本质是键值对结构。

1.set key value(设置对应的key和value)

2.get key(得到value值)

这里我们是没有这个key3的,所以他返回一个nil(null的含义)

Redis全局命令(支持很多的数据结构)

3.keys(用来查询当前服务器匹配的key)

通过一些特殊符号(通配符)来描述当前key的模型

如何查找key呢? pattern包含特殊符号的字符串,存在的意义,描述另外的服务器长啥样,?匹配任意一个字符,*匹配0个或多个字符。

*:保证的

?保证一个占位符,他就像是like里面的_

key复杂度O(N),生产环境一般禁止用keys命令,因为生产环境上key可能非常多,redis作为一个单线程的服务器,很容易执行keys*时间非常长,就会使redis服务器被阻塞了,无法给其他客户端提供服务。

redis常常用于缓存,redis挡在mysql前面,redis被keys*阻塞住,此时其他的查询redis操作就超时了,突然一大波请求过来,mysql也会挂

生产环境/线上环境

(办公环境/开发环境,测试环境也叫线上环境,外界用户无法无法访问,线上环境是外界用户能够访问到,一旦生产环境出问题,一定对用户的使用产生影响)

4.exist(判定key是否存在):判定key是否存在

Exist key[key ...]

网络通信->效率比较低

               ->成本比较高

hashMap中key唯一,但可以判定多个key,要是1个key则非0则1.

redis支持很多数据结构

自身这些键值对,是通过哈希表方式来组织的:

Redis具体的某个值,又可以数据结构

redis是一个客户端,服务器结构的程序,客户端和服务器之间通过网络来进行通信

进行网络通信,发送方发送一个数据,这个数据要从应用层,到物理层,层层封装(每一层协议都要加上报头或尾)->发一个快递,要包装,包好几层

del:删除指定的key,可以删一个或者多个

5.DEL   key  返回删掉的key的个数

redis主应用场景:缓存(数据库,消息队列),只是一个热点数据

(redis替mysql负重前行,redis没数据,大部分请求就直接打给mysql易把mysql搞挂)

6.expire作用给指定的key设置过期时间

注意:如果expire key 的键不存在,返回结果为0

如果过期时间为负值,键会立即被删除,犹如使用del命令一样

7.ttl key查看当前键的剩余时间

redis key过期策略的实现(面试题)

redis同时可能存在很多很多的key,这些key中可能很大一部分都有过期时间,此时redis怎么知道哪一部分过期被删除,哪些key还没过期呢?

倘若是直接遍历所有的key,显然是行不通的,效率非常低

redis的整体策略

1.定期删除

每次抽取一部分,进行验证过期时间,保证这个抽查过程足够快,

为啥对定期删除的时间,又明确要求呢?

因为Redis是单线程程序(主要的任务,处理每个命令的任务,刚才扫描过期的key)

如果扫描过期的key消耗的时间太多了,就可能会导致正常处理请求的命令被阻塞(类似于key* 这样的效果)

2.惰性删除

假设这个key到了过期时间,但是暂时未删除它,key还存在,紧接着后面又一次的访问,正好用到这个key,于是这次访问会让Redis触发删除key的操作,同时返回个nil

整体的效果一般仍有过期的key 未被删除,redis还提供了一系列内存淘汰策略。


相关文章
|
5月前
|
存储 缓存 NoSQL
【📕分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
本文解析 Redisson 如何通过 Redis 实现分布式信号量(RSemaphore)与倒数闩(RCountDownLatch),利用 Lua 脚本与原子操作保障分布式环境下的同步控制,帮助开发者更好地理解其原理与应用。
346 6
|
4月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
318 86
|
6月前
|
存储 缓存 NoSQL
Redis核心数据结构与分布式锁实现详解
Redis 是高性能键值数据库,支持多种数据结构,如字符串、列表、集合、哈希、有序集合等,广泛用于缓存、消息队列和实时数据处理。本文详解其核心数据结构及分布式锁实现,帮助开发者提升系统性能与并发控制能力。
|
4月前
|
存储 消息中间件 NoSQL
Redis数据结构:别小看这5把“瑞士军刀”,用好了性能飙升!
Redis提供5种基础数据结构及多种高级结构,如String、Hash、List、Set、ZSet,底层通过SDS、跳表等实现高效操作。灵活运用可解决缓存、计数、消息队列、排行榜等问题,结合Bitmap、HyperLogLog、GEO更可应对签到、UV统计、地理位置等场景,是高性能应用的核心利器。
|
4月前
|
存储 缓存 NoSQL
Redis基础命令与数据结构概览
Redis是一个功能强大的键值存储系统,提供了丰富的数据结构以及相应的操作命令来满足现代应用程序对于高速读写和灵活数据处理的需求。通过掌握这些基础命令,开发者能够高效地对Redis进行操作,实现数据存储和管理的高性能方案。
137 12
|
4月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
4月前
|
存储 缓存 NoSQL
【Redis】 常用数据结构之String篇:从SET/GET到INCR的超全教程
无论是需要快速缓存用户信息,还是实现高并发场景下的精准计数,深入理解String的特性与最佳实践,都是提升Redis使用效率的关键。接下来,让我们从基础命令开始,逐步揭开String数据结构的神秘面纱。
|
8月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
3月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
|
4月前
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
227 1
Redis专题-实战篇二-商户查询缓存