1、安装
安装太麻烦了直接使用宝塔的一键部署
密码是bt_redis
2、jedis
1、引入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.7.0</version>
</dependency>
2、建立连接
private Jedis jedis;
@BeforeEach
void setUp(){
//1建立连接
jedis=new Jedis("IP",37690);
//2设置密码
jedis.auth("bt_redis");
//3选择库
jedis.select(0);
}
3、测试String
@Test
void testString() {
//存入结果
String result = jedis.set("name", "高晗");
System.out.println(result);
//获取数据
String name = jedis.get("name");
System.out.println(name);
}
@Test
void testHash() {
//插入哈希
jedis.hset("user:1","name","Jack");
jedis.hset("user:1","age","21");
//获取
Map<String, String> stringStringMap = jedis.hgetAll("user:1");
System.out.println(stringStringMap);
}
4、释放资源
//释放连接
void tearDown(){
if (jedis!=null)
jedis.close();
}
多线程时使用连接池
1、创建连接池工具
public class jedisConnectionFactory {
private static JedisPool jedispool;
static {
//配置连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(8);//最大连接数
jedisPoolConfig.setMaxIdle(8);//最大空闲连接
jedisPoolConfig.setMinIdle(0);//最小空闲连接
jedisPoolConfig.setMaxWaitMillis(100);//等待时间
//创建连接池对象
JedisPool jedisPool = new JedisPool(
jedisPoolConfig,
"IP",
37690,
1000,
"bt_redis");
}
public static Jedis getJedis(){
return jedispool.getResource();
}
}
修改建立连接代码
@BeforeEach
void setUp(){
//1建立连接
jedis= jedisConnectionFactory.getJedis();//从池子中获取连接
//2设置密码
jedis.auth("bt_redis");
//3选择库
jedis.select(0);
}
释放资源时底层会自动判断是否使用连接池,如果使用则归还连接池
3、SpringDataRedis
RedisTemplate入门
依赖与springboot整合
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<!-- 底层都通过commons完成底层线程池-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置
spring:
data:
redis:
host: IP
port: 37690
password: bt_redis
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: 100
3注入RedisTemplate并使用
@Autowired
private RedisTemplate redisTemplate;
@Test
void testString() {
//底层自动序列化 所以object类型
//写入一条数据
redisTemplate.opsForValue().set("name","姜赫");
Object name = redisTemplate.opsForValue().get("name");
System.out.println(name);
}
使用上述创建时,传入的是object而不是string所以会进行序列化所以当去底层使用原本object的文本时,会得到不同与String内容,可读性差(key,value)都序列化 序列化后增加了长度增加了内存容量的所以要改变序列化方式。