• Redis学习笔记( 入门篇)


    💕前言:学长最近复习了Redis,顺便把知识点整理出来,希望能够帮助准备学习Redis的小伙伴💕

    目录

    Redis 介绍

    是什么?

    Redis 特征

    Redis 安装

    Redis 基本数据结构

    String 类型

    Hash 类型

     List 类型

    Set 类型

    SortedSet 类型

    Redis 客户端

    Spring Data Redis

    RedisTemplate 序列化



    Redis 介绍

    是什么?

    基于内存的 K / V 存储中间件

    NoSQL 键值对数据库

    Redis 不仅仅是数据库,它还能作为消息队列等等。

    关系型 SQL 和 NoSQL 的对⽐

    其中应⽤场景是关键:


    Redis 特征

    1. ⽀持多种数据结构

    2. 单线程,每个命令的执⾏具备原⼦性,中途不会执⾏其他命令(指命令处理始终是单线程的,⾃ 6.x 起改为多

    线程接受⽹络请求)

    3. ⾼性能、低延时(基于内存、IO 多路复⽤、良好编码)

    4. ⽀持数据持久化

    5. ⽀持主从、分⽚集群

    6. ⽀持多语⾔客户端


    Redis 安装

    建议 Linux 下安装,直接到官⽹安装即可,注意安装后更改 redis.conf ⽂件,设置 bind ip、requirepass 密码等参数。

    Redis 连接⽅式

    redis-cliGUI

    多语⾔ SDK

    Redis 常⽤命令

    Redis 的命令根据数据结构分为多个组。

    不⽤背!忘了就查:

    1)redis 官⽹命令集:https://redis.io/commands/,中⽂版:http://www.redis.cn/commands.html

    2)redis-cli help 命令查看,help [command] 可以查看某个具体命令、help @xxx 可以查看某个分组下的命令

    通⽤命令

    set key valueget key

    keys pattern 模糊搜索多个 key。性能较差,⽣产环境(尤其是主节点)不建议使⽤

    del key...

    exists key 判断 key 是否存在

    expire key 设置过期时间

    ttl key 查询剩余存活时间,未设置过期时间则为 -1

    Redis 基本数据结构

    String 类型

    ⽀持存储字符串、数字、浮点数(实际存储都是字节数组):

    单 key 的 value 最⼤不能超过 512 M!

    实际使⽤时,通常⽤冒号连接多个词来拼接 key,⽐如 [项⽬名]:[业务名]:[类名]:[id]。在某些 GUI ⼯具中,会⾃动根据冒号来划分层级,浏览更⽅便。

    Hash 类型

    值是⼀个 Hash 结构(类似 Java 的 HashMap):

    常⽤命令:

    其实就是在 String 命令名的基础上增加了 'H' ⾸字⺟

     List 类型

    理解为 Java 的 LinkedList 双向链表,特点是有序、插⼊删除快、但查找性能⼀般:常⻅命令如下:

    有点像操作⼀个双端队列

    Set 类型

    集合,类似于 Java 中的 HashSet,特点是单 set 内元素不能重复、查找性能⾼。常⻅命令如下:

    分为单集合命令和多集合命令(交并差集)

    SortedSet 类型

    有序集合,在 set 的基础上给每个元素多存了⼀个分数,类似于 value 类型为整型的 HashMap。特点是有序、查找性能⾼,适合⽤于排⾏榜、统计 TopN。

    常⻅命令:

    和 set 结构的命令很像

    Redis 客户端

    可以在 Redis 官⽹查看所有客户端以及推荐的客户端:https://redis.io/docs/clients

    对于 Java,主要推荐以下 3 种:

    其中,Jedis 的命令和原⽣ redis 命令⾏的命令⼀致,学习成本最低(注意它是线程不安全的,通常配合连接池使⽤);Lettuce 和 Spring 兼容最好(Spring Data Redis 默认集成)、基于 Netty 性能最⾼;Redisson 提供了和 Java 集合⽤法⼀致的分布式集合,适⽤于更复杂的业务场景。

    Spring Data Redis

    Spring Data 整合封装了⼀系列数据访问的操作,Spring Data Redis 则是封装了对 Jedis、Lettuce 这两个 Redis

    客户端的操作,提供了统⼀的 RedisTemplate 来操作 Redis。

    RedisTemplate 针对不同的 Redis 数据结构提供了不同的 API,划分更明确:

    注意,要在 Spring Data Redis 中使⽤ Lettuce 线程池的话,要额外引⼊ apache commons-pool2 依赖。

    RedisTemplate 序列化

    RedisTemplate 默认使⽤ JDK 原⽣序列化器,可读性差、内存占⽤⼤,因此可以⽤以下两种⽅式来改变序列化机制:

    1. ⾃定义 RedisTemplate,指定 key 和 value 的序列化器

    2. 使⽤⾃带的 StringRedisTemplate,key 和 value 都默认使⽤ String 序列化器,仅⽀持写⼊ String 类型的

    key 和 value。因此需要⾃⼰将对象序列化成 String 来写⼊ Redis,从 Redis 读出数据时也要⼿动反序列化。

     本期分享到此为止,关注博主不迷路,叶秋学长带你上高速~~

  • 相关阅读:
    海外代理IP是什么?如何使用?
    R16 Type II量化反馈码本的产生
    (附源码)springboot大学生创新创业管理 毕业设计 041557
    变量赋值中 + 号 - 号 = 号的用法
    AI时代,当项目经理遇到ChatGPT,插上腾飞的翅膀!
    神经网络和深度学习-处理多维特征的输入
    695.最大岛屿面积
    JAVA代码审计——WebGoat 认证缺陷
    UIKit Inside: frame bounds position anchorPoint center
    Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)问题解决
  • 原文地址:https://blog.csdn.net/m0_63722685/article/details/126777621