LoginSignup
3
11

More than 3 years have passed since last update.

SpringBoot + Redis 簡単に作るデモ

Posted at

はじめに

springbootとは、java開発者にとって一番使いやすいフレームワークだと思います。
redisとは、人気のNOSQLのDBの一つです。
今回はspringbootとredisを使ってCURDのデモを作ります。

事前準備

1.環境:
     SpringBoot
     Redis
     Gradle
 
 2.プロジェクト構築
  Spring Initializrを頼んで自動的にプロジェクト雛形を生成されます。

  以下のように設定してください。
   ① Gradle Project
   ② Java
   ③ Spring Boot 2.1.5

  Spring_project.jpg

やったこと

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で起動します。以下のようなです。
 redis.jpg

その後、プロジェクトをスタートする。
 
 ① 保存機能をテスト
  テストテータ:{city:tokyo}
URL : localhost:8088/redis/add?key=city&value=tokyo
ブラウザでテストURLを入力し、アクセスすると正常に保存することが見えます。
  保存数据.jpg

② 取得機能をテスト
  URL : localhost:8088/redis/get?key=city
ほら、先に保存したデータを取得します。

读取数据.jpg

 ③ 削除機能をテスト
  URL : localhost:8088/redis/delete?key=city

保存されたデータを削除します。

删除数据.jpg

テストはここまでです。

最後に

この記事に興味があれば、ぜひ、ここにソースをダウンロードします。

本来の記事サイト:http://160.16.146.245/u/hyman/blogs/11

以上
 

 

3
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
11