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

【Redis】的简介和安装配置(Linux和windows)及操作命令

目录

一、概述

1.介绍

2.特点

二、安配

1. 安装

2. 配置 

3. 主机连接

1.Linux连接

2.windows连接

三、命令

1. 字符串(String)

2. 哈希(Hash)

3. 列表(List)

4. 集合(Set)


一、概述

1.介绍

Redis是一个开源的、基于内存的高性能键值存储系统。它是由Salvatore Sanfilippo开发的,最初是用作LLOOGG(一个实时日志分析工具)的缓存数据库。随着时间的推移,Redis逐渐发展成为一个功能强大、广泛应用的数据存储和缓存解决方案。

Redis的核心特点是高性能和丰富的数据结构支持。它将数据存储在内存中,因此具有极快的读写速度。此外,Redis还采用了一系列优化策略,如异步IO、事件驱动等,以提高系统的吞吐量和响应速度。Redis还支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等,每种数据结构都有相应的操作命令,可以对其进行快速、高效的增删改查操作。

Redis提供了两种持久化方式:RDB和AOF。RDB是一种快照方式,可以将当前内存中的数据保存到磁盘上的一个二进制文件中。RDB文件是一个紧凑的、压缩的二进制格式,适合用于备份和恢复数据。AOF是一种追加日志方式,可以将每个写操作都追加到一个日志文件中。通过重新执行这些写操作,可以恢复出完整的数据集。AOF文件是一个文本文件,可以通过简单的文本编辑器查看和修改。

除了高性能和持久化支持,Redis还具备分布式特性。它支持主从复制、哨兵和集群等机制,可以将数据分布在多个节点上,提高系统的可扩展性和容错性。主从复制可以实现数据的读写分离和故障恢复,哨兵可以监控节点状态并进行自动故障转移,集群可以将数据分片存储在多个节点上,提供更高的性能和可用性。

Redis还提供了许多其他功能,如发布/订阅、事务、Lua脚本等。发布/订阅功能可以实现消息的发布和订阅,用于构建实时通信和事件驱动的系统。事务功能可以将多个命令组合成一个原子操作,保证操作的一致性。Lua脚本功能可以在Redis服务器端执行Lua脚本,提供更复杂的业务逻辑处理能力。

总之,Redis是一个功能强大、性能优越的键值存储系统,广泛应用于缓存、队列、计数器、排行榜等场景。它提供了丰富的数据结构和操作命令,具备高性能、持久化和分布式支持,为应用程序提供快速、可靠的数据访问服务。

2.特点

Redis的特点如下:

  1. 高性能:Redis将数据存储在内存中,因此具有极高的读写性能。它采用了多种优化策略,如异步IO、事件驱动等,来提高系统的吞吐量和响应速度。

  2. 数据持久化:Redis支持数据的持久化存储,可以将数据写入磁盘,以防止系统故障时的数据丢失。它提供了两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。

    • RDB是一种快照方式,可以将当前内存中的数据保存到磁盘上的一个二进制文件中。RDB文件是一个紧凑的、压缩的二进制格式,适合用于备份和恢复数据。

    • AOF是一种追加日志方式,可以将每个写操作都追加到一个日志文件中。通过重新执行这些写操作,可以恢复出完整的数据集。AOF文件是一个文本文件,可以通过简单的文本编辑器查看和修改。

  3. 多种数据结构支持:Redis支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。每种数据结构都有相应的操作命令,可以对其进行增删改查等操作。

    • 字符串是最基本的数据结构,可以存储任意类型的数据,如整数、浮点数、二进制数据等。

    • 哈希表是一个键值对的集合,可以用于存储对象。每个键值对都是一个字段和值的映射关系。

    • 列表是一个有序的字符串集合,可以进行插入、删除、查找等操作。它还支持各种列表操作,如获取子列表、插入元素、删除元素等。

    • 集合是一个无序的字符串集合,可以进行添加、删除、查找、求交集、求并集等操作。

    • 有序集合是一个有序的字符串集合,每个元素都有一个分数,可以根据分数进行排序和范围查找。

  4. 分布式支持:Redis支持分布式部署,可以将数据分布在多个节点上,提高系统的可扩展性和容错性。它提供了主从复制、哨兵和集群等机制,可以实现数据的高可用和自动故障转移。

总之,Redis是一个功能强大、性能优越的键值存储系统,可以广泛应用于缓存、队列、计数器、排行榜等场景,为应用程序提供快速、可靠的数据访问服务。

二、安配

1. 安装

打开虚拟机Linux的Centos,进行开机,并且使用MobaXterm进行连接。

进入我们的资源管理文件夹中 

输入命令 :   cd /root/javaCloudJun/software/

redis下载到本地为压缩包,并且将redis的资源包从本地拖入到虚拟机中

下载 redisicon-default.png?t=N7T8https://redis.io/download/输入命令 :  ll   ( 可以查看到 )

并且对redis资源包进行解压

输入命令 : tar -xvf redis-5.0.0.tar.gz

解压后可以查看到有了redis文件

进入到redis的文件里面

命令 : cd redis-5.0.0

进行安装redis

命令 : make

之后进行检测安装情况

命令 :  make install

检测完成后,修改redis.conf文件

将文件中 daemonize no 改为 daemonize yes  

输入命令 : vim redis.conf    ( 进入到redis.conf文件中 )

进入后 找到daemonize no  按  进入编辑模式  修改为  daemonize yes  

修改完成后 按 Esc  退出编辑 之后输入 :wq  ( 保存修改并且退出 )

操作如图 : 

修改完成后,启动redis

命令 :  ./src/redis-server  redis.conf 

启动redis后,进行检查

命令 :  lsof -i:6379   ( 有数据返回说明检查完成 )

测试redis启动是否成功 

命令 :  ./src/redis-cli   ( 连接到到端口 ) 

命令 :  ping    ( 输出PONG说明连接成功 )

2. 配置 

测试完成,退出redis,并且关闭redis的进程

命令 : exit  ( 退出连接 )

命令 : lsof -i:6379  ( 获取到PID )

命令 : kill -9 11833  ( 拿到该PID关闭该进程 )

并且再次查看,没有数据输出说明关闭成功。

修改 redis.conf 文件,需要对主机(主机的电脑)进行连接,就需要将绑定本机(虚拟机)的IP进行注释,并且设置连接的登入密码。
命令 :  vim redis.conf   ( 进入到redis.conf文件进行编辑 )

进入后输入 :   :/bind 127.0.0.1      ( 找到绑定的本地IP )

按 i  进行编辑  在bind 127.0.0.1的前面加一个进行注释

如图 :

注释IP后,按Esc退出 

并且输入 :    :/requirepass

在 按  i  进入编辑模式

requirepass前面的#删减掉

并且将后面的密码修改为自己的密码,我这里设置 123456

编辑完成后,按Esc退出

并且输入 :  :wq   ( 保存编辑并且退出 )

如图: 

主机(自己的电脑)需要连接,就需要开放端口,redis的端口为 : 6379

#设置防火墙开放 6379 端口

输入命令 :  firewall-cmd --zone=public --add-port=6379/tcp --permanent

#并且更新防火墙,查看开放端口

输入命令 : firewall-cmd --reload && firewall-cmd --list-port

端口开放后,重新启动redis

命令 :  ./src/redis-server  redis.conf

启动后,检查是否完成

命令 :  lsof -i:6379  ( 有数据返回说明完成 )

之后连接到端口,查看本机是否可以连接完成

命令 :  ./src/redis-cli  ( 连接到端口 )

命令 :  ping   ( error连接失败 )

退出端口,将我们的本地IP,端口号及设置的密码 (123456) 再进行连接。

命令 : exit ( 退出 )

命令 :  ./src/redis-cli  -h 127.0.0.1 -p 6379 -a 123456  

( 注 : -h 是IP  -p 是端口  -a 是密码 )

再次测试连接

命令 : ping ( 输出PONG说明连接成功 )

如图 : 

3. 主机连接

1.Linux连接

在主机中,打开数据库(RedisDesktopManager)进行连接Redis

RedisDesktopManager数据库的下载icon-default.png?t=N7T8https://docs.redisdesktop.com/en/2019/install/

( 下载后,可能需要解压,之后就是傻瓜式安装即可 )

然后打开RedisDesktopManager数据库

如图操作 :

2.windows连接

在本地从官网下载Redis-x64-3.2.100资源包进行解压,然后进入解压后的文件,

将redis.windows.conf文件进行修改,修改内容一样

bind 127.0.0.1的前面加一个进行注释

并且将后面的密码修改为自己的密码,我这里设置 123456

在创建一个文件,名为 : redis.bat

该文件内容为 : 

cd Redis-x64-3.2.100
redis-server redis.windows.conf

将该文件放入解压后的文件中,之后双击开启文件,会有个黑窗口,不用关掉

进入RedisDesktopManager数据库,进行windows连接

操作如图 : 

三、命令

连接后,会有16个数据库

在虚拟机中输入 :  select 3 ( 是进入为3的数据库 )  

1. 字符串(String)

增加值 //保存

set  key的名称   key的值

如以下命令 : 

# 查看值//获取

get key的名称

 如以下命令 : 

# type key //查看类型

type  key的名称

 如以下命令 : 

// 给键值对设置过期时间,数据过来该key和值自动删除

setex   key的名称  60 key的值

 如以下命令 : 

# ttl ikun    // 获取键值对剩余的存活时间

# ttl key的名称

 如以下命令 : 

 

2. 哈希(Hash)

Redis中哈希(Hash)是一种键值对的集合,其中每个键都对应一个值。哈希通常用于存储对象,其中对象的属性对应哈希的键,属性值对应哈希的值。以下是一些常用的Redis哈希命令:

1. HSET key field value :设置指定key中指定field的值为value。
2. HGET key field:获取指定key中指定field的值。
3. HDEL key field1 field2 ...   :删除指定key中指定的field。
4. HEXISTS key field : 检查指定key中是否存在指定的field。
5. HGETALL key : 获取指定key中所有的field-value对。
6. HINCRBY key field increment :将指定key中指定field的值增加指定的增量。
7. HKEYS key :获取指定key中所有的field。
8. HLEN key :获取指定key中field的数量。
9. HMGET key field1 field2 ... :获取指定key中指定的field的值。
10. HMSET key field1 value1 field2 value2 ... :同时设置指定key中多个field的值。
11. HSETNX key field value :当指定key中指定field不存在时,设置其值为value。
12. HVALS key :获取指定key中所有的value。

除了以上命令,Redis还提供了一些其他的哈希命令,如HINCRBYFLOAT、HSCAN等,用于处理浮点数增量操作、哈希扫描等操作。

需要注意的是,Redis的哈希是一个无序的键值对集合,其中键和值都可以是任意类型的数据。在使用哈希命令时需要注意数据的类型和格式。另外,Redis的哈希命令都是原子操作,保证了操作的一致性和并发性。

可以根据以上的命令结构进行输入命令,保存你需要的 哈希(Hash)值到数据库

3. 列表(List)

Redis中列表(List)是一个有序的字符串列表,其中每个元素都可以是任意类型的数据。以下是一些常用的Redis列表命令:

1. LPUSH key value1 value2 ...:将一个或多个值插入到列表的左侧。
2. RPUSH key value1 value2 ...:将一个或多个值插入到列表的右侧。
3. LPOP key:移除并返回列表的左侧第一个元素。
4. RPOP key:移除并返回列表的右侧第一个元素。
5. LINDEX key index:获取列表中指定索引位置的元素。
6. LINSERT key BEFORE|AFTER pivot value:在列表中指定元素的前面或后面插入一个新元素。
7. LLEN key:获取列表的长度。
8. LRANGE key start stop:获取列表中指定范围内的元素。
9. LREM key count value:从列表中删除指定数量的元素。
10. LSET key index value:设置列表中指定索引位置的元素的值。
11. LTRIM key start stop:截取列表中指定范围内的元素,保留指定范围内的元素,其余元素删除。

除了以上命令,Redis还提供了一些其他的列表命令,如BLPOP、BRPOP、LINSERT、RPOPLPUSH等,用于处理阻塞弹出、列表插入、列表弹出和列表移动等操作。

需要注意的是,Redis的列表是一个有序的字符串列表,其中元素可以是任意类型的数据。在使用列表命令时需要注意数据的类型和格式。另外,Redis的列表命令都是原子操作,保证了操作的一致性和并发性。

可以根据以上的命令结构进行输入命令,保存你需要的 列表(List)值到数据库 

4. 集合(Set)

Redis中集合(Set)是一个无序的、不重复的字符串集合,其中每个元素都可以是任意类型的数据。以下是一些常用的Redis集合命令:

1. SADD key member1 member2 ... :向集合中添加一个或多个元素。
2. SMEMBERS key:获取集合中的所有元素。
3. SISMEMBER key member:检查集合中是否存在指定的元素。
4. SCARD key:获取集合中元素的数量。
5. SREM key member1 member2 ...:从集合中移除一个或多个元素。
6. SPOP key:随机移除并返回集合中的一个元素。
7. SRANDMEMBER key [count]:随机获取集合中的一个或多个元素。
8. SINTER key1 key2 ...:获取多个集合的交集。
9. SUNION key1 key2 ...:获取多个集合的并集。
10. SDIFF key1 key2 ...:获取多个集合的差集。
11. SINTERSTORE destination key1 key2 ...:将多个集合的交集存储到一个新的集合中。
12. SUNIONSTORE destination key1 key2 ...:将多个集合的并集存储到一个新的集合中。
13. SDIFFSTORE destination key1 key2 ...:将多个集合的差集存储到一个新的集合中。

除了以上命令,Redis还提供了一些其他的集合命令,如SMOVE、SSCAN等,用于集合的移动和集合的扫描等操作。

需要注意的是,Redis的集合是一个无序的、不重复的字符串集合,其中元素可以是任意类型的数据。在使用集合命令时需要注意数据的类型和格式。另外,Redis的集合命令都是原子操作,保证了操作的一致性和并发性。

可以根据以上的命令结构进行输入命令,保存你需要的 集合(Set)值到数据库 

这里有更详细的教程,并且了解这些命令,可以进入到该网站深入学习,让增加变强

Redis 命令的详细深入学习了解icon-default.png?t=N7T8https://www.w3cschool.cn/redis/redis-commands.html

 

相关文章:

  • Hive 解析 JSON 字符串数据的实现方式
  • Golang源码分析之golang/sync之singleflight
  • 【Java初阶练习题】-- 数组练习题
  • Qt界面美化之Qt Style Sheets
  • Ansible自动化安装部署及使用
  • 单链表基本操作的实现,初始化,头插,尾插,判空,获取个数,查找,删除,获取前置和后置位,清空,销毁
  • 在树莓派上使用Nginx搭建本地站点并通过内网穿透实现远程访问
  • 个人网站迁移
  • 由于找不到vcruntime140.dll无法继续执行代码
  • 【Qt6】QStringList
  • 【Midjourney入门教程3】写好prompt常用的参数
  • uniapp在APP端使用swiper进行页面不卡顿滑动
  • Eureka处理流程
  • 算法题:53. 最大子数组和(动态规划)Java Python 实现
  • Vue时间控件赋值后无法重选问题解决方案
  • .pyc 想到的一些问题
  • 【Amaple教程】5. 插件
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Angular6错误 Service: No provider for Renderer2
  • angular学习第一篇-----环境搭建
  • C# 免费离线人脸识别 2.0 Demo
  • iOS小技巧之UIImagePickerController实现头像选择
  • Python_网络编程
  • Python3爬取英雄联盟英雄皮肤大图
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • windows下使用nginx调试简介
  • 给新手的新浪微博 SDK 集成教程【一】
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 聊聊flink的TableFactory
  • 每天10道Java面试题,跟我走,offer有!
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 微信开源mars源码分析1—上层samples分析
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 走向全栈之MongoDB的使用
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​低代码平台的核心价值与优势
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #DBA杂记1
  • #stm32整理(一)flash读写
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #每天一道面试题# 什么是MySQL的回表查询
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (175)FPGA门控时钟技术
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (C语言)fgets与fputs函数详解
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (四)Controller接口控制器详解(三)
  • (四)Linux Shell编程——输入输出重定向