Redis入门(1)——Redis是啥 & 安装Docker的Redis & Redis的基本数据类型+常用命令 & SpringBoot整合Redis初步

文章介绍了Redis作为内存数据库的高速特性,解释了其单线程为何仍能快速响应的原因。通过Docker演示了Redis的安装和使用,详细列举了Redis的基本数据类型如字符串、列表、集合、有序集合和哈希表,并给出了一些常用命令示例。此外,还展示了如何在SpringBoot项目中整合Redis,利用StringRedisTemplate进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引出


1.MySQL数据库为啥慢?IO密集型;
2.Redis是啥,内存数据库,快;
3.安装Redis的docker,搜索,拉取,运行,进入;
4.Redis的基本数据类型,字符串,哈希表Hash;
5.Redis的常用命令,设置有效时间,expire uuid 10;
6.SpringBoot整合Redis的方式,StringRedisTemplate;

MySQL数据库:慢

IO密集型操作

在这里插入图片描述

在这里插入图片描述

Redis是啥?

官网:

https://redis.io/docs/about/

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串哈希表列表集合有序集合位图hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区

在这里插入图片描述
在这里插入图片描述

问题:redis是单线程的,为什么会非常快?

在这里插入图片描述

安装Redis的docker

在这里插入图片描述

1.搜索docker search redis

[root@192 ~]# docker search redis

在这里插入图片描述

2.拉取docker pull redis

[root@192 ~]# docker pull redis

在这里插入图片描述

3.运行容器

[root@192 ~]# docker run -itd --name=redis_6379 -p 6379:6379 redis

在这里插入图片描述

4.进入容器–>进入redis

docker exec -it redis_6379 bash
redis-cli

在这里插入图片描述

在这里插入图片描述

redis的基本数据类型

在这里插入图片描述

字符串(string)

序列命令描述
1set key value设置指定 key 的值
2get key获取指定 key 的值。
3mget key1 key2 … keyn获取所有(一个或多个)给定 key 的值。
4setnx key value只有在 key 不存在时设置 key 的值。
5strlen key返回 key 所储存的字符串值的长度。
6incr key将 key 中储存的数字值增一。
7decr key将 key 中储存的数字值减一。
[root@localhost ~]# docker ps |grep redis
5d04e3abf91f        redis                "docker-entrypoint..."   7 days ago          Up 3 days           0.0.0.0:6379->6379/tcp                                     redis_6379
[root@localhost ~]# docker exec -it redis_6379 bash
root@5d04e3abf91f:/data# redis-cli
127.0.0.1:6379> keys *
1) "dress"
2) "tom_bank"
3) "weather"
4) "username"
5) "goods"
6) "mycar"
7) "book"
127.0.0.1:6379> setnx fruits apple
(integer) 1
127.0.0.1:6379> get fruits
"apple"
127.0.0.1:6379>

在这里插入图片描述

列表(list)

可以重复

序列命令描述
1llen key获取列表长度
2lpush key value1… value2将一个或多个值插入到列表头部
3lpop key移出并获取列表的第一个元素
4lrange key start stop获取列表指定范围内的元素
5lrem key count value移除列表元素
6rpush key value1… value2尾部添加
7rpop key [count]尾部移除[count]元素
127.0.0.1:6379> lpush fruits apple peach
(integer) 2
127.0.0.1:6379> lrange fruits 0 3
1) "peach"
2) "apple"
127.0.0.1:6379> rpush fruits orange
(integer) 3
127.0.0.1:6379> lrange fruits 0 3
1) "peach"
2) "apple"
3) "orange"
127.0.0.1:6379> 

在这里插入图片描述

在这里插入图片描述

集合(set)

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

序列命令描述
1sadd key member1… member2向集合添加一个或多个成员
2scard key获取集合的成员数
3smemebers key返回集合中的所有成员
4sismember key member判断member元素是否是集合key的成员
5spop key移除并返回集合中的一个随机元素
127.0.0.1:6379> sadd fruits apple apple orange
(integer) 2
127.0.0.1:6379> smembers fruits
1) "orange"
2) "apple"
127.0.0.1:6379> 

在这里插入图片描述

有序集合(sorted set)

序列命令描述
1zadd key score1 member1… score2 member2向有序集合添加一个或多个成员,或者更新已存在成员的分数
2zcard key获取集合的成员数
3zcount key min max计算在有序集合中指定区间分数的成员数
4zrangebylenx key min max[limit offset count]通过字典区间返回有序集合的成员
5zrem key member1 member2移除有序集合中的一个或多个成员
6ZREMRANGEBYSCORE key min max移除有序集合中给定的分数区间的所有成员
7zscore key member返回有序集中,成员的分数值
127.0.0.1:6379> zadd stu 3 peter 8 shirley
(integer) 2
127.0.0.1:6379> zrange stu 0 10
1) "peter"
2) "shirley"
127.0.0.1:6379> zadd stu 6 mary
(integer) 1
127.0.0.1:6379> zrange stu 0 10
1) "peter"
2) "mary"
3) "shirley"
127.0.0.1:6379> 

在这里插入图片描述

哈希表(hash)【重要】

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

序列命令描述
1hdel key field1 field2… fieldn删除一个或多个哈希表字段
2hexists key field查看哈希表 key 中,指定的字段是否存在
3hget key field获取存储在哈希表中指定字段的值
4hgetall key获取在哈希表中指定 key 的所有字段和值
5hincrby key field increment为哈希表 key 中的指定字段的整数值加上增量 increment
6hkeys key获取所有哈希表中的字段(field)
7hlen key获取哈希表中字段的数量
8hmget key field1 field2获取所有给定字段的值
9hset key field value将哈希表 key 中的字段 field 的值设为 value 。
10hsetnx key field value只有在字段 field 不存在时,设置哈希表字段的值。
11hvals key获取哈希表中所有值

在这里插入图片描述

127.0.0.1:6379> hset stu name wm grand 4
(integer) 2
127.0.0.1:6379> hget stu name
"wm"
127.0.0.1:6379> 

在这里插入图片描述

在这里插入图片描述

判断某个查看哈希表 key 中,指定的字段是否存在

127.0.0.1:6379> hexists book amount
(integer) 1
127.0.0.1:6379> hexists book amount123
(integer) 0
127.0.0.1:6379> 

获取字段的值,进行减一操作

127.0.0.1:6379> hget book amount
"3"
127.0.0.1:6379> hincrby book amount -1
(integer) 2
127.0.0.1:6379> hget book amount
"2"
127.0.0.1:6379> 

redis常用命令

在这里插入图片描述

序列命令描述
1del key删除 key
2exists key检查给定 key 是否存在。
3expire key seconds为给定 key 设置过期时间。
4pexpire key millisencondskey 的过期时间以毫秒计。
5keys pattern查找所有符合给定模式( pattern)的 key 。(*)
6ttl key以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
7type key返回 key 所储存的值的类型。
127.0.0.1:6379> set uuid pet
OK
127.0.0.1:6379> expire uuid 10
(integer) 1
127.0.0.1:6379> get uuid
"pet"
127.0.0.1:6379> get uuid
(nil)
127.0.0.1:6379> 

在这里插入图片描述

在这里插入图片描述

可以用在验证码中,10s后过期,失效

在这里插入图片描述

springBoot整合redis

1.添加依赖的包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.tianju</groupId>
    <artifactId>springboot_redis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>


    <!--    起步依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.13</version>
    </parent>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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


    </dependencies>

</project>

2.配置redis

spring:
  redis:
    host: 192.168.111.130
    port: 6379
    database: 0 # 可以不设置,默认是0

完整的redis配置

## Redis 服务器地址
spring.redis.host=localhost
## Redis 服务器连接端口
spring.redis.port=6379
## Redis 数据库索引(默认为 0)
spring.redis.database=0

## 以下非必须,有默认值
## Redis 服务器连接密码(默认为空)
spring.redis.password=
## 连接池最大连接数(使用负值表示没有限制)默认 8
spring.redis.lettuce.pool.max-active=8
## 连接池最大阻塞等待时间(使用负值表示没有限制)默认 -1
spring.redis.lettuce.pool.max-wait=-1
## 连接池中的最大空闲连接 默认 8
spring.redis.lett	uce.pool.max-idle=8
## 连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=0

3.初步使用StringRedisTemplate

package com.tianju.springboot.service.impl;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.concurrent.TimeUnit;

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class RedisDemoTest {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void redisString(){
        stringRedisTemplate.opsForValue().set("peter", "pet");

        //判断键是否存在
        boolean exists = Boolean.TRUE.equals(stringRedisTemplate.hasKey("peter"));
        System.out.println(exists);

        // 取出
        String value = stringRedisTemplate.opsForValue().get("peter");
        System.out.println(value);
    }
}

总结

1.MySQL数据库为啥慢?IO密集型;
2.Redis是啥,内存数据库,快;
3.安装Redis的docker,搜索,拉取,运行,进入;
4.Redis的基本数据类型,字符串,哈希表Hash;
5.Redis的常用命令,设置有效时间,expire uuid 10;
6.SpringBoot整合Redis的方式,StringRedisTemplate;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arya's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值