Redis入门级

一、Redis 入门
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-cli
Gul
多语言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 value.

get key

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

exists key判断key是否存在.

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

Redis基本数据结构

String类型
支持存储字符串、数字、浮点数(实际存储都是字节数组):
在这里插入图片描述

key的value最大不能超过512 M!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2suDizr-1666254499101)(C:\Users\Cowboy-Li\AppData\Roaming\Typora\typora-user-images\image-20221019202547849.png)]

实际使用时,通常用冒号连接多个词来拼接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 读出数据时也要手动反序列化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

自xing且乐观~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值