0


Redis学习笔记( 入门篇)

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


Redis 介绍

是什么?

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

NoSQL 键值对数据库

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

关系型 SQL 和 NoSQL 的对⽐

其中应⽤场景是关键:


Redis 特征

  1. ⽀持多种数据结构

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

线程接受⽹络请求)

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

  2. ⽀持数据持久化

  3. ⽀持主从、分⽚集群

  4. ⽀持多语⾔客户端


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 读出数据时也要⼿动反序列化。

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

标签: 数据库 redis

本文转载自: https://blog.csdn.net/m0_63722685/article/details/126777621
版权归原作者 叶秋学长 所有, 如有侵权,请联系我们删除。

“Redis学习笔记( 入门篇)”的评论:

还没有评论