Redis——认识Redis
简单介绍
Redis诞生于2009年,全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NoSQL数据库。
特征
- 键值(Key-value)型,value支持多种不同数据结构,功能丰富
- 单线程,每个命令具有原子性
- 低延迟,速度快(基于内存,IO多路复用,良好的编码)
- 支持数据的持久化
- 支持主从集群和分片集群
- 支持多语言客户端
安装Redis
对于Redis的安装,我们选择使用Linux作为环境进行安装,毕竟这种服务一经开发就是用作服务端,而服务端一般采用的操作系统就是Linux,所以我们选择直接安装在Linux上,省去了因为Windows的兼容问题到导致的出错。并且Redis的官方程序并没有支持Win版的格式,之前使用的Win版的Redis都是微软编译出来的。
我们使用的环境是CentOS7,所以在开始之前我们需要提前装好一个Linux的虚拟机,并保证虚拟机和宿主机之间可以互相ping通。
Redis的官网:雷迪斯 (redis.io)
然后,我们在官网找到下载界面,然后下载当前版本的最新版本:

我下载的时候,最新版本是7.2.0,然后下载好之后,他就是一个tar包,我们把这个tar包上传到Linux的虚拟机上:

先不着急解压,安装Redis的第一步是安装依赖,因为Redis是基于C语言编写的,所以在安装之前要先安装C语言的依赖:
yum install -y gcc tcl

解压Redis的tar包
tar -zxvf redis-7.2.0.tar.gz -C ../software
解压完成之后就是下面这样的

这个地方的软件安装路径可能不一样,这个就因人而异。
解压完成之后,我们需要进行一次编译,我们进入这个解压之后的目录:
make && make install
编译安装的过程会比较长,耐心等待即可。

默认的安装路径在`/usr/local/bin`目录下,我们可以来到这个目录看一下里面生成的文件:

这些文件中,比较重要的就是两个,一个是客户端一个是服务端。
redis-cli:是redis提供的命令行客户端
redis-server:是redis的服务端启动脚本
redis-sentinel:是redis的哨兵启动脚本
启动
前台启动
在刚才的编译安装的过程中,这些文件已经加入了环境变量中,也就是说我们在任何的位置都可以使用这个命令,最简单的启动命令就是直接运行这些脚本即可:
redis-server

当你看到这个redis的LOGO的时候,就表示这个Redis已经开始运行了。
这种方式叫做前台启动,这种启动方式会占用你的当前活动窗口,如果你要再启动一个客户端那你只能再次创建一个SSH连接才能再次开启一个活动窗口的方式去启动它。
指定配置文件启动
除了前台启动,还有一种方式叫做指定配置文件启动。
如果要让Redis以后台方式启动,则必须修改Redis的配置文件,就在我们之前解压的Redis安装包下,名字叫做redis.conf:

修改这个文件之前,首先对配置文件进行一个备份,防止因为错误操作而找不到原来的配置文件:
cp redis.conf redis.conf.bak
然后我们就可以去修改这个文件里面的内容了:

这个里面的内容非常的多,具体的修改的内容如下:
首先是bind的值:
# bind表示监听的地址,也就是允许访问的地址,默认的值就是127.0.0.1也就是只有本机才能访问,但是当我们在宿主机上 # 使用的时候就会造成很多的不便,这时候改成0.0.0.0就表示在任意的主机都可以访问这个Redis bind 0.0.0.0
然后是daemonize的值:
# 守护进程,默认值为no,设置为yes即可后台运行 # daemonize no daemonize yes
还有密码:
# 设置密码是为了保证安全性 requirepass 123456
以及其他的一些常见的配置:
# 监听的端口,端口号一般使用默认,但是如果端口号被其他的服务占用了就只能使用其他的端口号 port 6379 # 工作目录,默认是当前目录,也就是运行时候产生的日志,命令,持久化等都会保存在这个目录,默认是启动服务的目录 dir . # 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0-15 databases 1 # 设置redis能够使用的最大内存 maxmemory 512mb # 日志文件,默认为空,不记录日志,可以指定日志文件名,这里只写了文件名并没有写文件的路径,那么这个文件的路径默认就是和上面的dir路径是保持一致的。 logfile "redis.log"
然后就是带着配置文件启动,就是将配置文件的路径和文件名写在启动命令之后即可:
redis-server redis.conf

这次启动之后是不会有任何的结果出现在控制台上的,那么查看Redis有没有启动就要查看Linux的进程:

ps -ef | grep redis
可以看到已经存在一个Redis的进程,就说明Redis已经启动成功了:

然后如果你要停止Redis,那么就使用kill -9的杀死进程的命令即可。
开机自启
通过将Redis服务加入到系统服务中的方式实现开机自启。
首先要新建一个系统服务文件:
vim /etc/systemd/system/redis.service
文件的内容如下:
[Unit] Description=redis-server
After=nerwork.target [Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /home/morningstar/software/redis-7.2.0/redis.conf PrivateTmp=true
[Install]
WantedBy=multi-user.target
然后重新加载系统服务
systemctl daemon-reload
现在,我们就可以使用系统命令的方式查看Redis的状态,以及控制Redis的启停:
systemctl start redis systemctl status redis systemctl stop redis

注意,因为这个地方的启动和原来的进程启动有冲突,所以如果你没有关闭之前启动的Redis进程,则这里会报错,也就是这个绿色的点会变成红色,显示启动失败,但其实就是因为之前的Redis已经被启动了。
设置开机自启
systemctl enable redis
这样就可以设置开机自启了。

Redis客户端
命令行客户端
Redis安装完成之后就自带了命令行客户端:redis-cli,使用方式如下:
redis-cli [options] [commonds]

其中常见的options有:
- -h 127.0.0.1:指定要连接的redis节点的IP地址,默认是127.0.0.1
- -p 6379:指定要连接的redis节点的端口,默认是6379
- -a 123456:指定redis的访问密码
其中commonds就是Redis的操作命令,例如:
- ping:与Redis服务做心跳测试,服务端正常会返回pong
不指定commond时,会进入redis-cli的交互控制台:

在命令行中使用-a参数输入密码的方式会不安全,从而导致会出现一个警告,那么安全的做法是不使用密码登陆之后,在交互界面中校验密码:

使用AUTH命令校验密码,校验通过之后会出现一个【OK】,然后我们测试与服务器的连接则显示正常响应,如果在不使用密码进入交互命令行之后,不校验密码就进行操作,则会提示没有权限。
图形化客户端
对于Redis的图形化客户端,一般有使用Gethub上的项目,比如rdm,或者直接使用IDEA的客户端:

根据个人喜好选择即可。
相关文章:
Redis——认识Redis
简单介绍 Redis诞生于2009年,全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NoSQL数据库。 特征 键值(Key-value)型,value支持多种不同数据结构,功能丰富单线程&…...
通讯录怎么导入新手机?3个推荐小妙招
最近刚换了新手机,旧手机里的联系人太多了,不想在新手机上一个个重新添加。有没有什么快速简单的方法能够将通讯录导入新手机? 大家在更换新手机之后都是怎么导入通讯录的呢?换手机最重要的就是把数据进行完整转移,那么…...
Geoserver发布shp、tiff、瓦片等格式的GIS数据
这里写目录标题 1 发布shp矢量数据1.1 添加shp作为数据源1.2 发布shp图层1.3 预览服务1.4 配置样式 2 发布Postgres数据库2.2 发布数据 3 发布 tif 栅格数据3.1 添加 tif 数据源3.2 发布tif数据3.3 预览服务3.4 配置地图样式 关于中文标注乱码的问题 1 发布shp矢量数据 发布sh…...
读书笔记-《ON JAVA 中文版》-摘要24[第二十一章 数组]
文章目录 第二十一章 数组1. 数组特性2. 一等对象3. 返回数组4. 多维数组5. 泛型数组6. Arrays的fill方法7. Arrays的setAll方法8. 数组并行9. Arrays工具类10. 数组拷贝11. 数组比较12. 流和数组13. 数组排序14. binarySearch二分查找15. 本章小结 第二十一章 数组 1. 数组特…...
go语言基本操作---五
error接口的使用 Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型 type error interface {Error() string }package mainimport ("errors""fmt" )type Student struct {name stringid int }func …...
【sgLazyTree】自定义组件:动态懒加载el-tree树节点数据,实现增删改、懒加载及局部数据刷新。
特性 可以自定义主键、配置选项支持预定义节点图标:folder文件夹|normal普通样式多个提示文本可以自定义支持动态接口增删改节点可以自定义根节点Id可以设置最多允许添加的层级深度 sgLazyTree源码 <template><div :class"$options.name" v-lo…...
Rust个人学习笔记
感悟:感觉rust好像缝合怪,既有python的影子,又有java和cpp的影子,可能这就是新型编程语言趋势吧。而且他的各种规范很严格很规范,比java还更工程,各种规范不对都有warning。 命名规范:蛇形命名…...
Java根据身份证号码提取出省市区,JSON数据格式
package com.rdes.talents.utils;import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** Author: 更多实用源码 www.cx1314.cn* Date: 2023/9/7 …...
MySQL知识笔记——初级基础(实施工程师和DBA工作笔记)
老生长谈,MySQL具有开源、支持多语言、性能好、安全性高的特点,广受业界欢迎。 在数据爆炸式增长的年代,掌握一种数据库能够更好的提升自己的业务能力(实施工程师)。 此系列将会记录我学习和进阶SQL路上的知识…...
javaee 事务的传播行为
事务的传播行为 事务的第一个方面是传播行为(propagation behavior)。当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的…...
C#-SQLite-使用教程笔记
微软官网资料链接(可下载文档) 教程参考链接:SQLite 教程 - SQLite中文手册 项目中对应的system.dat文件可以用SQLiteStudio打开查看 参考文档:https://d7ehk.jb51.net/202008/books/SQLite_jb51.rar 总结介绍 1、下载SQLiteS…...
Tomcat详解 一:tomcat的部署
文章目录 1. Tomcat的基本介绍1.1 Tomcat是什么1.2 Tomcat的构成组件1.2.1 Web容器1.2.2 Servlet容器1.2.3 JSP容器(JAVA Scripts page) 1.3 核心功能1.3.1 Container 结构分析 1.4 配置文件1.5 Tomcat常用端口号1.6 启动和关闭Tomcat 2. 部署Tomcat服务…...
算法 - 二分
~~~~ 题目 - 整数二分需要考虑边界思路code开平方 - 浮点数二分codecode core 题目 - 整数二分需要考虑边界 给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始…...
蠕虫病毒问题
蠕虫病毒处理过程 修改病毒定时时间,今天遇到的是 */30 crontab -e先修改延长时间,会提示无操作权限,执行下面的问题 chattr -l /filepath查看可疑进程,这次遇到的进程有 /tmp/***** /tmp/crontab***** ps -auxkill -9 相关进程 删除/…...
pytest笔记2: fixture
1. fixture 通常是对测试方法和测试函数,测试类整个测试文件进行初始化或是还原测试环境 # 功能函数 def multiply(a, b):return a * b # ------------ fixture---------------def setup_module(module):print("setup_module 在当前文件中所有测试用例之前&q…...
day55 补
392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,&quo…...
CSS变量之var()函数的应用——动态修改样式 root的使用
一、css变量 body {--foo: #7F593F;--urls: ./img/xxx.jpg; }变量的名称可以用数字、汉字等,不能包含**$,[,^,(,%**等字符,变量的值也是可以使用各种属性值: 如: // 定义css变量 :r…...
索尼 toio ™应用创意开发征文|一个理想的绘画小助手
引言 toio™机器人是索尼推出的一款创意玩具,它的小巧和可编程性使其成为一个理想的绘画助手。通过编程控制机器人的运动和绘画工具,我们可以为小朋友提供一个有趣的绘画体验。 创意描述 我们可以通过JavaScript编程来控制toio™机器人的运动和绘画工具…...
java加密,使用python解密 ,使用 pysm4 报 byte greater than 16的解决方法
1,业务需要,对方需要用java进行参数加密,双方约定使用的加密方法是 SM4,对方给的key是32位,并且给出了加解密的java代码。 import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.security.Key; i…...
django后台启动CORS跨越配置
文章目录 背景什么是跨域问题?跨域问题的解决方案 Django 解决跨域问题 背景 什么是跨域问题? 跨域问题是指浏览器的同源策略限制了来自不同域的 AJAX 请求。 具体来说: 同源策略要求源相同才能正常进行 AJAX 通信。判断是否同源需要满足三个条件: 协…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
