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

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树节点数据,实现增删改、懒加载及局部数据刷新。

特性 可以自定义主键、配置选项支持预定义节点图标&#xff1a;folder文件夹|normal普通样式多个提示文本可以自定义支持动态接口增删改节点可以自定义根节点Id可以设置最多允许添加的层级深度 sgLazyTree源码 <template><div :class"$options.name" v-lo…...

Rust个人学习笔记

感悟&#xff1a;感觉rust好像缝合怪&#xff0c;既有python的影子&#xff0c;又有java和cpp的影子&#xff0c;可能这就是新型编程语言趋势吧。而且他的各种规范很严格很规范&#xff0c;比java还更工程&#xff0c;各种规范不对都有warning。 命名规范&#xff1a;蛇形命名…...

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工作笔记)

老生长谈&#xff0c;MySQL具有开源、支持多语言、性能好、安全性高的特点&#xff0c;广受业界欢迎。 在数据爆炸式增长的年代&#xff0c;掌握一种数据库能够更好的提升自己的业务能力&#xff08;实施工程师&#xff09;。 此系列将会记录我学习和进阶SQL路上的知识&#xf…...

javaee 事务的传播行为

事务的传播行为 事务的第一个方面是传播行为&#xff08;propagation behavior&#xff09;。当事务方法被另一个事务方法调用时&#xff0c;必须指定事务应该如何传播。例如&#xff1a;方法可能继续在现有事务中运行&#xff0c;也可能开启一个新事务&#xff0c;并在自己的…...

C#-SQLite-使用教程笔记

微软官网资料链接&#xff08;可下载文档&#xff09; 教程参考链接&#xff1a;SQLite 教程 - SQLite中文手册 项目中对应的system.dat文件可以用SQLiteStudio打开查看 参考文档&#xff1a;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容器&#xff08;JAVA Scripts page&#xff09; 1.3 核心功能1.3.1 Container 结构分析 1.4 配置文件1.5 Tomcat常用端口号1.6 启动和关闭Tomcat 2. 部署Tomcat服务…...

算法 - 二分

~~~~ 题目 - 整数二分需要考虑边界思路code开平方 - 浮点数二分codecode core 题目 - 整数二分需要考虑边界 给定一个按照升序排列的长度为 n 的整数数组&#xff0c;以及 q 个查询。 对于每个查询&#xff0c;返回一个元素 k 的起始位置和终止位置&#xff08;位置从 0 开始…...

蠕虫病毒问题

蠕虫病毒处理过程 修改病毒定时时间&#xff0c;今天遇到的是 */30 crontab -e先修改延长时间&#xff0c;会提示无操作权限,执行下面的问题 chattr -l /filepath查看可疑进程&#xff0c;这次遇到的进程有 /tmp/***** /tmp/crontab***** ps -auxkill -9 相关进程 删除/…...

pytest笔记2: fixture

1. fixture 通常是对测试方法和测试函数&#xff0c;测试类整个测试文件进行初始化或是还原测试环境 # 功能函数 def multiply(a, b):return a * b # ------------ fixture---------------def setup_module(module):print("setup_module 在当前文件中所有测试用例之前&q…...

day55 补

392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;&quo…...

CSS变量之var()函数的应用——动态修改样式 root的使用

一、css变量 body {--foo: #7F593F;--urls: ./img/xxx.jpg; }变量的名称可以用数字、汉字等&#xff0c;不能包含**$&#xff0c;[&#xff0c;^&#xff0c;(&#xff0c;%**等字符&#xff0c;变量的值也是可以使用各种属性值&#xff1a; 如&#xff1a; // 定义css变量 :r…...

索尼 toio ™应用创意开发征文|一个理想的绘画小助手

引言 toio™机器人是索尼推出的一款创意玩具&#xff0c;它的小巧和可编程性使其成为一个理想的绘画助手。通过编程控制机器人的运动和绘画工具&#xff0c;我们可以为小朋友提供一个有趣的绘画体验。 创意描述 我们可以通过JavaScript编程来控制toio™机器人的运动和绘画工具…...

java加密,使用python解密 ,使用 pysm4 报 byte greater than 16的解决方法

1&#xff0c;业务需要&#xff0c;对方需要用java进行参数加密&#xff0c;双方约定使用的加密方法是 SM4&#xff0c;对方给的key是32位&#xff0c;并且给出了加解密的java代码。 import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.security.Key; i…...

django后台启动CORS跨越配置

文章目录 背景什么是跨域问题&#xff1f;跨域问题的解决方案 Django 解决跨域问题 背景 什么是跨域问题&#xff1f; 跨域问题是指浏览器的同源策略限制了来自不同域的 AJAX 请求。 具体来说: 同源策略要求源相同才能正常进行 AJAX 通信。判断是否同源需要满足三个条件: 协…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...