Jedis 1. 概述 Jedis 是一款使用 Java 操作 Redis 的工具,有點類似於 JDBC 2. 引入依賴 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9 ...
Jedis
1. 概述
Jedis 是一款使用 Java 操作 Redis 的工具,有點類似於 JDBC
2. 引入依賴
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
3. 操作
// 創建 jedis 客戶端對象
Jedis jedis = new Jedis("39.108.6.119", 6379);
// 選擇使用一個庫,預設 0 號庫
jedis.select(0);
// 清空當前庫
jedis.flushDB();
//設置 redis 字元串數據
jedis.set("key", "value");
//存儲數據到列表中
jedis.lpush("list", "value1");
jedis.lpush("list", "value2");
jedis.lpush("list", "value3");
// 更多操作
...
// 釋放資源
jedis.close();
具體 API 參考官網文檔:https://www.javadoc.io/doc/redis.clients/jedis/latest/index.html
SpringBoot 整合 Redis
1. 概述
SpringData 提供了 RedisTemplate 和 StringRedisTemplate,後者是前者的子集。兩個模板基本一致,不同之處體現在操作的數據類型不同。RedisTemplate 中 key 和 value 泛型都是 Object,可以存儲一個對象。而 StringRedisTemplate 的兩個泛型都是 String,只能存儲字元串
2. 引入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
3. 操作
@SpringBootTest(classes = RedisSpringbootApplication.class)
@RunWith(SpringRunner.class)
public class TestRedisTemplate {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
@Test
public void test() {
stringRedisTemplate.opsForValue().set("name", "jack");
String name = stringRedisTemplate.opsForValue().get("name");
// 更多操作...
}
}
具體 API 參考官網文檔:https://docs.spring.io/spring-data/redis/docs/current/api/
4. 序列化
無論使用 StringRedisTemplate 還是 RedisTemplate,都會對 key 和 value 進行序列化
Spring-Data-Redis 的序列化方式是通過實現 RedisSerializer 介面,每一種實現都對應不同的序列化方式
4.1 JDK 序列化
org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
,RedisTemplate 的預設序列化方式,序列化對象需實現 Serializable 介面,絕大多數情況下,不推薦使用該方式,因為這種方式序列化之後保存的是位元組序列,對閱讀不友好
4.2 String 序列化
org.springframework.data.redis.serializer.StringRedisSerializer
,StringRedisTemplate 的預設序列化方式,這種實現方式比較輕量與高效,但只能對字元串序列化,無法對普通對象序列化
4.3 Json 序列化
org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer
和 org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
,兩者都是使用 Jackson 實現 JSON 的序列化方式,不同的是,前者必須在構造序列化對象時傳入對象的類型,後者則不需要,並且序列化時將對象類型也保存了
4.4 修改序列化方案
// 以修改序列化方案為 StringRedisSerializer 為例
// 修改 key 序列化方案
redisTemplate.setKeySerializer(RedisSerializer.string());
// 修改 value 序列化方案
redisTemplate.setValueSerializer(RedisSerializer.string());
// 修改 hash key 序列化方案
redisTemplate.setHashKeySerializer(RedisSerializer.string());
// 修改 hash value 序列化方案
redisTemplate.setHashValueSerializer(RedisSerializer.string());