Java操作Redis

Redis

  Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

  Redis 与其他 key - value 缓存产品有以下三个特点:

  Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

  Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

  Redis支持数据的备份,即master-slave模式的数据备份。

Redis应用场景

   主要能够体现 解决数据库的访问压力。

   例如:短信验证码时间有效期、session共享解决方案

Redis优势

  性能极高

    Redis能读的速度是110000次/s,写的速度是81000次/s 。

  丰富的数据类型

    Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

  原子

    Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

  丰富的特性

    Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Java操作Redis

Redis Jedis

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId> 
</dependency>

目录结构

 

 主程序

@SpringBootApplication
public class StartApplication {
    public static void main(String[] args) {
        SpringApplication.run(StartApplication.class,args);
    }
}

Service

@Service
public class SpringBootRedis {
    @Resource
    private StringRedisTemplate stringRedisTemplate;

    public void set(String key,Object value){
        if(value instanceof String){
            stringRedisTemplate.opsForValue().set(key,(String) value,200L, TimeUnit.SECONDS);
        }else if(value instanceof List){
            List<String> list=(List)value;
            for(String item:list){
                stringRedisTemplate.opsForList().leftPush(key,item);
            }
        }else if(value instanceof Set){
            String [] objects=(String[])((Set) value).toArray(new String[((Set) value).size()]);
            stringRedisTemplate.opsForSet().add(key,objects);
        }else if(value instanceof Map){
            stringRedisTemplate.opsForHash().putAll(key,(Map<?,?>) value);
        }
    }
}

Controller

@RestController
public class RedisController {
    @Resource
    private SpringBootRedis springBootRedis;

    @RequestMapping("/setString")
    public void setString(){
        System.out.println("梅川酷子");
        springBootRedis.set("key01","v01");
    }

    @RequestMapping("/setList")
    public void setList(){
        List<String> list=new ArrayList<>();
        list.add("v1");
        list.add("v2");
        list.add("v3");
        springBootRedis.set("setlist",list);
    }

    @RequestMapping("/setSet")
    public void setSet(){
        Set<String> set=new HashSet<>();
        set.add("北京");
        set.add("上海");
        springBootRedis.set("set",set);
    }

    @RequestMapping("/setMap")
    public void setMap(){
        Map map=new HashMap();
        map.put("name","北京");
        map.put("age","111");
        springBootRedis.set("setMap",map);
    }
}

启动

 

  

 

 

 

 

posted @ 2019-12-30 16:50  梅川酷子灬  阅读(159)  评论(0编辑  收藏  举报