初始Redis(入门篇)

目录

什么是Redis

Redis特性

速度快

丰富的功能

客户端语言多

持久化

主从复制

Redis可以做什么

缓存

排行榜系统

计数器应用

消息队列系统

Redis安装

centos7安装

Redis重要文件

Redis的使用

Redis通用命令

set   get

keys

 exists

del

expire


什么是Redis

Redis是⼀种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis
中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满⾜很多的应⽤场景,⽽且因为Redis会将所有数据都存放再内存中,所以它的读写性能⾮常惊⼈。不仅如此,Redis还可以将内存的数据利⽤快照和⽇志的形式保存到硬盘上,这样在发⽣类似断电或者机器故障的时候,内存中的数据不会“丢失”。除了上述功能以外,Redis还提供了键过期、发布订阅、事务、流⽔线、Lua脚本等附加功能。总之,如果在合适的场景使⽤Redis,它就会像⼀把瑞⼠军⼑⼀样所向披靡。

Redis特性

速度快

正常情况下,Redis的速度是非常快的,官方给出的速度是10万/秒,当前也是取决于机器的性能,这里不考虑机器的性能,我们只是分析一下是什么造就了Redis拥有如此快的速度.

  1. 高效的数据结构 redis使用动态字符串,哈希表,List集合,双向链表,压缩列表,和跳跃表等数据机构来实现数据存储,这样能将数据高效的存储和读取出来.

  2. 基于内存的操作, redis所有的操作都是基于内存的,并且大多数操作都是简单的存储和获取,而存取的大部分操作都消耗在I\O上,而I\O操作最快的就是内存了.

  3. 多路I\O复用模型, 多路指的是多个网络连接,复用指的是复用一个线程,这使得redis在单线程的基础上处理多个并发请求.多路复用内部采用epoll代理来实现,epoll会同时监测多个流的I\O事件,当没有事件时,就会阻塞.

  4. 单线程执行,单线程执行可以避免因为多个线程过度的抢占和调度而产生的时间.

丰富的功能

除了5中基本的数据结构,Redis还提供了很多的额外的功能.

1. 提供了键过期功能,用于实现缓存

2. 提供了发布订阅功能,用于使用消息系统

3. 提供了lua脚本功能,可以使用lua创造出新的Redis命令

4. 提供了事务管理功能,能在一定程度上保证事务特性

客户端语言多

Redis提供了简单的TCP协议,很多编程语言都可以轻松的接入Redis,,所以支持Redis客户端的语言也非常多,包括C、C++、Java、PHP、Python、NodeJS等.

持久化

因为Redis的数据是存储在内存中的,所以要是发生断电等极端情况,数据就会丢失,但是对于Redis来说,数据是不会丢失的,因为Redis提供了两种持久化功能:RDB,AOF,即可以使用这两种策略将内存的数据存储到硬盘中.这样就保持了数据了的持久化.

主从复制

Redis提供了复制功能,实现了多个数据的Redis副本.复制功能是分布式Redis的基础


Redis可以做什么

缓存

缓存机制几乎在所有的大型网站都有运用,合理的使用缓存不仅可以提高数据访问的速度,而且能够有效的降低后端数据源的压力.

一个合理的缓存设置能够为一个网站提供稳定的的使用体验.

排行榜系统

对于某些网站需要提供一个排行榜的功能,Redis提供了列表和有序集合的结构,能够轻松的实现排行榜功能.

计数器应用

计数器在⽹站中的作⽤⾄关重要,例如视频⽹站有播放数、电商⽹站有浏览数,为了保证数据的
实时性,每⼀次播放和浏览都要做加1的操作,如果并发量很⼤对于传统关系型数据的性能是⼀种挑
战。Redis天然⽀持计数功能⽽且计数的性能也⾮常好,可以说是计数器系统的重要选择。

消息队列系统

消息队列系统可以说是⼀个⼤型⽹站的必备基础组件,因为其具有业务解耦、⾮实时业务削峰等
特性。Redis提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列⽐还不够⾜够强⼤,但是对于⼀般的消息队列功能基本可以满⾜

Redis安装

关于Redis的安装,我们将linux系统上进行安装.

centos7安装

使用yum安装

yum install centos-release-scl-rh    # 安装scl源
yum install rh-redis5-redis   #安装redis5

执行上面的两条命令之后,Redis就成功的安装到了我们的centos7上了,接下来我们需要配置Redis.

Redis默认的安装目录是在:/opt/rh/rh-redis5/root/usr/bin里面.

针对可执行程序做符号链接: 

我们由于这个路径太深了,我们可以设置一个符号连接,就类似windows中的快捷方式.

cd /usr/bin    #进入usr/bin目录

## 将redis的可执行程序的符号链接放在当前目录下
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-server ./redis-server   
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-sentinel ./redis-sentinel
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-cli ./redis-cli

 针对配置文件做符号链接:

cd /etc/
ln -s /etc/opt/rh/rh-redis5/ ./redis

然后我们就需要修改配置文件中的属性了.

 我们需要进入设置的符号链接的这个目录:

cd redis/    
vim redis.conf    # 打开配置文件

修改配置文件:

修改IP地址:bind 0.0.0.0

关闭保护模式:protected-mode no

启动守护进程:daemonize yes

设置工作目录:dir /var/lib/redis

设置日志目录:logfile /var/log/redis/redis-server.log


修改完毕之后就保存退出即可.

我们在配置文件中设置了工作目录和日志目录,所以我们需要将这两个目录创建出来.

创建日志目录:mkdir -p /var/log/redis/

创建工作目录:mkdir -p /var/lib/redis

现在我们Redis的配置就全部完成了,接下来就可以启动了.

redis-server /etc/redis/redis.conf   #启动redis

停止redis:

查找Redis的pid

使用: kill -9 [redis进程号] 

Redis重要文件

redis-server是Redis服务器程序,开启Redis就是使用的这个文件。

redis-cli是在我们学习阶段需要频繁⽤到的⼀个命令⾏客⼾端程序。

/etc/redis.conf是Redis服务器的配置⽂件。

/etc/redis-sentinel.conf是RedisSentinel的配置⽂件。

redis-shutdown是⽤于停⽌Redis的专⽤脚本。
 

Redis的使用

Redis也是一个客户端服务器的程序,他的交互方式和MySQL没有区别.

现在我们可以直接使用redis-cli命令来连接到redis.

上述就是我们进入redis之后的终端.

127.0.0.1是因为我们是本机登录,6379是redis的默认端口.

Redis通用命令

Redis有多种数据结构,但它们都是键值对种的值,对于键来说有⼀些通⽤的命令。接下来将介绍这些通用命令.

set   get

set keyname  value   给对应的key设置value

实例:

给world键设置值为123 

get keyname    返回对应的键的value

如果键不存在,则返回nil

 

set和get命令是redis中使用最频繁的两个命令.他们的使用也非常简单.

keys

用来查询服务器上匹配的key

keys命令是通过一些通配符来描述出key的大致摸样,匹配上的key就是被查找出来.

匹配一个字符 ?

匹配0个或者任意个字符  *

[a,b,c] 只能匹配到中括号中的字符,别的不行

[^ab] 配置中括号中的字符,别的都能匹配

 

[a-e] 配置a-e这个区间的字符,包括两边字符

 

 exists

判断某个key是否存在

可以看到,如果存在,则返回1,如果不存在,则返回0

 

可以看到,当有多个key的时候,返回的是key存在的个数 

del

删除指定的key

成功删除返回1, 删除失败返回0

当同时删除多个key的时候,返回的就是删除成功的个数. 

expire

为指定的key设置过期时间 以秒为单位

 这里的过期时间指的是,为这个key设置时间,当时间到了之后,那么Redis就会自动的删除这个key.

在上图中,我们使用expire去给一个key设置了过期时间,再使用ttl查看这个key还剩余多少时间. 

 

当时间到了之后,使用ttl命令就会发现返回一个-2,在去查找这个key,发现已经找不到了. 

以上命令是Redis的全局命令,适用于Redis的所有数据结构.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/204497.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

生成式AI与预测式AI的主要区别与实际应用

近年来,预测式人工智能(Predictive AI)通过先进的推荐算法、风险评估模型、以及欺诈检测工具,一直在推高着该领域公司的投资回报率。然而,今年初突然杀出的生成式人工智能(Generative AI)突然成…

如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件

​ 某讯的手游保护系统用的都是一套,在其官宣的手游加固功能中有一项宣传是对比较热门的Unity3d引擎的手游保护方案,其中对Dll文件的保护介绍如下, “Dll加固混淆针对Unity游戏,对Dll模块的变量名、函数名、类名进行加密混淆处理&…

Android中添加C或C++代码

1、创建cpp目录,用于存放C和C代码。 2、创建CMake构建脚本CMakeLists.txt文件,将其放在cpp目录中。 # Sets the minimum version of CMake required to build the native library. cmake_minimum_required(VERSION 3.22.1)# Declares and names the pro…

单宁对葡萄酒可饮用性和陈酿潜力会有影响吗?

当在酿酒过程中葡萄酒中的单宁过量时,酿酒师可以使用白蛋白、酪蛋白和明胶等各种细化剂,这些药物可以与单宁分子结合,并将其作为沉淀物沉淀出来。随着葡萄酒的老化,单宁将形成长长的聚合链,氧气可以与单宁分子结合&…

数据挖掘实战-基于word2vec的短文本情感分析(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

【PPT模板合集】关于自制内容的PPT模板合集,包括原创的PPT及改良内容的PPT,适合科研/比赛/工作

【PPT模板合集】关于自制内容的PPT模板合集,包括原创的PPT及改良内容的PPT,适合科研/比赛/工作 零、前言一、校园层面的PPT模板1.1 各种毕业答辩1.2 夏令营答辩1.3 奖学金答辩1.4 比赛/项目答辩 二、学术层面的PPT模板2.1 学术汇报2.2 会议海报类型 三、…

使用VScode通过内网穿透在公网环境下远程连接进行开发

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

网站监控有什么作用?

科技改变生活,科技的发展让我们的生活越来越精彩丰富,数据中心机房监控系统也可以称为“自我监控系统”,主要是针对机房所有的设备及环境进行集中监控和管理的,其监控对象构成机房的各个子系统:动力系统、环境系统、消…

SpringBoot+Redis获取电脑信息

获取电脑信息 测试 System.getProperties(); System: 是Java中的一个内置类,用于提供与系统相关的功能和信息。这个类中包含了一些静态方法和常量,可以让您方便地访问和操作系统级别的资源。 getProperties(): 是一个静态方法,它返回一个表示…

学习笔记小结

redis-cluster集群 redis3.0引入的分布式存储方案 集群由多个node节点组成,redis数据分布在这些节点当中。 在集群之中分为主节点和从节点 集群模式当中,主从一一对应,数据的写入和读取与主从模式一样,主负责写,从…

实时沟通,实时增长:企业使用WhatsApp Business的不二选择

在数字化浪潮中,WhatsApp Business崭露头角,成为企业与客户之间沟通的新利器。今天运营坛将和大家深入探讨WhatsApp Business在2023年为企业带来的机遇,从增长率、客户群体、功能特性以及优势等方面剖析为何企业需要充分利用这一强大工具。 W…

VirtualBox上安装CentOS7

基础环境:宿主机是64位Windows10操作系统,通过无线网访问网络。 macOS可以以类似方式进行安装,不同之处见最后补充。 Step1 安装VirtualBox VirtualBox是一款免费、开源、高性能的虚拟机软件,可以跨平台运行,支持Wi…

突发,合肥一废品回收站发生火灾,富维AI神器助力防灾

昨晚,合肥一废品回收站突发火灾,火光冲天,烟雾蔓延。幸亏及时发现,消防人员迅速到场,控制了火势。这起事件让我们再次认识到火灾报警的重要性。而在这方面,北京富维图像公司的FIS智能图像识别系统就发挥了巨…

1+x中级网络运维实验题

任务 1: 设备命名 为了方便后期维护和故障定位及网络的规范性,需要对网络设备进行规范化命名。请根据 Figure 3-1 实验考试拓扑对设备进行命名。命名规则为:城市-设备的设置地点-设备的功能属性和序号-设备型号。例如:处于杭州校…

基于 Gin 的 HTTP 代理 Demo(2)

一周后勘误: 我这里实现的严格来说还是 HTTP 代理,只不过是通过隧道的方式传输非 HTTP 的流量,这里是 HTTPS 流量。尽管它可以传输 HTTPS 流量,它也不算是 HTTPS 代理。 上次写了 基于 Gin 的 HTTP 代理 Demo 之后,对…

ant design vue3 处理 ant-card-head ant-tabs靠左边对齐之has选择器不生效

火狐浏览器是不支持has的。 解决方法:通过position来解决。

解析编程中的技术迷题:常见挑战与应对策略

前言 在数字化时代的浪潮中,编程已经成为了一项至关重要的技能。无论是在软件开发、数据分析、人工智能还是互联网领域,编程都扮演着不可或缺的角色。作为一种创造性的活动,编程不仅仅是代码的书写,更是一种解决问题和创新的思维方…

软件测试的测试文档怎么编写?

在软件测试中的流程中,测试文档也是一个重要的流程,所以测试人员也需要学习测试文档的编写和阅读。 一定义: 测试文档(TestingDocumentation)记录和描述了整个测试流程,它是整个测试活动中非常重要的文件。…

【JavaEE初阶】 详解HTTPS协议加密过程

文章目录 🌴HTTPS协议是什么?🎄运营商劫持事件🎋HTTPS的工作过程🚩对称加密🚩非对称加密🚩引入证书🚩完整流程 🌳HTTPS加密总结⭕总结 🌴HTTPS协议是什么&…

基于Netty实现TCP通信

创建一个Maven项目添加下面依赖 <dependencies><!-- 日志依赖 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.32</version></dependency><dependency><g…