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

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。Redis入门(1)——Redis是啥 & 安装Docker的Redis & Redis的基本数据类型+常用命令 & SpringBoot整合Redis初步,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

引出


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)

序列 命令 描述
1 set key value 设置指定 key 的值
2 get key 获取指定 key 的值。
3 mget key1 key2 … keyn 获取所有(一个或多个)给定 key 的值。
4 setnx key value 只有在 key 不存在时设置 key 的值。
5 strlen key 返回 key 所储存的字符串值的长度。
6 incr key 将 key 中储存的数字值增一。
7 decr 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)

可以重复

序列 命令 描述
1 llen key 获取列表长度
2 lpush key value1… value2 将一个或多个值插入到列表头部
3 lpop key 移出并获取列表的第一个元素
4 lrange key start stop 获取列表指定范围内的元素
5 lrem key count value 移除列表元素
6 rpush key value1… value2 尾部添加
7 rpop 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类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

序列 命令 描述
1 sadd key member1… member2 向集合添加一个或多个成员
2 scard key 获取集合的成员数
3 smemebers key 返回集合中的所有成员
4 sismember key member 判断member元素是否是集合key的成员
5 spop 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)

序列 命令 描述
1 zadd key score1 member1… score2 member2 向有序集合添加一个或多个成员,或者更新已存在成员的分数
2 zcard key 获取集合的成员数
3 zcount key min max 计算在有序集合中指定区间分数的成员数
4 zrangebylenx key min max[limit offset count] 通过字典区间返回有序集合的成员
5 zrem key member1 member2 移除有序集合中的一个或多个成员
6 ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员
7 zscore 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特别适合用于存储对象。

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

在这里插入图片描述

序列 命令 描述
1 del key 删除 key
2 exists key 检查给定 key 是否存在。
3 expire key seconds 为给定 key 设置过期时间。
4 pexpire key millisenconds key 的过期时间以毫秒计。
5 keys pattern 查找所有符合给定模式( pattern)的 key 。(*)
6 ttl key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
7 type 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;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/165100.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!