安装完成后,在任意目录输入redis-server命令即可启动Redis:
bash
redis-server
我们可以进入redis命令行窗口
Redis安装完成后就自带了命令行客户端:redis-cli,使用方式如下:
redis-cli [options] [commonds]
其中常见的options有:
-
-h 127.0.0.1
:指定要连接的redis节点的IP地址,默认是127.0.0.1 -
-p 6379
:指定要连接的redis节点的端口,默认是6379 -
-a 123321
:指定redis的访问密码
其中的commonds就是Redis的操作命令,例如:
ping
:与redis服务端做心跳测试,服务端正常会返回pong
不指定commond时,会进入redis-cli
的交互控制台:
在 Redis 中,无论是字符串、整数还是浮点数,它们都被归为字符串类型存储和管理。但 Redis 会根据数据的特性,进行内部的存储优化,并为这些数据提供合适的操作接口。
图形化的 存储方式如下:
Jedis客户端
https://github.com/redis/jedis
1. 引入依赖
2.连接Redis(需要地址,端口号以及密码)
Jedis连接池:
java
package com.gege;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisConnectionFactory {
private static final JedisPool jedisPool;
static {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// 最大连接
jedisPoolConfig.setMaxTotal(8);
// 最大空闲连接
jedisPoolConfig.setMaxIdle(8);
// 最小空闲连接
jedisPoolConfig.setMinIdle(0);
// 设置最长等待时间,ms
jedisPoolConfig.setMaxWaitMillis(200);
jedisPool = new JedisPool(jedisPoolConfig, "192.168.150.101", 6379, 1000, "123321");
}
// 获取Jedis对象
public static Jedis getJedis() {
return jedisPool.getResource();
}
}
StringDataRedis:
1. 首先需要引入依赖
XML
<!-- redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>3.2.0</version>
</dependency>
<!-- common-pool-->
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
2. 配置 Redis 连接
在 application.properties
或 application.yml
文件中配置 Redis 的连接信息:
bash
spring:
data:
redis:
host: 192.168.88.130
password: gege
lettuce:
pool:
max-active: 8
max-wait: 100ms
max-idle: 8
min-idle: 0
3. 注入 StringRedisTemplate
StringRedisTemplate
是 Spring Boot 自动配置的 Bean,可以直接通过 @Autowired
注入使用。
为什么选择**StringRedisTemplate而不是RedisTemplate?
**
避免数据乱码问题:
RedisTemplate
是一个通用的 Redis 操作类,可以处理多种数据类型(如String
、Object
等)。- 默认情况下,
RedisTemplate
使用 JDK 的序列化方式存储数据,这会导致存入的数据以二进制形式存在 Redis 中。人眼直接查看会看到乱码形式。 - 而**
StringRedisTemplate
专门用于操作字符串类型数据,它使用StringRedisSerializer
序列化 key 和 value,使数据以可读的字符串形式存储在 Redis 中,便于调试和监控。**
java
package com.gege.redisdemo;
import cn.hutool.json.JSONUtil;
import com.gege.redisdemo.dto.User;
import net.minidev.json.JSONValue;
import 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;
import org.springframework.data.redis.core.StringRedisTemplate;
@SpringBootTest
class RedisDemoApplicationTests {
@Autowired
// private RedisTemplate redisTemplate; // 存入数据库是乱码的
private StringRedisTemplate stringRedisTemplate ;
@Test
void testString() {
stringRedisTemplate.opsForValue().set("name","xiaoli");
Object name = stringRedisTemplate.opsForValue().get("name");
System.out.println("name:"+name);
}
@Test
void testSaveUser(){
// 创建对象
User user = new User("格格", 23);
// 手动序列化
String js = JSONUtil.toJsonStr(user);
stringRedisTemplate.opsForValue().set("user:100",js);
// 获取数据
String us = stringRedisTemplate.opsForValue().get("user:100");
System.out.println(us);
// 手动反序列化
User bean = JSONUtil.toBean(us, User.class);
System.out.println(bean);
}
}
手动序列化复杂对象:
对于非字符串的复杂对象(如 User
类**),需要将对象手动序列化为 JSON 格式,再存入 Redis。并且从Redis中取出来之后可以进行反序列化。使用Hutool工具包的JSONUtil注意需要导入依** 赖
bash
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.11</version>
</dependency>