Redis安装 ▎Redis详细知识点

news/2024/9/19 9:49:22 标签: redis, 数据库, mysql

前言:

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.niftyadmin.cn/n/5665341.html

相关文章

【乐企-工具篇】有关乐企发票文件生成- OFD和PDF文件生成

有关乐企发票文件生成- OFD和PDF文件生成 本文主要是实现发票的OFD文件以及PDF文件的生成可以参考具体实现思路,具体情况需要根据自己业务进行改造! 具体的OFD文件模板可以从税局进行下载,下载之后放到resources资源目录下。 代码 package com.ruoyi.output.service.thi…

Android WebView H5 Hybrid 混和开发

对于故乡&#xff0c;我忽然有了新的理解&#xff1a;人的故乡&#xff0c;并不止于一块特定的土地&#xff0c;而是一种辽阔无比的心情&#xff0c;不受空间和时间的限制&#xff1b;这心情一经唤起&#xff0c;就是你已经回到了故乡。——《记忆与印象》 前言 移动互联网发展…

HTTP代理PAC脚本:自动化代理设置的利器

在现代互联网的海洋里&#xff0c;代理IP就像一艘神奇的船&#xff0c;带领我们穿越层层网络波涛。今天&#xff0c;我们要聊聊HTTP代理和PAC脚本这两位“船长”&#xff0c;看他们如何在网络世界里大显身手。 什么是HTTP代理&#xff1f; HTTP代理是一个中间服务器&#xff0…

01 Vim 编辑器的简单使用

目前在类liunx系统上&#xff0c;我们使用比较多的是 vim 编辑器。vim 具有程序编辑的能力&#xff0c;可以主动的以字体颜色辨别语法的正确性&#xff0c;方便程序设计。 文章目录 1 vim介绍2 vim 三种模式3 常用快捷键一般模式操作&#xff1a;切换模式操作&#xff1a;增删…

SpringBoot 整合docker,执行容器服务

我使用以下文章的镜像作为演示镜像,读者有自己的镜像可以使用自己的 TencentARC/GFPGAN人脸恢复Ubuntu-22.04搭建(附带Docker镜像)_tencentarc gfpgan-CSDN博客 1. 封装springboot 启动docker容器的方法 public String runDockerCommand(String[] command) {StringBuilder res…

简评2024.9.16北京大运河音乐节

第一次音乐节&#xff0c;从个人观感上&#xff0c;点评一下&#xff0c;香蕉俱乐部&#xff0c;直接给我听睡着了&#xff0c;对你没听错给我听睡着了&#xff0c;除了拍了个开头&#xff0c;就直接睡过去了&#xff0c;温和治疗&#xff0c;让人眼前一亮&#xff0c;歌虽然没…

Linux系统(Ubuntu)(下载篇)

一、下载VMware和Ubuntu镜像 VMware可以去官网下载&#xff0c;也可以看教程&#xff0c;教程很多。 Ubuntu可以去清华大学开源软件镜像站下载。 1.右上角点MIRRORS&#xff0c;必须点一下&#xff0c;要不看不到 2.找到ubuntu-releases点击 3.找个版本下载 二、vmware配…

网络安全。

文章目录 目录 文章目录 一. 网络安全概述 二. 密码学原理 三. 报文完整性和数字签名 密码散列函数 报文鉴别码 数字签名 公钥认证 四. HTTPS通信 总结 一. 网络安全概述 网络安全是保护计算机网络及其数据免受各种威胁和攻击的实践和技术。随着互联网的普及和数字化…