はじめに
springbootとは、java開発者にとって一番使いやすいフレームワークだと思います。
redisとは、人気のNOSQLのDBの一つです。
今回はspringbootとredisを使ってCURDのデモを作ります。
事前準備
1.環境:
SpringBoot
Redis
Gradle
2.プロジェクト構築
Spring Initializrを頼んで自動的にプロジェクト雛形を生成されます。
以下のように設定してください。
① Gradle Project
② Java
③ Spring Boot 2.1.5
やったこと
1.まずはプロジェクト用のライブラリを導入するため、以下の設定を行う。
① build.gradleファイルを開いて以下のようにkey-valueの形で設定します。
dependencies {
implementation('org.springframework.boot:spring-boot-starter-data-redis')
implementation('org.springframework.boot:spring-boot-starter-web')
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
2.redis サービスの配置
application.propertiesを開く、以下の内容を追加する。(パスワードなくてもいいです。)
server.port=8088
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.timeout=200
3.実装したソースです。
まずはRedisConfig.javaを作って、
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
RedisTemplate<String,Object> template = new RedisTemplate <>();
template.setConnectionFactory(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
後はRedisService.javaを作って、いろんな機能を実装します。
@Service
public class RedisService {
/**
* 注入redisTemplate bean
*/
@Autowired
private RedisTemplate<String,Object> redisTemplate;
/**
* 删除缓存
*
* @param key 可以传一个值 或多个
*/
@SuppressWarnings("unchecked")
public void del(String... key) {
if (key != null && key.length > 0) {
if (key.length == 1) {
redisTemplate.delete(key[0]);
} else {
redisTemplate.delete(CollectionUtils.arrayToList(key));
}
}
}
/**
* 普通缓存获取
*
* @param key 键
* @return 值
*/
public Object get(String key) {
return key == null ? null : redisTemplate.opsForValue().get(key);
}
/**
* 普通缓存放入
*
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public boolean set(String key, Object value) {
try {
redisTemplate.opsForValue().set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
最後に機能をテストため、コントローラを作ってみました。
@RestController
@RequestMapping(value = "/redis")
public class RedisController {
/**
* 注入redisTemplate bean
*/
@Autowired
private RedisService redisService;
/**
* 保存(更新)数据
* @param key
* @param value
* @return
*/
@RequestMapping(value="/add",method=RequestMethod.GET)
public String add(String key,String value) {
redisService.set(key, value);
return "add successfully";
}
/**
* 删除指定数据
* @param key
* @return
*/
@GetMapping(value="/delete")
public String delete(String key) {
redisService.del(key);
return "delete successfully";
}
/**
* 读取指定数据
* @param key
* @return
*/
@GetMapping(value="/get")
public String get(String key) {
return redisService.get(key)==null ? "data don't exist!" : redisService.get(key).toString();
}
}
テスト
まずはRedisサーバーをredis-server redis.windows.confで起動します。以下のようなです。
その後、プロジェクトをスタートする。
① 保存機能をテスト
テストテータ:{city:tokyo}
URL : localhost:8088/redis/add?key=city&value=tokyo
ブラウザでテストURLを入力し、アクセスすると正常に保存することが見えます。
② 取得機能をテスト
URL : localhost:8088/redis/get?key=city
ほら、先に保存したデータを取得します。
③ 削除機能をテスト
URL : localhost:8088/redis/delete?key=city
保存されたデータを削除します。
テストはここまでです。
最後に
この記事に興味があれば、ぜひ、ここにソースをダウンロードします。
本来の記事サイト:http://160.16.146.245/u/hyman/blogs/11
以上