一、redis下载
win+ubuntu教程地址:Redis下载安装教程(手把手教你5步成功) – mikechen
下载地址:Downloads - Redis官网
下载命令:
wget https://download.redis.io/releases/redis-5.0.12.tar.gz
download.redis.io
是 Redis 的下载服务器
解压命令:
tar -zxvf redis-5.0.12.tar.gz
然后就是make make install 等等。不太熟悉解压安装基本流程、基本步骤、原理等可以看看我另一个博客的文章。链接:
解压文件介绍:
redis-benchmark:性能测试工具
redis-check-aof:修复aof持久化文件
redis-check-rdb:修复rdb持久化文件
redis-cli:redis命令行工具
redis-sentinel:redis集群哨兵使用
redis-server:启动redis 可以通过ps -ef |grep redis来查看redis的启动情况
二、基础配置及操作
基础配置:
Redis(Jedis和SpringBoot整合Redis)_springboot redis jedis-CSDN博客
修改redis.config文件 配置后台启动
daemonize yes 配置后台启动 通过 redis-server redis.conf 配置config文件实现后台启动
退出redis
zyhhsss@zyhhsss:~/redis-5.0.12$ ps -ef |grep redis
zyhhsss 16159 2698 0 09:25 ? 00:00:04 ./redis-server *:6379
zyhhsss 17452 16963 0 10:08 pts/1 00:00:00 grep --color=auto redis
zyhhsss@zyhhsss:~/redis-5.0.12$ kill -9 16159
zyhhsss@zyhhsss:~/redis-5.0.12$ ps -ef |grep redis
zyhhsss 17495 16963 0 10:10 pts/1 00:00:00 grep --color=auto redis
基础操作
1.默认16个数据库,类似数组下标从0开始,初始默认使用0号库。使用select命令进行切换。语法select < dbid>
select 1
设置、获取 set k1 v1 ,get k1
2.统一密码管理,所有库使用同样的密码
3.dbsize查看当前数据库的key的数量
4.flushdb清空当前库
5.flushall清空全部库
6.keys *查看当前库所有key
7.exists < key>判断某个key是否存在
8.type < key>相看key的类型
9.object encoding < key>查看底层数据类型
10.del < key>删除指定的key数据
11.unlink < key>根据选择非阻塞删除。仅将key从keyspace元数据中删除,真正的删除会在后续中做异步操作
12.expire < key>< seconds>:为给定的key设置过期时间,以秒为单位
13.ttl < key>:查看给定key的过期时间:-1表示永不过期-2表示已过期
三、redis数据类型
常见5种:String list hash set zset
数据类型介绍:
jedis实现:Redis(Jedis和SpringBoot整合Redis)_springboot redis jedis-CSDN博客
四、redis AOF
五、redis RDB
六、主从复制
七、redis 哨兵模式
八、redis 分片集群
九、redis亿级访问量数据处理
十、Geospatial实现地理位置服务
十一、redis事务操作
十二、redis缓存
12.1 缓存类型 简介:
redis是旁路缓存
12.2
十三、使用jedis
十四、SpringDataRedis
引入依赖:
redis依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>3.3.2</version> </dependency>
连接池依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.12.0</version>
</dependency>
yml:
spring: application: name: spring-boot-mq-redis # redis链接,要改成自己的链接配置 data: redis: host: 127.0.0.1 password: ${REDIS_PASSWORD:abc123} database: 1 lettuce: pool: max-active: 8 #最大连接 max-idle: 8 #最大空闲连接 min-idle: 0 #最小空闲连接 max-wait: 100ms #连接等待时间
RedisTemplate需要自己设置序列化器
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
// 设置 RedisConnectionFactory
template.setConnectionFactory(factory);
// 设置 key 序列化为 String
template.setKeySerializer(RedisSerializer.string());
// 设置 hash key 序列化为 String
template.setHashKeySerializer(RedisSerializer.string());
// 设置 value 序列化为 JSON
GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
template.setValueSerializer(jackson2JsonRedisSerializer);
// 设置 hash value 序列化为 JSON
template.setHashValueSerializer(jackson2JsonRedisSerializer);
return template;
}
}
StringRedisTemplate默认是string
@Autowired
StringRedisTemplate stringRedisTemplate;
private static final ObjectMapper mapper = new ObjectMapper();
@Test
void StringTemplateTest() throws JsonProcessingException {
Message message = new Message("胡歌", 18);
String s = mapper.writeValueAsString(message);
stringRedisTemplate.opsForValue().set("msg:200",s);
String result= stringRedisTemplate.opsForValue().get("msg:200");
Message message1 = mapper.readValue(result, Message.class);
System.out.println("message1 = " + message1);
}
ObjectMapper
com.fasterxml.jackson.databind.ObjectMapper
是 Jackson 库中的一个核心类,用于处理 JSON 数据的序列化(将 Java 对象转换为 JSON)和反序列化(将 JSON 转换为 Java 对象)。Jackson 是一个流行的 Java 库,用于处理 JSON 数据,它提供了强大的数据绑定和数据转换功能。
ObjectMapper
的主要功能和用法
序列化(将 Java 对象转换为 JSON)
ObjectMapper
可以将 Java 对象转换为 JSON 字符串,这通常用于将数据传输到 Web 服务或保存到文件中。
示例代码
ObjectMapper objectMapper = new ObjectMapper();
MyClass myObject = new MyClass();
String jsonString = objectMapper.writeValueAsString(myObject);
System.out.println(jsonString);
反序列化(将 JSON 转换为 Java 对象)
ObjectMapper
可以将 JSON 字符串转换为 Java 对象,这对于从 JSON 响应中提取数据非常有用。- 示例代码:
ObjectMapper objectMapper = new ObjectMapper(); String jsonString = "{\"name\":\"John\",\"age\":30}"; MyClass myObject = objectMapper.readValue(jsonString, MyClass.class); System.out.println(myObject.getName());
配置(定制序列化和反序列化行为)
ObjectMapper
可以通过各种配置选项来定制序列化和反序列化的行为,例如日期格式、属性命名策略等。- 示例代码:
ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd")); objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
树模型(处理 JSON 作为树结构)
ObjectMapper
可以将 JSON 数据读入到树状结构中,这对于复杂的 JSON 数据结构处理很有用。- 示例代码:
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonString);
String name = rootNode.path("name").asText();
-
与其他库的集成
ObjectMapper
可以与其他库集成,例如在 Spring Boot 中,ObjectMapper
经常用于处理 JSON 数据,并且可以通过 Spring Boot 的自动配置来定制其行为。
常用方法
writeValueAsString(Object value)
: 将 Java 对象转换为 JSON 字符串。readValue(String content, Class<T> valueType)
: 将 JSON 字符串转换为 Java 对象。readTree(String content)
: 将 JSON 字符串转换为JsonNode
树模型。setDateFormat(DateFormat dateFormat)
: 设置日期格式。configure(Feature feature, boolean state)
: 配置序列化和反序列化的特性。
ObjectMapper
是处理 JSON 数据的一个强大工具,能够帮助开发者高效地进行数据转换和处理。