Redis学习-基础
前言
版本:
- Redis:5.0.14.1
介绍
Redis是一个基于内存的键值型(KV)NoSQL数据库。
特点:
- 键值(Key-Value)型,Value支持多种不同的数据结构:
- String
- Hash
- List
- Set
- Sorted
- GEO
- BitMap
- HyperLog
- 单线程,每个命令具备原子性
- 低延迟、速度快
- 支持数据持久化
- 支持主从集群、分片集群
- 支持多语言客户端
命令
本小节介绍Redis的通用命令和五种基本数据类型的命令。
通用命令
命令 | 说明 |
---|---|
KEYS |
查看符合模板的所有key |
DEL |
删除一个指定的key |
EXISTS |
判断key是否存在 |
EXPIRE |
给key设置一个有效期,有效期到期时该key会自动删除 |
TTL |
查看一个key的剩余有效期 |
String类型
命令 | 说明 |
---|---|
SET |
添加或者修改已经存在的一个String类型的键值对 |
GET |
根据key获取String类型的value |
MSET |
批量添加多个String类型的键值对 |
MGET |
根据多个key获取多个String类型的value |
INCR |
让一个整型的key自增1 |
INCRBY |
让一个整型的key自增并指定步长 |
INCRBYFLOAT |
让一个浮点类型的数字自增并指定步长 |
SETNX |
添加一个String类型的键值对,前提是这个key不存在,否则不执行 |
SETEX |
添加一个String类型的键值对,并且指定有效期 |
Hash类型
命令 | 说明 |
---|---|
HSET key field value |
添加或者修改hash类型key的field的值 |
HGET key field |
获取一个hash类型key的field的值 |
HMSET |
批量添加多个hash类型key的field的值 |
HMGET |
批量获取多个hash类型key的field的值 |
HGETALL |
获取一个hash类型的key中的所有的field和value |
HKEYS |
获取一个hash类型的key中的所有的field |
HVALS |
获取一个hash类型的key中的所有的value |
HINCRBY |
让一个hash类型key的字段值自增并指定步长 |
HSETNX |
添加一个hash类型的key的field值,前提是这个field不存在,否则不执行 |
List类型
命令 | 说明 |
---|---|
LPUSH key element … |
向列表左侧插入一个或多个元素 |
LPOP key |
移除并返回列表左侧的第一个元素,没有则返回nil |
RPUSH key element … |
向列表右侧插入一个或多个元素 |
RPOP key |
移除并返回列表右侧的第一个元素 |
LRANGE key star end |
返回一段角标范围内的所有元素 |
BLPOP 和BRPOP |
与LPOP 和RPOP 类似,只不过在没有元素时等待指定时间,而不是直接返回nil |
Set类型
命令 | 说明 |
---|---|
SADD key member … |
向set中添加一个或多个元素 |
SREM key member … |
移除set中的指定元素 |
SCARD key |
返回set中元素的个数 |
SISMEMBER key member |
判断一个元素是否存在于set中 |
SMEMBERS |
获取set中的所有元素 |
SINTER key1 key2 … |
求key1与key2的交集 |
SDIFF key1 key2 … |
求key1与key2的交差集 |
SUNION key1 key2 … |
求key1与key2的并集 |
SortedSet类型
命令 | 说明 |
---|---|
ZADD key score member |
添加一个或多个元素到sorted set ,如果已经存在则更新其score值 |
ZREM key member |
删除sorted set中的一个指定元素 |
ZSCORE key member |
获取sorted set中的指定元素的score值 |
ZRANK key member |
获取sorted set 中的指定元素的排名 |
ZCARD key |
获取sorted set中的元素个数 |
ZCOUNT key min max |
统计score值在给定范围内的所有元素的个数 |
ZINCRBY key increment member |
让sorted set中的指定元素自增,步长为指定的increment值 |
ZRANGE key min max |
按照score排序后,获取指定排名范围内的元素 |
ZRANGEBYSCORE key min max |
按照score排序后,获取指定score范围内的元素 |
ZDIFF、ZINTER、ZUNION |
求差集、交集、并集 |
SpringDataRedis
介绍
SpringDataRedis是Spring中对Redis的集成模块。(官网地址:Spring Data Redis)
特点:
- 提供了对不同Redis客户端的整合(包括Lettuce和Jedis)
- 提供了RedisTemplate统一API来操作Redis
- 支持Redis的发布订阅模型
- 支持Redis哨兵和Redis集群
- 支持基于Lettuce的响应式编程
- 支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化
- 支持基于Redis的JDKCollection实现
RedisTemplate工具类的API介绍:
API 返回值类型 说明 redisTemplate.opsForValue() ValueOperations 操作String类型的数据 redisTemplate.opsForHash() HashOperations 操作Has类型的数据 redisTemplate.opsForList() ListOperations 操作List类型的数据 redisTemplate.opsForSet() SetOperations 操作Set类型的数据 redisTemplate.opsForZSet() ZSetOperations 操作SortedSet类型的数据
基本使用
本小节基于SpringBoot使用SpringDataRedis。
版本:
- Redis:5.0.14.1
- Maven:3.9.8
- SpringBoot:3.3.10
- lettuce:6.3.2
-
利用Maven创建SpringBoot项目
相关步骤可参考:Maven配置以及项目创建 | 花猪のBlog、
在创建项目时直接引入Lombok依赖
1
2
3
4
5<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency> -
pom文件引入依赖:
1
2
3
4
5
6
7
8
9
10<!--Redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--连接池依赖-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency> -
配置Redis连接信息
可以通过
application.properties
配置,也可以通过application.yaml
配置:-
使用
application.properties
配置信息:1
2
3
4
5
6
7
8127.0.0.1 =
6379 =
123456 =
1 =
8 =
8 =
0 =
1000 =连接池配置说明:
spring.redis.lettuce.pool.max-active
:最大连接数量spring.redis.lettuce.pool.max-idle
:最大空闲连接数量spring.redis.lettuce.pool.min-idle
:最小空闲连接数量spring.redis.lettuce.pool.max-wait
:连接等待时常(ms)
-
使用
application.yaml
配置信息:1
2
3
4
5
6
7
8
9
10
11
12spring:
redis:
host: 127.0.0.1
port: 6379
password: 123456
database: 1
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: 1000
-
-
编写测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
class SpringDataRedisDemoApplicationTests {
// 注入RedisTemplate
private RedisTemplate redisTemplate;
// 编写测试
void contextLoads() {
redisTemplate.opsForValue().set("name", "huazhu");
Object result = redisTemplate.opsForValue().get("name");
System.out.println("result = " + result);
}
}以Value()操作为例,添加一个
("name", "huazhu")
的键值对,并获取结果。
后记
SpringDataRedis默认使用的是lettuce,当然也支持Jedis的使用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 花猪のBlog!
评论
TwikooWaline