[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种形式:
- 命令行客户端
- 图形化界面客户端
- 编程语言客户端
命令行客户端
redis安装完成后,会自带命令行客户端:redis-cli
如果我们是用docker安装,则执行命令:docker exec -it redis redis-cli
图形化界面客户端
Github:https://github.com/uglide/RedisDesktopManager
编程语言客户端
Redis支持很多的编程语言来操作。目前只看Java语言的客户端。
Redis的Java客户端很多,官方推荐的有三种:
- Jedis
- Lettuce
- 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集合的区别:
- List可以存储重复元素,Set只能存储非重复元素。
- 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