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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 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还提供了一系列内存淘汰策略。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
25天前
|
SQL 分布式计算 前端开发
MaxCompute操作报错合集之SQL脚本设置参数set odps.mapred.reduce.tasks=18;没有生效,是为什么
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
14天前
|
存储 算法 C++
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
24 0
|
14天前
|
NoSQL Java Redis
Redis16-RedisTemplate快速入门,max -idle,min-idle,max-wait,用set的方法,opsForValue().set的方法
Redis16-RedisTemplate快速入门,max -idle,min-idle,max-wait,用set的方法,opsForValue().set的方法
|
14天前
|
存储 NoSQL Java
Redis10------Set类型,存在着无序的特征存储的顺序和插入的顺序是无关的,set集合的一大特点是不可重复,在redis中支持交集插集等特殊功能,好友列表,共同关注等等
Redis10------Set类型,存在着无序的特征存储的顺序和插入的顺序是无关的,set集合的一大特点是不可重复,在redis中支持交集插集等特殊功能,好友列表,共同关注等等
|
14天前
|
存储 NoSQL Redis
Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
|
1月前
|
存储 NoSQL Redis
Redis第七弹-Set与ZSET基本操作,Set(集合特点)SADD key member(注意这个key,必须是你自定义名字,不能用key)​编辑SMEMBERS key-查询所有的key
Redis第七弹-Set与ZSET基本操作,Set(集合特点)SADD key member(注意这个key,必须是你自定义名字,不能用key)​编辑SMEMBERS key-查询所有的key
|
存储 缓存 移动开发
Redis 命令执行过程(上)
今天我们来了解一下 Redis 命令执行的过程。在之前的文章中《当 Redis 发生高延迟时,到底发生了什么》我们曾简单的描述了一条命令的执行过程,本篇文章展示深入说明一下,加深读者对 Redis 的了解。
Redis 命令执行过程(上)
|
存储 缓存 NoSQL
Redis 命令执行过程(下)
在上一篇文章中《Redis 命令执行过程(上)》中,我们首先了解 Redis 命令执行的整体流程,然后细致分析了从 Redis 启动到建立 socket 连接,再到读取 socket 数据到输入缓冲区,解析命令,执行命令等过程的原理和实现细节。
|
移动开发 缓存 NoSQL
redis 命令执行过程
概述  这篇文章的目的是为了描述redis server在处理client命令的执行过程,大概包括流程图、源码、以及redis的命令格式说明,redis的通信协议参考自redis的官网。
1281 0
|
NoSQL 数据库 Redis
探索Redis设计与实现10:Redis的事件驱动模型与命令执行过程
Redis的事件驱动模型 原文地址:https://www.xilidou.com/2018/03/22/redis-event/ Redis 是一个事件驱动的内存数据库,服务器需要处理两种类型的事件。