前言
Redis我们前期谈到 其实Redis本质上是使用键值对来存储数据的(key-value)的非关系型数据库
其中key 是String 类型的 而value根据Redis官方 可以是以下类型

针对Redis 的操作 可以直接通过简单的交互命令来进行操作 也可以通过一些脚本比如 (lua)的方式,批量执行一些操作(可以带有一定逻辑)

Redis应用场景
1.把Redis当做数据库来使用
大多数情况下考虑到数据存储我们一般要考虑的是"大",但仍然有一些场景考虑的是快
把所有需要检索的数据存储在内存中,就使用的Redis这样的内存数据库来完成
使用这样的内存数据库存储大量的数据,需要不少的硬件资源
2.缓存
数据是 存储在mysql数据库中的 但会根据二八原则(数据大部分需要读取 少部分需要修改)
因此就将数据分为冷热数据,将热点数据 存储在Redis 中
3.消息队列
实现一个网络版本的生产者消费者模型
如果当前 场景中对于消息队列的功能依赖的不是很多 并且又不想引入额外的依赖 Redis可以作为一个选择
其他的应用场景可通过阅读官方文档此处不过多讲述
Redis 客户端
Redis是客户端 服务器结构的程序
我们要清楚所有redis的命令都是要在Redis客户端上使用的

我们此篇博客介绍的 就根据xshell 云服务器上 的客户端进行操作
除此之外 基于redis 的api自行开发客户端(这是工作中最主要的形态)后续提及
Redis通用命令
官方命令 文档链接
https://redis.io/docs/latest/commands/

小编在此处主要介绍一些核心经常使用的命令(在使用命令时一定要进入Redis的客户端)
通用命令
1.get 和set


key value本质上是字符串 用法呢 类似与hashMap

2.Redis全局命令
Redis支持很多种数据结构 整体上来说 Redis是键值对 结构 key固定就是字符串,value实际上会由多种类型
1)keys 用来查询当前服务器上匹配的key
通过一些特殊符号(通配符)来描述key的模样 匹配上述模样的key就能被查询出来
keys pattern 返回所有满足pattern样式的key
h?llo 匹配hello ?表示匹配一个任意字符
h*llo 匹配hllo 或者 heeeeello *表示匹配0个或多个任意字符
其他的如下图所示 官方文档 上给出了详细的介绍

基于命令 对我们之前设定的key1 key2进行匹配效果如下 而其他的pattern我们就不过多演示了大家多多练习多多体会就行了

注意事项
keys命令的时间复杂度是O(N)
所以在生产环境上 一般会禁止使用keys命令 尤其是keys * 会查询redis中所以的key
生产环境上的key是非常多的 而redis是一个单线程的服务器,执行keys*的时间长就会使redis服务器被阻塞 无法给其他客户端提供服务
3.exists
判断 key'是否存在 返回存在的个数

redis组织这些key就是按照哈希表的方式来组织的 时间复杂度是O(1)
redis支持很多数据结构是指一个value可以是一些复杂的数据结构
redis自身的这些键值对 是通过哈希表的方式来组织的
redis 的某个值,又可以是一些数据结构
4.del(delete)
删除key
返回删除成功 的个数
时间复杂度O(1)

redis删除操作危险程度不及MySQL等,因为redis存放缓存数据 ,只是删除可能是热点数据,还可通过数据库中数据恢复
5.expire
给指定的key设置过期时间 返回1设置成功 返回0设置失败(必须针对已存在的key)
时间复杂度是O(1)
key超过这个指定的值,就会自动删除
expire key seconds 以秒为计时单位 但有时场景对于秒 来说 太长
pexpire key 毫秒 就可以毫秒为计时单位

6.ttl
ttl key 会得出key的过期时间 秒
pttl key 会得出key的过期时间 毫秒
如果返回-2表示这个key已经到期不存在
如果返回-1表示这个key存在并且没有设置过期时间

在此处涉及一个
面试题 Redis 的key的过期策略
1.定期删除 每次抽取一部分进行验证过期时间保证这个抽取检查的过程足够快(因为redis是单线程的,这个扫描抽查的过程不能太耗时,不然会阻塞其他命令的执行)
2.惰性删除 假设这个key已经到过期时间了,但是暂时还没删它 key还存在
紧接着 后面又一次访问,正好用到这个key了,于是这次访问就会让redis 服务器触发删除key的操作,同时返回一个nil
采用的就是定期和惰性删除相结合
虽然有了上述两种策略结合但整体效果一般仍然有很多过期的key残留,没有即使删除掉 因此redis 还提供了一系列的内存淘汰策略见于Redis缓存内存淘汰策略章节部分。
7.type
返回key中所存放的value类型
时间 复杂度O(1) 因为value类型 的 不同操作的命令也是 差别很大的 所以在操作key时 查看key中存储value类型是很有必要的

当然除此之外还有更多的通用命令 可通过查阅官方文档 多多 使用 redis的操作对你而言就不是难事