初始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的所有数据结构.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS开发工具简介

工具简介 更新时间: 2023-10-13 11:06 分享 添加收藏 说明 该文档匹配DevEco Studio 3.1.1 Release版本。 概述 HUAWEI DevEco Studio(获取工具请单击链接下载,以下简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造&#xff0c…

基于Java+SpringBoot+Vue3+Uniapp+TypeScript(有视频教程)前后端分离的求职招聘小程序

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

机器人AGV小车避障传感器测距

一、A22超声波传感器 该模块是基于机器人自动控制应用而设计的超声波避障传感器,针对目前市场上对于超声波传感器模组盲区大、测量角度大、响应时间长、安装适配性差等问题而着重设计。 具备了盲区小、测量角度小、响应时间短、过滤同频干扰、体积小、安装适配性高…

micropython - espnow

espnow这个东西可以很简单的进行多设备近距离互联,连握手都不用注册一下就能发信息 目前8266那个8角的刷20231105的1M的固件可以运行 8266目前没有信号强度功能所以我自己写的类强度返回为0 我写的类实例化后最后注册谁发消息就是给谁而接收端则是什么都接&#xff…

csapp-linklab之第3阶段“输出学号”实验报告(强弱符号)

题目 新建一个phase3_patch.o,使其与main.o和phase3.o链接后,运行输出自己的学号: $ gcc -o linkbomb main.o phase3.o phase3_patch.o $ ./linkbomb $学号 提示 利用符号解析中的强弱符号规则。(COOKIE字符串未初始化&#xff…

编写算法,对n个关键字取整数值的记录序列进行整理。以使所有关键字为负值的记录排在关键字为非负值的记录之前

编写算法,对n个关键字取整数值的记录序列进行整理。以使所有关键字为负值的记录排在关键字为非负值的记录之前,要求: (1)采用顺序存储结构,至少使用一个记录的辅助存储空间 (2)算法的…

Echarts大屏可视化_04 横向柱状图模块的引入和开发

模块的引入 1.寻找官方示例引入 ECharts官方实例入口 2.引入示例 ECharts 示例 可从这里直接进入 标题、提示信息、图例都不需要所以直接删掉 <div class"column"><div class"panel bar2"><h2>柱状图-技能掌握</h2><div cla…

直线上最多的点数

题目链接 直线上最多的点数 题目描述 注意点 points 中的所有点 互不相同points[i].length 2 解答思路 一条直线的函数为f(x)axb&#xff0c;两个点决定一条直线&#xff0c;也就是决定了f(x)中斜率a和截距b的值&#xff0c;所以考虑使用一个哈希表存储直线中的a和b并记录…

读取ini配置文件----c++

使用boost库读取ini配置文件 #include "boost/property_tree/ptree.hpp" #include "boost/property_tree/ini_parser.hpp"/// 读取ini配置文件数据 bool readIni(const std::string iniPath) {try {boost::property_tree::ptree pt;// 使用 ini_parser 解…

Springboot如何快速生成分页展示以及统计条数

这是表结构&#xff1a; 前置知识&#xff1a; 分页查询公式&#xff08;&#xff09;&#xff1a; -- 推导一个公式 -- select * from emp -- order by empno -- limit 每页显示记录数 * (第几页-1)&#xff0c;每页显示记录数 统计条数公式&#xff1a; select count…

addEventListener时使用bind(this),后面无法用removeEventListener移除

问题 在使用addEventListener为DOM元素绑定事件时&#xff0c;使用了bind(this)来改变函数内的this指向。然后使用removeEventListener对事件进行解绑时&#xff0c;发现解绑失败。 原因 假如使用addEventListener绑定事件时&#xff0c;传递的是匿名函数&#xff0c;那么使…

Python基础语法之学习字符串快速格式化

Python基础语法之学习字符串快速格式化 一、代码二、效果 一、代码 # 通过f"{占位}"控制字符串快速格式化,不做精度控制 name "张三" age 13 money 12.5 text f"姓名是{name},年龄是{age},钱是{money}" print(text)二、效果 每一天都是一个…

MySQL处理并发访问和高负载的关键技术和策略

我深知在数据库管理中处理并发访问和高负载的重要性。在这篇文章中&#xff0c;我将探讨MySQL处理并发访问和高负载的关键技术和策略&#xff0c;以帮助读者更好地优化数据库性能。 图片来源&#xff1a;MySQL处理并发访问和高负载的关键技术和策略 MySQL数据库在处理并发访问…

iptables防火墙之SNAT与DNAT

1. SNAT SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由) SNAT原理:源地址转换&#xff0c;根据指定条件修改数据包的源IP地址&#xff0c;通常被叫做源映射。 数据包从内网发送到公网时&#xff0c;SNAT会把数据包的源IP由私网IP…

python技术栈之单元测试中mock的使用

什么是mock&#xff1f; mock测试就是在测试过程中&#xff0c;对于某些不容易构造或者不容易获取的对象&#xff0c;用一个虚拟的对象来创建以便测试的测试方法。 mock的作用 特别是开发过程中上下游未完成的工序导致当前无法测试&#xff0c;需要虚拟某些特定对象以便测试…

git新建分支和合并fork分支

git新建分支和合并fork分支 1.新建和删除分支2.回滚代码3.合并分支4.删除分支5.仓库迁移 1.新建和删除分支 git checkout --orphan emptybranch git rm -rf . echo # new branch >> README.md git add README.md git commit -m new branch git push origin emptybranch2…

基于Java SSM框架+Vue实现垃圾分类网站系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现垃圾分类网站系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个垃圾分类网站 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述…

Python快速实现BMI(身体质量指数)计算器(窗口界面形式)

BMI是身体质量指数&#xff08;Body Mass Index&#xff09;的缩写&#xff0c;是一种衡量人体肥胖程度的指标。它是根据人的身高和体重计算得出的&#xff0c;公式为&#xff1a; BMI 体重&#xff08;kg&#xff09;/ 身高^2&#xff08;m&#xff09; 其中&#xff0c;体…

NDK代码编译的方式,ndk-build,Cmake,独立工具链分别有什么区别

NDK代码编译的方式有三种&#xff0c;分别是基于Make的ndk-build&#xff0c;CMake&#xff0c;以及独立工具链。它们的区别如下&#xff1a; 基于Make的ndk-build是Android NDK r4引入的一个shell脚本&#xff0c;它使用Android.mk和Application.mk文件来描述编译参数和配置&…

【UE】透视效果

效果 步骤 1. 新建一个空白工程 2. 添加一个第三人称游戏和初学者内容包到内容浏览器 3. 新建一个材质&#xff0c;这里命名为“M_Perspective” 打开“M_Perspective”&#xff0c;设置材质域为后期处理 添加三个“SceneTexture”节点&#xff0c;场景纹理ID选项分别设置为“…