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

Redis_3_Redis介绍+常见命令

Redis介绍

和MySQL一样,redis也是一个客户端-服务器结构的程序!!

redis客户端和服务器可以在同一个主机上,也可以在不同的主机上(当前学习阶段,一般只有一台机器,此时客户端和服务器在同一主机上)。

Redis客户端也有很多种形态:

1、自带的命令行客户端(文章中主要使用这个客户端)

redis-cli

2、图形化界面客户端(桌面程序,web程序)

像这样的图形化程序,依赖windows系统。而未来在实际工作种,你用来办公的windows系统,链接服务器可能会有诸多限制(之间可能会经过很多的跳板机,堡垒机,权限校验),你的windows上的图形化界面客户端能不能连上你们的服务器里的redis是个未知数。

3、基于redis的api自行开发客户端(工作中最主要的形态)

非常类似于mysql的C语言API和JDBC

补充:

上篇文章我们谈及到了redis的快,这里的快是相对于mysql这样的1关系型数据库而言的~~

但是如果是直接和内存中操作变量相比,就没有优势了,甚至更慢了!!

比如:应用程序需要存储用户点赞数,此时就需要以键值对存储视频id、点赞个数,那么此时是使用redis来存,还是直接在内存中搞个hash map来存呢?

此时就要对症下药,具体问题具体分析了。使用hash map是直接操作内存的,使用redis是先通过网络,再操作内存!很显然,hash map会比redis更快!但是,上述场景中是否要使用redis?也要结合实际需求来确定!引入redis确实会比hash map更慢,但是有了redis之后就可以把数据单独存储,后续应用服务器重启,不会影响到数据内容。如果未来要扩展成分布式服务器,使用redis也是更佳的。

Redis实战

如何去学习redis命令呢?

1、掌握常用命令。

2、学会使用redis文档。

阅读文档,是程序员的基操!任何一个工具软件,去找相关资料,一定是去看官方网站:Redis - The Real-time Data Platform

首先在学习redis命令之前,我们需要通过redis-cli来完成客户端和redis服务器交互:

核心命令:set 和 get

get:根据key来取value

set:把key和value存储进去(这里的key和value都是字符串)。

set key value

对于这里的key、value都是不需要加上引号的,就是表示字符串类型,当然如果加上单/双引号也是可以的。

这里还要补充一点:redis和mysql一样都是不区分大小写的

get key

如果当前键不存在就会返回nil

全局命令

Redis支持很多种数据结构,整体上来说Redis是键值对结构,key固定就是字符串,而value实际上会有很多种类型,如:字符串、哈希表、列表等,操作不同的数据结构就会有不同的命令。

全局命令,就是能够搭配任意一个数据结构来使用的命令~

keys

用来查询当前服务器上匹配的key,可以通过一些特殊符号(通配符)来描述key的模样,匹配上述摸样的key就能被查询出来。这些由通配符组成的包含特殊符号的字符串也被称为pattern~

那pattern是咋写的呢,又支持哪些通配符呢?

为了测试,我们先创建一下key-value

?匹配任意一个字符。

* 匹配0个或者多个任意字符
[abcd] 只能匹配到abcd,相当于给出固定选项

[^e] 排除e,只有e匹配不了,去其他都能匹配

[a-b] 匹配a-b这个范围内的字符,包括两侧边界

注意事项:keys命令的时间复杂度是O(N),因为他需要去遍历整个redis。

所以,在生产环境上都会禁止使用keys命令,尤其是keys *(查询redis中所有的key)

注意:这里是我们自己搭建的环境,key比较少,所以可以进行演示,但在生产环境下是一定一定不能使用keys *的!生产环境上的key可能会非常多,而redis是一个单线程的服务器,执行keys *的时间非常长,就使redis服务器被阻塞了,无法给其他客户端提供服务!!

我们之前说过,redis经常被用于做缓存,挡在MySQL面前,替MySQL负重前行~~ 万一redis被阻塞住了,此时其他的查询redis操作就超时了,这些请求就会直接查数据库~~

突然一大波请求过来了,MySQL措手不及,就容易挂了~~

什么是生产环境?

未来我们再工作中会涉及到的几个环境:

1、办公环境(入职公司之后,公司给你发个电脑)

笔记本(windows,mac)/台式机。一般8C16G512G

2、开发环境

有的时候,开发环境和办公环境使同一个;有的时候,开发环境是一个单独的服务器(28 C128G4T)。

做前端/客户端,一般来说,开发环境就是办公环境了,后端来说,很可能使单独的服务器。

因为有的后端程序可能会比较复杂~~

1、编译一次的时间特别久,需要使用高性能服务器,进行编译。

2、有的程序一启动要消耗更多的CPU和内存资源,办公电脑难以支撑。

3、有的程序比较依赖linux,在Windows环境下搭不起来.

3、测试环境

测试工程师使用的

4、线上环境/生产环境

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

线上环境则是外界用户能够访问到的。一旦生产环境上出问题,一定会对于用户的使用产生影响!!

那生产环境这么危险,我以后不操作生产环境行不行?==》不行

程序员把一个程序上线才算是把或干完了~~上线也是程序员的一个重要考核指标。

衡量一个实习生能不能转正留用~~就看上线次数~~如果一周能上线两三次,基本就稳了~~

exists

判定当前key是否存在。

返回值:key存在的个数。

时间复杂度:O(1)。

键值对存储的体系中(类似于哈希表),key得是唯一的。

redis支持很多数据结构,这里指的是value可以是一些复杂的数据结构。redis自身的这些键值对,是通过哈希表的方式来组织的。redis的某个值,又可以是一些数据结构。

那么一次查询两个键和分开查询有什么区别呢?

答案:分开的写法会产生更多轮次的网络通信,效率比较低,成本比较高(和直接操作内存比)。当前我们的客户端和服务器在同一台机器上,如果是在不同的机器上就需要涉及到网络的封装和分用,耗费更长的时间。

del(key)

可以一次删除一个或者多个

时间复杂度O(1)

返回值:返回删除掉的key的个数。

之前我们在学习mysql的时候,强调像drop database、drop table、delete from……都是非常危险的操作!!一旦删除之后,数据就没了~~

但是redis的主要应用场景是作为缓存,此时redis里存储的只是一个热点数据,全量数据仍然在MySQL中。此时,如果把redis中的key删除了几个,一般来说,问题不大~~

但是如果是MySQL这样的数据,哪怕误删了一个数据,影响都能使很大的。如果是把redis作为数据库,此时误删数据的影响就很大了;如果把redis作为mq,此时误删数据影响大不大就需要具体情况具体分析了。

expire

作用是给指定的key设置过期时间,当key存活时间超出这个指定的值,就会被自动删除。一般被用在有时间限制的业务场景,如:手机验证码、外卖优惠券、基于redis实现的分布式锁,为了避免出现不能正常解锁的情况,统称都会在加锁的时候设置过期时间(所谓的使用redis作为分布式锁,就是给redis重写一个特殊的key value)……

时间复杂度:O(1)

返回值:设置成功返回1,失败返回0.

10秒后,我们get一下hello:

显示为nil。

补充:pexpire能够设置毫秒级的时间

ttl

查看当前键的过期时间。

我们先设置hllo过期时间为100秒:

此时我们就可以通过ttl来查看过期时间了

与pexpire相对应还有一个ettl来查看毫秒级的过期时间

http://www.dtcms.com/a/557088.html

相关文章:

  • 企业实训|AI技术在产品研发领域的应用场景及规划——某央企汽车集团
  • linux系统移植过程中挂死问题分析
  • C++笔记:std::variant
  • day03(11.1)——leetcode面试经典150
  • 《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》---移动零,颜色分类
  • 视觉差网站制作百度站长统计
  • 求职专栏-【面试-自我介绍】
  • Chroma向量数据库详解:高效向量检索在AI应用中的实践指南
  • 【开题答辩全过程】以 风聆精酿啤酒销控一体系统的设计与实现为例,包含答辩的问题和答案
  • 二.docker安装与常用命令
  • 珠海网红打卡景点网站排名优化首页
  • 计算机网络Day01
  • QCES项目Windows平台运行指南
  • 多线程编程:条件变量、同步、竞态条件与生产者消费者模型
  • 怎么做高端品牌网站设计潍坊市住房和城乡建设网站
  • 哪个协会要做网站建设啊甘肃做网站哪家专业
  • springcloud : 理解Sentinel 熔断与限流服务稳定性的守护神
  • Webpack Tree Shaking 原理与实践
  • 一文讲透 npm 包版本管理规范
  • Qt 绘画 Widget 详解:从基础到实战
  • 【计算机网络】深入理解网络层:IP地址划分、CIDR与路由机制详解
  • 力扣3281. 范围内整数的最大得分
  • 力扣hot100----15.三数之和(java版)
  • 网站建设最重要的是什么什么是网站的主页
  • 影视传媒网站源码成华区建设局网站
  • 快速搭建网站 开源网络营销推广的目的是什么
  • 超越传统:大型语言模型在文本分类中的突破与代价
  • 【洛谷算题】顺序,分支,循环结构部分题目分享
  • Jmeter吞吐量控制器详解
  • 最全网站源码分享哈尔滨建设发展集团有限责任公司