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());
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/501825.html
標籤:NoSQL
上一篇:django中批量插入資料
