Redis安装 ▎Redis详细知识点

news2024/9/22 10:04:23

前言:

Redis是一个开源的内存数据结构存储,支持丰富的数据类型,如字符串、哈希、列表、集合和有序集合,作为一个键值对数据库,Redis能提供毫秒级的响应时间,适合高并发应用场景。它还支持持久化,将内存数据定期保存到硬盘,保证数据安全,Redis不仅能在单服务器上处理大规模数据,还能通过分片和集群扩展至多个节点,满足不断增长的业务需求。总之,Redis是一个强大的内存数据库解决方案,适应现代应用程序对性能和灵活性的苛刻要求。接下来,我们将深入探讨Redis的特性和最佳实践。

Redis是什么

Redis是一个开源,将数据以key-value结构存储在内存中的一款非关系型数据库,Redis可以用来当做数据库(存储简单数据,例如:新闻的点赞量)缓存(秒杀的商品数量信息)

Redis特点

  1. 可以将数据存储在内存中,也可以将数据持久化到硬盘上
  2. 性能极高
  3. 丰富的数据结构存储数据

为什么使用Redis

大量用户连接数据库,数据库就会出现瓶颈(连接数量太多,IO时间),为了缓解关系型数据库压力,可以将一些数据暂时存储到redis中,甚至直接存储到redis中,从而实现对关系型数据库的保护.

安装Redis

第一步:创建redis配置文件和数据映射挂载卷

mkdir -p /opt/redis/conf    ----->创建redis配置文件

mkdir -p /opt/redis/data    ----->创建数据映射挂载卷

第二步:拉去镜像

docker pull redis:6.0

第三步:安装命令

docker run -d -p 6379:6379 \

--name redis \

--restart=always \

--privileged=true \

-v /opt/redis/conf/redis.conf:/etc/redis/redis.conf \

-v /opt/redis/data:/data \

redis:6.0

Redis数据结构

  1. String(字符串)
  2. Hash(哈希)
  3. list(列表)
  4. set(集合)
  5. zset(sorted set:有序集合)

注:Redis中的key(键)只能为String类型

 String(字符串)

String是Redis最基本的类型,一个key对应一个value

String类型是二进制安全的,Redis的String可以包含任何数据.例如:jpg图片或者序列化对象

String类型是Redis最基本的数据类型,String类型的值最大能存储512MB

单值存储

单只存储:存一个具体的值,也可以存储一个Java中的对象,对象是被序列化成json格式的字符串

set key value 存储数据

get key 拿去数据

del key 删除数据

key* 查看所有数据

计数器

set news_views:1 0 设置文章访问量

incr news_views:1 文章访问量+1

decr news_views:1 文章访问量-1

get news_views:1 获得值

Hash(哈希)

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

Hash存储的是字符串和字符串的映射,比如存储用户购物信息 

 

 hset key 属性 值 存储

hget key 属性 拿去

hdel key 属性 删除某个属性

hlen key 返回哈希表 key 中的属性的数量

hgetall key 返回key下所有属性值

 List(列表)

有序集合 里面可以存储重复

lpush key val 从左边向集合添加元素

rpush key val 从右边向集合添加元素

lpop key 移除并返回key列表的头元素

lpop key 移除并返回key列表的尾元素

 

set(集合)

无序不重复集合

sadd key val 添加

srem key val 删除

smembers key 查看指定key下所有的值

scard key 查看key下元素数量

 zset

有序不重复集合

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为 集合中的成员进行从小到大的排序。

zset 的成员是唯一的,但分数(score)却可以重复

zadd key 分数 值

zrem key 值

zscore key 值 返回值的分数

zcard key 查看key下元素数量

设置失效时间

有时候我们并不希望 redis 的 key 一直存在。例如缓存,验证码等数据,我们希 望它们能在一定时间内自动的被销毁。redis 提供了一些命令,能够让我们对 key 设置过期时间,并且让 key 过期之后被自动删除

PX 表示以毫秒为单位    EX,PX 不区分大小写

set name jim EX 30   设置失效时间为 30 秒

ttl 键 查看剩余时间(秒)

pttl 键 查看剩余时间(毫秒)

SpringBoot集成redis 

  1. 使用官方提供的jedis类实现链接
  2. 使用Springboot对jedis的封装实现
    1. 管理连接redis对象,提供数据库连接池的功能
    2. 针对每一种的数据结构分别封装了不同的实现类
    3. 事务
    4. 提供了对键 值进行序列化,反序列化操作

搭建

第一步:添加 redis 依赖

        <!--springBoot redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

配置连接redis

  redis:
    host: 192.168.65.128
    port: 6379
    password: 123
    database: 0
    pool:
      max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
      max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
      max-idle: 8 # 连接池中的最大空闲连接
      min-idle: 0 # 连接池中的最小空闲连接
      timeout: 5000ms # 连接超时时间(毫秒)

注入RedisTemplate并测试

public class redisTest {

    @Autowired
    RedisTemplate redisTemplate;

    @RequestMapping(path = "/test1")
    public void test1(){
/*        System.out.println(redisTemplate.hasKey("")); //判断键是否存在
        System.out.println(redisTemplate.delete("")); //删除键*/

        //redisTemplate.setValueSerializer();对值指定序列化的方式
        //redisTemplate.setKeySerializer();对键指定序列化的方式
        //valueOperations提供
        System.out.println("1");
        ValueOperations valueOperations = redisTemplate.opsForValue();
//        valueOperations.set("name","jim");
//        System.out.println(redisTemplate.hasKey("name"));

        Menu menu = new Menu();
        menu.setId(1);
        menu.setName("新闻联播");
        menu.setType(1);
        menu.setUrl("/news");
        valueOperations.set("menu",menu);
    }
}

注:我们存储数据必须经过处理,要不然数据存储为二进制形式,所以我们配置拦截器

拦截器

package com.kid.news.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    /**
     * 序列化键,值
     * @param connectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        //序列化策略
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        StringRedisSerializer redisSerializer = new StringRedisSerializer();

        redisTemplate.setKeySerializer(redisSerializer);//key 单一的字符串
        redisTemplate.setHashKeySerializer(redisSerializer);
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);//value {}
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

        return redisTemplate;
    }
}

 感谢大家的观看,本次分享就到这里。希望我的内容能够对您有所帮助。创作不易,欢迎大家多多支持,您的每一个点赞都是我持续更新的最大动力!如有不同意见,欢迎在评论区积极讨论,让我们一起学习、共同进步!如果有相关问题,也可以私信我,我会认真查看每一条留言。期待下次再见!

                                       希望路飞的笑容可以治愈努力路途中的你我!

博主vx:Dreamkid05 --->欢迎大家和博主讨论问题 

 

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

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

相关文章

路由器接口配置DHCP实验简述

一、路由器配置 [Huawei]undo info-center enable Info: Information center is disabled. [DHCP-SERVER]sysname DHCP-Server [DHCP-Server]dis this sysname DHCP-Server undo info-center enable return [DHCP-Server]dhcp enable Info: The operation may take a few secon…

【pytorch学习笔记,利用Anaconda安装pytorch和paddle深度学习环境+pycharm安装---免额外安装CUDA和cudnn】

作者链接: link 一、安装pytorch环境 1.打开打开anaconda的终端后 conda env list然后创建一个名字叫pytorch&#xff0c;python是3.8版本的环境 conda create -n pytorch python3.8再次看环境 conda env list# conda environments: #显示如下环境 base …

Rust GUI框架Tauri V1 入门

文章目录 Tauri介绍Vite开始创建 Rust 项目 调用指令window.__TAURI_INVOKE__.invoke is undefined 问题 参考资料JavaScript 模块Vue 框架Vue RouteviteNuxt gitignore文件上传到csdn gitcode网站端本地端 gitcode发布 Tauri介绍 Tauri是一款用Rust构建的开源框架&#xff0c…

私有化通讯工具:安全、高效、个性化,重塑企业沟通生态

在当今数字化时代&#xff0c;即时通讯已成为企业日常运营中不可或缺的一部分。随着数据安全和隐私保护意识的日益增强&#xff0c;越来越多的企业开始寻求更加安全、可控的沟通方式。私有化聊天工具应运而生&#xff0c;以其独特的核心优势&#xff0c;为企业构建了一个安全、…

选购到不好的宠物空气净化器会有什么危害?有哪几款推荐

前三个月真的是被我男朋友气到了&#xff0c;明明说好的一起养猫&#xff0c;他又嫌这嫌那的&#xff0c;真的是无语住。 在养猫前的一个月就说好了&#xff0c;谁下班早谁就先回家收拾&#xff0c;包括进门开窗通风、给猫喂食、还有铲猫砂盆。但是他现在抱怨说太麻烦了&#…

【PSINS工具箱】仅速度为观测量的SINS/GNSS组合导航,MATLAB源代码,无需下载,可直接复制

工具箱 本程序需要在安装工具箱后使用,工具箱是开源的,链接:http://www.psins.org.cn/kydm 程序简述 原文的153组合导航是SINS/GPS下的位置观测或位置+速度观测,本文所述的代码是仅三轴位置观测的,使用UKF来滤波。 最后输出速度对比、速度误差、姿态对比、姿态误差、位…

基于SpringBoot+Vue的房屋租赁平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

HT3163 免电感滤波25W AB/D类音频功放

特征 输出功率 15W (VDD12V, RL4Ω,THDN1%, Class D) 20W(VDD14V,RL4Ω,THDN1%, Class D) 25W(VDD14V,RL4Ω,THDN10%, Class D) 7.5W(VDD7.4V,RL4Ω,THDN10%, Class AB) 17W(VDD12V,RL4Ω,THDN10%, Class AB) 单电源系统&#xff0c;3V-16V宽电压输入范围 低静态电流: 7mA (VD…

制造业应用人工智能!成本与效益的博弈

制造业应用人工智能&#xff01;成本与效益的博弈 前言制造业应用人工智能 前言 制造业一直是国家经济的重要支柱&#xff0c;而现在&#xff0c;人工智能的出现正在给制造业带来一场前所未有的变革。就像是一场风暴&#xff0c;席卷了整个制造业的世界&#xff0c;让一切都变…

net await 、 Task、 Async 不用async异步方法

详细资料 lamda 变成异步方法 &#xff0c;只要在前面 加 async 修饰 即可 》》await 修饰的 &#xff0c;await 所在的方法&#xff0c;必须修饰 async ThreadPool.QueueUserWorkItem( async (obj)>{while(true){await File.WriteAllTextAsync("路径","…

AORO A30防爆手机震撼发布,红外热成像尽显巡检“科技范儿”

随着工业化的深入发展&#xff0c;各类“危、急、特”场景&#xff08;如化工园区、矿山作业、消防救援等&#xff09;的安全巡检任务日益繁重且复杂多变。面对极端环境下的安全隐患&#xff0c;传统巡检手段显得力不从心&#xff0c;行业痛点亟待解决。遨游通讯凭借其深厚的技…

二维结构迭代次数顺序的连续性

在行列可自由变换的条件下&#xff0c;平面上的3点结构只有6个 4点结构只有16个 3点结构按照训练集A-B矩阵的高有3s1和3s2两种顺序&#xff0c;同样4点结构也有4s1和4s2两种顺序。4s1可以用结构加法转化成3点结构顺序4s1-3. (A,B)---6*n*2---(0,1)(1,0) 分类A和B&#xff0c;…

若依的使用

目录 一、启动步骤 二、重要的功能点&#xff1a; 1、登录&#xff1a; 流程&#xff1a; 前端&#xff1a; 注册&#xff1a; 2、创建子项目 3、导出 1、后台&#xff1a; 2、前端 三、如何生成代码&#xff1a; 一、启动步骤 将sql导入数据库。。。启动redis&…

57页PPT | 智慧文旅整体建设解决方案

主要介绍了智慧文旅的建设背景、需求分析、解决方案、应用系统功能需求、客户价值、企业价值、建设理念、建设思路、总体架构、安全管理体系、融媒体综合服务平台、大数据分析平台、智慧文旅云平台、智慧管理、智慧营销、智慧服务等方面的内容。 背景及需求分析 方案架构及理念…

【Vue】- 路由及传参

文章目录 知识回顾前言源码分析1. 声明式导航2. 路由传参3. 可选符4. 重定向5. 4046. 跳转及传参7. 路由懒加载拓展知识总结router-link静态传参和动态路由的对比知识回顾 前言 什么是单页面应用程序? ● 所有功能在一个html页面上实现 单页面应用优缺点? ● 优点:按需更新…

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 新一代垃圾回收器 ZGC 收集器

文章目录 垃圾回收机制垃圾收集器垃圾收集器分类ZGC 收集器ZGC 的性能优势复制算法指针染色读屏障 ZGC 的工作过程Stop-The-World 暂停阶段并发阶段 垃圾回收机制 垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;&#xff0c;顾名思义就是释放垃圾占用的空…

第二期: 第11节, uboot 命令的使用

问题&#xff1a;如果你只想控制一个led 灯&#xff0c;并且不想去写驱动。 那么可以直接 使用uboot 的命令&#xff0c;去改写内存。 uboot 命令的解析&#xff1a; 读命令&#xff0c; md[.b, .w. .l] address 注意&#xff1a; 这里的 .w 指的是两个字节&#xff0c;…

1.Seata 1.5.2 seata-server搭建

一&#xff1a;Seata基本介绍 Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 详见官网链接&#xff1a;https://seata.apache.org/zh-cn/ 1.历史项目里的使用经验&#xff1a; 之前公司里的oem用户对应的App…

时钟频率、AI采样率与AO更新率的关系

在数据采集和信号生成设备&#xff08;如NI板卡&#xff09;中&#xff0c;时钟频率、AI&#xff08;模拟输入&#xff09;采样率、以及AO&#xff08;模拟输出&#xff09;更新率是三个至关重要的参数。它们共同决定了设备在信号采集与生成时的性能表现。本文将详细分析它们之…

Yestar成都艺星引领行业星纪元:十大数字星品·高阶星技术震撼发布

近日&#xff0c;中国成都太古里Yestar十大数字星品高阶星技术AI科技3D Mapping全球发布会&#xff0c;震撼发布了十大数字星品高阶星技术升级&#xff0c;引领医美产业发展翻开崭新的一页。作为品牌成立19周年的庆典&#xff0c;这场科技与美学交融的盛会&#xff0c;标志着医…