Redis简单介绍与安装应用

news2024/9/23 15:08:11

        在当今的互联网时代,数据的快速存取和处理变得至关重要。Redis,作为一种高性能的键值存储系统,已经成为许多开发者和企业的首选。本文将简要介绍Redis的基本概念、工作原理以及其在实际应用中的一些典型用例。

一、简介

1)概念

        Redis(Remote Dictionary Server)是一个开源的 NoSQL 数据库,它是基于内存的,因此读写速度快,适合用作缓存。它以其卓越的性能和丰富的数据结构支持而闻名,包括字符串、哈希、列表、集合、有序集合等。NoSQL 即 Not-Only SQL,指的是不仅仅使用 SQL 语言作为数据库查询语言的数据库管理系统。

 2)常见的 NoSQL 数据库

  • KV键值对类型:Redis
  • 列式存储:Hbase
  • 文档类型存储:MongoDB
  • 图形化存储:Neo4J

 二、Redis的特点

  1. 高性能:Redis能够处理大量的并发请求,读写速度极快,因为它的数据存储在内存中。
  2. 持久化:虽然Redis是内存数据库,但它提供了持久化选项,可以将内存中的数据保存到磁盘上,以防系统故障。
  3. 原子性:Redis的所有操作都是原子性的,这意味着多个操作可以组合在一起作为一个单独的原子操作执行。
  4. 丰富的数据类型:Redis支持多种数据类型,这使得它能够轻松处理各种复杂的数据结构。
  5. 可扩展性:Redis支持主从复制和哨兵系统,可以轻松实现数据的分布式存储和高可用性。

三、Redis工作原理

        Redis采用事件驱动的架构,单线程处理所有客户端请求。它通过事件循环监听文件事件(客户端连接、命令请求)、时间事件(过期键清理)和定时器事件(客户端超时请求)。

四、Redis 安装

redis官方只给了linux版本的下载,并没有windows,网络上流传的windows版本是微软团队写的。

1)安装 

1、上传并解压
tar -zxvf redis-5.0.4.tar.gz -C /opt/installs/
2、安装GCC环境
yum安装需要网络环境,必须能够联网才行
yum -y install gcc-c++
3、编译我们的redis源代码
cd /opt/installs/redis-5.0.4
进行 make     在 src目录下
4、进行安装(可以选择) make install 
默认安装到了 /usr/local/bin 目录下
redis-server   启动redis的服务器
redis-cli      启动redis客户端


说明一下:因为执行程序已经在 /usr/local/bin目录下了,所有不需要配置环境变量

环境变量就是path路径,path路径直接决定了一个命令是否可以找到。

2)修改配置文件

启动redis
启动服务器:  redis-server    这个启动是明着启动
启动客户端:  redis-cli     连接服务器的客户端,用于编写命令的
退出:
redis-cli  退出 quit
redis-server 退出  如果是明着启动,ctrl + C

redis服务可以在后台运行。
修改配置文件:
redis.conf

 

将这个配置文件复制到  /usr/local/bin 下面
cp /opt/installs/redis-5.0.4/redis.conf /usr/local/bin/

启动的时候,指定conf 一起启动
redis-server /usr/local/bin/redis.conf

修改redis.conf 就直接使用 /usr/local/bin/redis.conf 即可

这里修改为你自己的虚拟机IP地址

查看redis进程:

ps -ef|grep redis

 关闭redis的后台进行:
1、直接kill       kill -9  进程号
2、redis-cli -h 192.168.32.129 shutdown
    假如你在redis.conf 下指定了 bind 这个参数,在关闭的时候,需要添加  -h IP地址,如果使用的是默认的 bind 127.0.0.1 
   直接使用 redis-cli shutdown

 因为在redis.conf 下配置了bind IP 所以,连接的时候需要带上 IP地址

这里修改为你自己的虚拟机IP地址

redis-cli -h 192.168.52.129

3)设置密码(根据需要)

redis是可以设置密码的:

/usr/local/bin/redis.conf

假如有密码,连接的时候需要如下命令:

redis-cli -h 192.168.10.101 -p 6379 -a 123456

如果关闭需要使用如下命令:
redis-cli -h 192.168.10.101 -p 6379 -a 123456 shutdown

五、Redis 基本使用

1)连接 Redis

使用 datagrip 连接 redis:

2)操作数据库

Redis 默认有 16 个数据库,可以通过 select 命令切换数据库。

3)基本命令

先说一下key 这个命令的用法:

keys *

查看当前库的所有键

exists <key>

判断某个键是否存在

type <key>

查看键的类型

del <key>

删除某个键

expire <key><seconds>

为键值设置过期时间,单位秒

ttl <key>

查看还有多久过期,-1表示永不过期,-2表示已过期

dbsize

查看当前数据库中key的数量

flushdb

清空当前库

flushall

通杀全部库

 

 

六、Redis 数据类型

1)String —— 字符串类型

字符串类型的value值,可以占用512M的空间,所以可以存储很多的数据。

get <key>

查询对应键值

set <key><value>

添加键值对

append <key><value>

将给定的<value>追加到原值的末尾

strlen <key>

获取值的长度

setnx <key><value>

只有在key 不存在时设置key的值,SET if Not eXists

incr <key>

将key中存储的数字值增1只能对数字值操作,如果为空,新增值为1

decr <key>

将key中存储的数字值减1只能对数字之操作,如果为空,新增值为-1

incrby /decrby <key> 步长

将key中存储的数字值增减,自定义步长

mset <key1><value1><key2><value2>

同时设置一个或多个key-value对

mget <key1><key2><key3>

同时获取一个或多个value

msetnx <key1><value1><key2><value2>

同时设置一个或多个key-value对,当且仅当所有给定的key都不存在

getrange <key> <起始位置> <结束位置>

获得值的范围,类似java中的substring

setrange <key> <起始位置> <value>

用<value>覆盖<key>所存储的字符串值,从<起始位置>开始

setex <key> <过期时间> <value>

设置键值的同时,设置过去时间,单位秒

getset <key><value>

以新换旧,设置了新值的同时获取旧值

2) List —— 散列类型

有序的(插入的时候有序),底层是一个双向链表

 

3) Set —— 列表类型

Set的特点是无序不重复的

sadd <key><value1><value2> ....

将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。

smembers <key>

取出该集合的所有值。

sismember <key><value>

判断集合<key>是否为含有该<value>值,有返回1,没有返回0

scard <key>

返回该集合的元素个数。

srem <key><value1><value2> ....

删除集合中的某个元素。

spop <key>

随机从该集合中吐出一个值。

srandmember <key><n>

随机从该集合中取出n个值。不会从集合中删除

sinter <key1><key2>

返回两个集合的交集元素。

sunion <key1><key2>

返回两个集合的并集元素。

sdiff <key1><key2>

返回两个集合的差集元素。

4) Hash —— 集合类型

Redis hash 是一个键值对集合

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

hset <key><field><value>

<key>集合中的 <field>键赋值<value>

hget <key1><field>

从<key1>集合<field> 取出 value

hmset <key1><field1><value1><field2><value2>...

批量设置hash的值

hexists key <field>

查看哈希表 key 中,给定域 field 是否存在。

hkeys <key>

列出该hash集合的所有field

hvals <key>

列出该hash集合的所有value

hincrby <key><field><increment>

为哈希表 key 中的域 field 的值加上增量 increment

hsetnx <key><field><value>

将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在

 

 

 

5) Zset(Sorted Set)—— 有序集合类型

zrange <key><start><stop> [WITHSCORES]

返回有序集 key 中,下标在<start><stop>之间的元素带WITHSCORES,可以让分数一起和值返回到结果集。

zrangebyscore key min max withscores

返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

zrevrangebyscore key max min withscores

同上,改为从大到小排列。

zincrby <key><increment><value>

为元素的score加上增量

zrem <key><value>

删除该集合下,指定值的元素

zadd <key><score1><value1><score2><value2>...

将一个或多个 member 元素及其 score 值加入到有序集 key 当中

zcount <key><min><max>

统计该集合,分数区间内的元素个数

zrank <key><value>

返回该值在集合中的排名,从0开始。

 

五大基本数据类型,实战过程中String最实用。

七、资源链接

  • Redis 下载链接:https://download.redis.io/releases/
  • 通过网盘分享的文件:redis-5.0.4.tar.gz  提取码: dze4
  • Redis 中文学习网站:Redis中文网

        通过这篇文章,我们初步了解了 Redis 的基本概念、安装方法和基本操作,以及它的数据类型和一些常用命令。Redis 作为一个功能强大的 NoSQL 数据库,非常适合用作缓存系统,提高应用性能。

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

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

相关文章

Vue3:mitt实现组件通信

目录 一.性质 1.轻量级 2.单例 3.异步 4.事件绑定与解绑 二.作用 1.组件间通信 2.解耦 3.状态管理 4.事件的集中处理 三.使用 1.安装mitt 2.引入mitt&#xff1b;调用mitt&#xff1b;暴露mitt 3.组件1 4.组件2 四.代码 1.组件1 2.组件2 五.效果 一.性质 1…

多模态论文串讲-学习笔记(上)

入门参考&#xff1a;跟着chatgpt一起学|多模态入门-CSDN博客 学习参考&#xff1a;多模态论文串讲上【论文精读46】_哔哩哔哩_bilibili&#xff0c;强烈推荐这个博主啊&#xff0c;感觉比沐神讲的还要清楚&#xff0c;非常喜欢。 本文介绍只使用transformer encoder的方法&a…

医院为什么要安装医疗设备防漏费系统?

一、医院防漏费管理的重要性 随着人们健康意识的加强&#xff0c;医生对诊断的依据都造就了检查和化验在新形式下的重要性。人们对体检重要性的认识等各方面因素。导致了现在医院检查和化验位置一度提升。成为了医院工作的重中之中。而在中国国情的大环境下&#xff0c;熟人检…

20240923 每日AI必读资讯

GPT-4o能玩《黑神话》&#xff01;精英怪胜率超人类&#xff0c;无强化学习纯大模型方案 - 阿里巴巴的研究人员们提出了一个新型VARP&#xff08;视觉动作角色扮演&#xff09;智能体框架。 - 能直接将游戏截图作为输入&#xff0c;通过视觉语言模型推理&#xff0c;最终生成…

超强AI绘画工具StableDiffusion,SD整合包V4.9 来了 版本win加mac安装包以及搭载PS安装说明

众所周知&#xff0c;StableDiffusion 是非常强大的AI绘图工具&#xff0c;今天为大家带来的是 Stable Diffusion SD整合包v4.9 版本安装说明 。 这里带来的安装版本是9月最新整合包sd-webui-aki-v4.9 版本 。WIN加MAC stable diffusion整合包可以扫描下方&#xff0c;免费获取…

Spring实战——入门讲解

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 Spring介绍 Spring实战的入门讲解主要涵盖了Spring框架的基本概念、核心功能以及应用场景。以下是关于Spring实战入门的具体介绍&#xff1a; Spring框架概述&#xff1a;Spring是一个轻量级的Java开发框架…

Leetcode 65. 有效数字

1.题目基本信息 1.1.题目描述 给定一个字符串 s &#xff0c;返回 s 是否是一个 有效数字。 例如&#xff0c;下面的都是有效数字&#xff1a;”2″, “0089”, “-0.1”, “3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e7”, “6e-1”, “53.5e93”, “-123.456e789…

WebLogic命令执行漏洞CVE-2019-2725

1.环境搭建 cd vulhub-master/weblogic/weak_password docker-compose up -d 2.漏洞验证 http://47.121.211.205:7001/_async/AsyncResponseService 说明存在漏洞 3.在当前页面抓包 修改请求包 写入shell wget http://47.121.211.205/1.txt -O servers/AdminServer/tmp/_W…

大数据新视界 --大数据大厂之 Vue.js 与大数据可视化:打造惊艳的数据界面

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】

Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】 目录 Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】 一、简单介绍 二、工厂方法模式 (Factory Method Pattern) 1、什么时候使用工厂方法模式 2、使用工厂模式的好处 3、使用工厂方法模…

SPI驱动学习六(SPI_Master驱动程序)

目录 前言一、SPI_Master驱动程序框架1. SPI传输概述1.1 数据组织方式1.2 SPI控制器数据结构 2. SPI传输函数的两种方法2.1 老方法2.2 新方法 二、如何编写SPI_Master驱动程序1. 编写设备树2. 编写驱动程序 三、SPI_Master驱动程序简单示例demo1. 使用老方法编写的SPI Master驱…

WEB领域是不是黄了还是没黄

进入2024年后&#xff0c;WEB领域大批老表失业&#xff0c;一片哀嚎&#xff0c;个个饿的鬼叫狼嚎&#xff0c;为啥呢&#xff0c;下面是我个人的见解和看法。 中国程序员在应用层的集中 市场需求&#xff1a;中国的互联网行业在过去几年中经历了爆炸性增长&#xff0c;尤其是…

平板电容笔哪个牌子好?精选电容笔品牌排行榜前五名推荐!

在当今时代&#xff0c;平板电容笔已经成为平板电脑的重要配件&#xff0c;为人们的学习、工作和创作带来了极大的便利。然而&#xff0c;市场上平板电容笔的品牌众多&#xff0c;质量和性能也参差不齐&#xff0c;这让消费者在选择时常常感到困惑。平板电容笔究竟哪个牌子更好…

Revit 2018 提示 您使用的 Revit 授權無效。

昨天晚上想学下BIM&#xff0c;安装了这个软件&#xff0c;忘了给他断网了&#xff0c;今天早上起来一直提示这个信息&#xff0c;通过查看进程的位置找到了一个acwebbrowser 路径如下&#xff1a;C:\Program Files\Common Files\Autodesk Shared\CLM\V5\MSVC14\cliccore 防火…

如何使用 Rust 框架进行 RESTful API 的开发?

一、RESTful API 的开发 使用 Rust 框架进行 RESTful API 开发&#xff0c;你可以选择多种流行的 Rust Web 框架&#xff0c;如 Actix-web、Rocket、Warp 和 Tide 等。以下是使用这些框架进行 RESTful API 开发的基本步骤和概念&#xff1a; 选择框架&#xff1a;根据项…

OpenAI-gym how to implement a timer for a certain action in step()

题意&#xff1a;OpenAI-gym 如何在 step() 中为某个动作实现一个计时器 问题背景&#xff1a; One of the actions I want the agent to do needs to have a delay between every action. For context, in pygame I have the following code for shooting a bullet: 我希望代…

从趋势到常态:TikTok定制化产品的崛起与变革

随着数字化和TikTok的发展&#xff0c;定制化产品在消费者日常生活中愈发普及&#xff0c;逐渐从一种时尚潮流转变为常态。这一转变不仅改变了消费者的购物方式&#xff0c;也重塑了市场的供需关系、产品设计理念和商业模式。本文Nox聚星将和大家探讨TikTok定制化产品的未来发展…

QT 数据加密

一.使用环境 应该是通用的,此测试版本为如图 二.使用代码 1. 运行代码 QString data = "123abcAbc.-+";qDebug() << "加密:" << QAESEncryption::encodedText(data, "填入自己秘钥");qDebug() << "解密:" <…

Qemu开发ARM篇-4、kernel交叉编译运行演示

文章目录 1、kernel编译2、运行kernel3、FAQ 在前一篇 Qemu开发ARM篇-3、qemu运行uboot演示中&#xff0c;我们演示了如何使用 qemu运行uboot&#xff0c;在该篇中&#xff0c;我们将演示如何交叉编译 kernel并在qemu中运行 kernel. 1、kernel编译 本次演示使用kernel版本…

Java 中使用 Gson 实现深度克隆 #什么是深克隆与浅克隆?#clone方法为什么不能直接通过某个对象实例在外部类调用?

&#x1f310;Gson的jar包提供到本文上方&#xff0c;欢迎自取&#x1f310; 前言 &#x1f310;在 Java 编程中&#xff0c;克隆对象是一项常见的需求&#xff0c;特别是在处理不可变对象、避免引用传递时&#xff0c;深度克隆显得尤为重要。虽然 Java 提供了 clone() 方法&a…