Redis是什么

news2024/12/23 8:47:43

Redis是什么

https://blog.csdn.net/Little_Oranges/article/details/121870705

1.简介

基于字典格式的。基于内存,高性能的。键值对的方式进行存储。可以存储多种数据结构类型的数据。

2.应用场景

  • 缓存
  • 排行榜
  • 计数器
  • 分布式会话
  • 分布式锁
  • 社交网络
  • 最新列表
  • 消息系统

3.Redis基本特征

  • 支持数据类型多
  • 支持事务
  • 支持持久化
  • 支持主层复制

3.1数据类型

key-value的形式,字典保存。

  1. 字符串
  2. hash表
  3. list列表
  4. set集合
  5. 有序set

3.2持久化

会把内容保存到文件中去的。

3.3支持事务

执行命令的时候会按照顺序其他的顺序不能插入到当前事务列表中

3.4主从复制

主从复制。A主服务器复制到B从服务器上。支持多个从属服务器。

4.安装和配置

4.1下载安装

下载的版本不是很高3.0.504

https://github.com/MicrosoftArchive/redis/releases

 

4.2启动服务端

解压输入对应的命令。

redis-server redis.windows.conf

或者是双击。redis-server.exe

都会出现下面的界面。

 

4.3启动客户端

在4.2不关闭的情况下。

在当前的目录下输入如下内容

双击redis-cli.exe或者是输入

 redis-cli.exe -h 127.0.0.1 -p 6379
  • h是ip地址
  • p是端口
  • 类似连接mysql数据库时候的输入的内容

都可以出现下面的内容。

 

4.4使用redis

设置键值对和取出键值对

测试

set name 'zhangsan' //set  键 键值
get name //get 键
例如:
set name 'zhangsan'
get name

 

4.5退出redis客户端

输入quit

4.6配置密码

  1. 打开 Redis 配置文件。默认情况下,Redis 的配置文件位于 Redis 服务器的安装目录下,具体文件名为 redis.conf。
  2. 在配置文件中找到 # requirepass foobared 这一行,将前面的注释符号 # 去掉,并将后面的 foobared 替换为你想要设置的密码。例如,你可以将其修改为 requirepass your-password。
  3. 保存并关闭配置文件。
  4. 重新启动 Redis 服务器,让新的密码配置生效。

此时再去登陆的 时候需要带上密码了。

redis-cli -h 127.0.0.1 -p 6379 -a your-password

 

 

采用密码的形式进行登录。

 

4.6SpringBoot中使用redis

4.6.1springboot中使用Redis的依赖

  • 起步依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
 <dependency>
        <groupId>io.lettuce</groupId>
        <artifactId>lettuce-core</artifactId>
    </dependency>

4.6.2配置redis

扩展内容:

Jedis和Lettuce都是Java环境下使用的Redis客户端库,用于连接和与Redis服务器进行通信。它们之间的主要区别可以总结如下:

  1. 线程模型:Jedis使用的是阻塞式(synchronous)的IO模型,每个操作都会阻塞当前线程,直到收到响应或超时。这意味着在高并发场景下,如果一个操作的响应时间很长,它将会阻塞其他操作的执行。Lettuce则使用了非阻塞式(asynchronous)的IO模型,底层网络通信是基于Netty框架实现的,通过异步操作和回调来实现高并发。
  2. 连接方式:Jedis在使用时需要创建多个连接实例,并且每个连接实例在多线程环境下都不是线程安全的,因此在多线程场景中,需要使用连接池来管理连接。而Lettuce则支持基于Netty的多路复用连接,可以在多个线程之间共享一个物理连接。
  3. 功能扩展:由于Lettuce使用异步模型,它能够利用Reactive编程风格,提供更强大的功能扩展。Lettuce支持响应式编程范式,可以轻松使用类似于Reactor或RxJava的响应式流处理操作。
  4. 高可用性:Lettuce提供了更灵活和可靠的Redis Sentinel和Redis Cluster支持,可以更好地处理Redis服务器的故障转移和分片等情况。

总的来说,Jedis更适合于单线程环境下的简单应用,而Lettuce则更适合于多线程并发或需要更高级特性的应用。选择使用哪个取决于你的应用场景和需求。

# 应用服务 WEB 访问端口
server.port=8080

#主机
spring.redis.host=127.0.0.1
#端口
spring.redis.port=6379
#密码
spring.redis.password=123456


#下面的不是必须的
#默认的数据库索引
#Redis默认情况下有16个分片,这里配置具体使用的分片,默认是0
spring.redis.database=0
#超时时间
spring.redis.timeout=3000
#连接池中最大的连接数
spring.redis.lettuce.pool.max-idle=8
#连接池中最小的连接数,当小于这个数的时候就会创建新的连接
spring.redis.lettuce.pool.min-idle=0
#最大活跃数(超过的会进行请求等待)
spring.redis.lettuce.pool.max-active=8
#lettuce和Jedis是Java环境下使用的Redis客户端库,用于连接和与Redis服务器进行通信

4.6.3config配置

RedisTemplate是Spring提供的操作Redis恶的高级模板类工具

@Bean注解表示可以将redisTemplate方法返回的对象注入到spring容器中,供后续使用

配置的主要目的是提供一个可以被其他组件自动注入的RedisTempate实例。方便应用程序执行的时候和Redis服务器进行交互:读取 写入和删除

好处是不用编写原始的客户端代码

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<?, ?> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<byte[], byte[]> template = new RedisTemplate<>();
        template.setConnectionFactory(connectionFactory);
        //序列化器有很多
        template.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
        return template;
    }

}

4.6.4测试代码

@SpringBootTest
class RedisApplicationTests {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    public void setValue(String key, String value) {
        redisTemplate.opsForValue().set(key, value);
    }

    public String getValue(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    public void deleteKey(String key) {
        redisTemplate.delete(key);
    }

    @Test
    void contextLoads() {
        setValue("name","张三");
        System.out.println(getValue("name"));
        deleteKey("name");
        System.out.println(getValue("name"));
    }


}

 

4.6.5redis客户端

常见的几款redis的客户端的地址

https://blog.csdn.net/m0_67392811/article/details/123791905

 

4.6.6redis常见操作的命令

官方文档http://www.redis.cn/commands.html

(1)对value操作的命令
(2)对String操作的命令
(3)对List操作的命令
(4)对Set操作的命令
(5)对Zset操作的命令
(6)对Hash操作的命令
(7)持久化操作命令
(8)远程服务控制命令

4.7redis的用途

1.redis可以作为数据库,缓存和消息中间件

2.中间件是什么?

白话就是使用这项服务的人不需要知道底层逻辑的具体实现,就可以拿着中间件的结果来用

  • 中间件是介于应用系统和系统软件之间的一类软件,它所使用系统软件所提供的基础服务,可以限界网络上的应用系统各个部分或者是不同的应用达到资源功能共享的目的。
  • 中间件是独立的系统软件程序。

4.7.1redis作为消息中间件

消息中间件关注的是消息的发送和接收。利用的是高效可靠的异步消息传递机制进行平台无关的数据交流。并基于数据通信集成分布式系统。

redis利用的是广播和订阅模式。生产者产生一个消息,中间件复制并产生多个消息队列。

演示:

  1. 启动服务端
  2. 启动客户端:订阅am频道,subscribe am
  3. 启动另外一个客户端向服务器推送am频道的消息
  4. 此时订阅了am频道的客户端,接收到了消息

 

 

 

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

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

相关文章

华为OD机试真题 JavaScript 实现【查找充电设备组合】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、补充说明五、JavaScript算法源码六、效果展示1、输入2、输出3、说明一、题目描述 某个充电站,可提供n个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,均构成功率集合P的1个元素。功率集合P的…

Qt Quick系列(8)—Model-View—视图信号

&#x1f680;作者&#xff1a;CAccept &#x1f382;专栏&#xff1a;Qt Quick 文章目录 前言代码示例源码关键知识点 总结 前言 在Qt Quick的Model-View中内置视图有很多&#xff0c;有Repeater、ListView、GridView…&#xff0c;而他们也有着自己的信号&#xff0c;比如…

WebDAV之派盘本地个人云+Documents

Documents是一款由Readdle开发的文档管理和编辑工具&#xff0c;支持PDF阅读、音频播放、图像浏览和标注、以及多种常见文档格式的编辑操作等。派盘是一款本地私有云产品&#xff0c;基于WebDAV、FTP、SMB等多种协议&#xff0c;提供文件存储、分享、同步、备份等服务&#xff…

【Squid一】Squid代理服务器应用

Squid代理服务器应用 1.Squid代理服务器1.1 正向代理的工作机制1.2 代理服务器的概念及其作用1.3 代理服务器主要作用1.4 Squid代理的类型 2.CDN2.1 CDN概述2.2 CDN优势2.3 CDN对网络的优化作用2.4 CDN访问过程2.5 CDN网络的组成要素 3.安装Squid服务3.1 使用脚本启动和关闭squ…

guest内核不响应导致磁盘卸载问题排查

用户问题 客户报障磁盘卸载不了&#xff0c;而且是经常出现卸载不了的情况&#xff0c;客户比较着急&#xff0c;同时PDD也是大客户。 排查过程 查看宿主机上虚拟机信息 1、用户虚拟机有14块磁盘&#xff0c;而且这14块都是以legacypci的方式插入虚拟机&#xff0c;我印象中…

MATLAB | 拉普拉斯分布/拉普拉斯噪声的生成

一、实验目标 生成拉普拉斯分布的噪声&#xff0c;并分析它的概率密度函数 二、解决思路 &#xff08;1&#xff09;拉普拉斯分布可以由指数分布生成 拉普拉斯的概率密度函数为 f ( x ; μ , λ ) 1 2 λ e − ∣ x − μ ∣ λ f(x;\mu,\lambda)\frac{1}{2 \lambda} e^{…

创建启动前端vue与后端python/flask,前后端分离,相互传递参数

创建启动vue 确保你已经安装了Node.js和npm 安装vue npm install -g vue/cli创建vue项目&#xff1a; vue create my-project cd my-project启动vue npm run serve如果安装vue报错&#xff1a;管理员权限模式打开powershell Windows PowerShell 版权所有&#xff08;C&#…

windows怎么查看目标文件.o and windows - 如何使用/安装 GNU binutils (objdump)

GNU binutils-objdump工具 一、windows怎么查看目标文件.o二、安装GNU binutils (objdump)三、使用GNU binutils (objdump)参考资料 一、windows怎么查看目标文件.o 可以使用GNU binutils (objdump)进行查看编译生成的目标文件.o。 二、安装GNU binutils (objdump) 点击下载…

Apache Airflow 多个 Provider 存在漏洞

项目介绍 Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG&#xff08;Directed acyclic graph 有向无环图&#xff09;来管理任务流程的任务调度工具&#xff0c; 不需要知道业务数据的具体内容&#xff0c;设置任务的依赖…

辅助驾驶功能开发-功能规范篇(21)-4-XP行泊一体方案功能规范

XPilot Parking 自动泊车系统 • 超级自动泊车辅助(Super AutoParking Assist)、语音控制泊车辅助(Autoparking with Speech) - 产品定义 超级自动泊车辅助是⼀个增强的自动泊车辅助系统。在超级自动泊车辅助系统中,识别车位将会变得实时可见, 并且不可泊入的⻋位也将…

zynq系列器件使用vivado配置国产内存

zynq系列器件使用vivado配置国产内存 一、镁光公司器件命名的含义二、紫光公司器件命名的含义二、国产ddr&#xff08;SCB13H8G162BF-13KI&#xff09;和镁光&#xff08;MT41K512M8-125&#xff09;ddr参数对比三、vivado参数填入 一、镁光公司器件命名的含义 以MT41K512M8-1…

代码随想录算法训练营第六天 | 哈希表系列2(两数之和--四数相加II--三数之和--四数之和)

哈希表系列2 1 两数之和本题思路代码随想录的代码力扣的示例代码 454 四数相加II本题思路代码随想录的代码力扣的示例代码 15 三数之和本题思路代码随想录的代码力扣的示例代码 18 四数之和代码随想录的代码力扣的示例代码 1 两数之和 给定一个整数数组 nums 和一个整数目标值…

DAY41——动态规划part3

整数拆分 dp[i]&#xff1a;分拆数字i&#xff0c;可以得到的最大乘积为dp[i]。 dp[i](i-j)*j或j * dp[i-j]两种可能&#xff0c;前者是拆成两个数的可能性&#xff0c;后者是拆成三个或更多的可能性 对于dp[i] j * dp[i-j] 对每个i遍历j(1->i-1) 事实上是把i拆成j和i-j两…

web安全php基础_搭建php环境

首先打开phpstudy的网站栏点击创建网站&#xff0c;新建一个网站&#xff08;域名随便输反正是局域网&#xff09;然后点击确认 如下&#xff0c;网站便创建好了 打开浏览器输入刚刚创建网站时输入的域名&#xff0c;即可看见我们的网站 然后网站好了&#xff0c;就可以新建项…

IDEA中MyBatiX插件的使用教程

MybatisX插件功能介绍 主要功能如下&#xff1a; 生成mapper xml文件 快速从代码跳转到mapper及从mapper返回代码 mybatis自动补全及语法错误提示 集成mybatis generator gui界面 根据数据库注解&#xff0c;生成swagger model注解 首先下载MybatisX插件 配置数据源 在idea中连…

【C语言】指针和数组笔试题解析

简单不先于复杂&#xff0c;而是在复杂之后。 注&#xff1a;题目会附在前面&#xff0c;大家可以先复制代码自己做一遍&#xff0c;再看答案。 目录 1. 一维数组 2. 字符数组 2.1 sizeof 相关 2.1.1 题一 2.1.2 题二 2.1.3 题三 2.2 strlen 相关 2.2.1 题一 2.2.…

面试之线程池(高级开发 必问)

今天被面试 问麻了。第一个问题是&#xff1a; 一个类有私有的变量&#xff0c;如果修改这个类的私有变量。使用setter方法除外。&#xff08;后来才知道用反射&#xff09; 算了&#xff0c;我还是太水了。回归主题。 线程池的优点: (1):降低资源消耗&#xff0c;通过重读…

UE4/5动画蓝图中Additive Animations讲解

Additive Animation指用当前动画作为Additive动画减去参考位置后得到的Delta量&#xff0c;再通过Apply Additive节点将任意动画输出套用该Delta量&#xff0c;从而达到动画叠加的效果。 官方案例的Additive Animation案例&#xff0c;位于“内容示例/Animation_Basics”场景中…

【Visual Studio】printf() 函数无输出显示问题。使用 C++ 语言,配合 Qt 开发串口通信界面

使用 C 语言&#xff0c;配合 Qt 开发串口通信界面时&#xff0c;遇到 printf() 函数无输出显示。 在工程属性的对应位置添加 editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\$(ProjectName).exe 即可&#xff0c;如下图所示。 成功运行的截图如下&#xff1a; Ref. Visual Studio 20…

用uniapp完成一个前端项目

持续更新中… 这里给初学者提供一个uniapp的练习项目&#xff0c;学习uniapp需要vue和微信小程序的基础&#xff08;其实微信小程序基础需要的不多&#xff09;&#xff0c;建议把基础内容学牢固了再看本文。 本项目完成的是H5小程序APP的新闻项目&#xff0c;下面就开始说一下…