[Redis] 01-Redis快速入门

一、Redis简介

  • Redis属于键值对(key-value)数据库
  • Redis中所有的数据都是以key-value的形式存储在内存中的
  • 所以读写Redis非常的快,在高并发的场景下,性能非常的好

二、Redis服务端(redis-server)的安装

省略。建议使用docker安装。
Docker安装redis(保姆级教程&图文并茂)-腾讯云开发者社区-腾讯云

三、Redis客户端(redis-cli)的使用

Redis是C/S架构的数据库,前面我们启动了Redis服务端的进程,接下来我们可以通过Redis客户端来操作Redis服务端。
Redis客户端包括以下3种形式:

  1. 命令行客户端
  2. 图形化界面客户端
  3. 编程语言客户端

命令行客户端

redis安装完成后,会自带命令行客户端:redis-cli
如果我们是用docker安装,则执行命令:docker exec -it redis redis-cli

图形化界面客户端

Github:https://github.com/uglide/RedisDesktopManager

编程语言客户端

Redis支持很多的编程语言来操作。目前只看Java语言的客户端。
Redis的Java客户端很多,官方推荐的有三种:

  1. Jedis
  2. Lettuce
  3. Redisson

Spring整合Redis:Spring对Redis客户端进行了整合,提供了__Spring Data Redis_,在spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis。_

四、Redis数据类型

注意:key永远是字符串类型。

字符串

String类型,也是字符串类型,是Redis中最简单的存储类型。String是最基本的key-value结构,key是唯一标识,value是具体的值,value其实不仅是字符串,也可以是数字(整数或浮点数),value最大能够容纳的数据大小是512M
不过根据字符串的格式不同,又可以分为3类:

  • string:普通字符串
  • int:整数类型,可以自增、自减操作。
  • float:浮点类型,可以自增、自减操作。
    | KEY | VALUE |
    | --- | --- |
    | msg | hello world |
    | num | 10 |
    | score | 99.9 |
    | json | {"name":"keyongkang", "age":23} |

String的常见命令:

NX:表示 "Not Exist",用于在执行某些命令时指定如果某个键不存在时要执行的操作。
MSET 表示 "Multiple SET",它用于一次性设置多个键值对。
TTL key 表示查看该key还有多久过期。
KEYS:Find all keys matching the given pattern。
STRLEN key:计算长度。
GETRANGE:获取字符串的子串。

操作:

列表


List列表式简单的字符串列表(链表的每个节点是一个字符串)按照插入顺序排序,可以从头部或者尾部向List列表中添加元素。
List本质上是一个双向链表
特点:

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

List常见的命令:

列表只能通过LRANGE来遍历,不能通过GET(操作字符串的)。
LSET:修改元素。
LLEN:获取列表长度。
LINDEX:根据索引查对应元素。
LPOS:根据元素的值查找索引。

集合

Set类型是一个无序并唯一的集合,它的存储_不会按照插入的先后顺序进行存储_。
Set类型除了支持集合内的增删改查操作外,同时还支持集合取交集、并集、差集。

Set类型和List集合的区别:

  1. List可以存储重复元素,Set只能存储非重复元素。
  2. List是按照元素的先后顺序存储元素的,而Set则是无序方式存储元素的。

Set的常见命令:

SPOP:随机从Set中删除一个元素。
Set没有修改操作,可以先删除再添加来实现。
SMISMEMER:判断多个元素是否在集合中。
SMOVE:将元素从一个集合移到另一个集合中。
SINTER:求交集。
SDIFF:求差集。
SUNION:求并集后且去重。
SINTERSTORE:将交集结果保存到新的集合中。
SDIFFSTORE:将差集结果保存到新的集合中。
SUNIONSTORE:将并集结果保存到新的集合中。

哈希


Hash是一个键值对(key-value)集合,其value是一个无序字典,其中value的形式如:value=[{field1, value1},{field2,value2} ...]类似于Java中的HashMap结构。

Hash常见的命令:

HDEL:删除操作。
HSET:修改操作。
HVALUE:获取一个hash类型的key中所有的value。
HMGET:批量获取。
HLEN:获取一个hash类型对应的哈希表长度。

有序集合

Redis的SortedSet是一个可排序的Set结合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。
SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。

SortedSet具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

SortedSet的常见命令:

ZREMRANGEBYSCORE:删除指定score范围内的元素。
ZPOPMAX:删除分数最高的元素。
ZPOPMIN:删除分数最低的元素。

五、通用命令

六、key的结构

Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?
我们可以通过给key添加前缀加以区分,这个前缀有一定的规范:
Redis的key允许有多个单词形成层级结构,多个单词之间用':'隔开,格式如下:

项目名:业务名:类型:id
posted @ 2024-03-08 18:30  Ac_c0mpany丶  阅读(8)  评论(0编辑  收藏  举报