zoukankan      html  css  js  c++  java
  • Redis(基本数据类型和使用Java操作Redis)

    一、Redis的基本数据类型(jedis操作类型数据

      1、导入依赖(导入Redis依赖,让项目支持使用Redis

     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
     </dependency>

    <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>

      2、创建一个普通Java类,导入Jedis并完成基本配置

        

      3、类型演示

        (1)jedis操作String类型数据

       /**
         * jedis操作String类型数据
         */
        @Test
        public void operationString(){
            //切换到数据库
            jedis.select(1);
            //设置一个String类型的key-value(添加数据)
            jedis.set("strKey01","strValue01");
            //设置key的有效时间
            //jedis.expire("strKey01",20);
            //获取String数据
            String value = jedis.get("strKey01");
            System.out.println("对应存放的value值为:"+value);
            //修改数据
            jedis.set("strKey01","strValue02");
            //删除数据
            jedis.del("strKey01");
            //设置多个值
            jedis.mset("strKey01","strValue01","strKey02","strValue01","strKey03","strValue03","strKey04","1");
            //+1操作
            jedis.incr("strKey04");
            //-1操作
            jedis.decr("strKey04");
            //拼接
            jedis.append("strKey04","append");
        }

          执行效果如下

        

         

        (2)jedis操作List类型数据

       /**
         * jedis操作List类型数据
         */
        @Test
        public void operationList(){
            //清空集合值
            jedis.del("listkey01","listkey02");
            //设置List集合值,左侧插入
            jedis.lpush("listkey01","张三","李四","王五");
            //设置List集合值,右侧插入
            jedis.rpush("listkey02","北京","上海","广州");
            //过去List集合值
            List<String> listkey01 = jedis.lrange("listkey01", 0, -1);
            for (String item:listkey01){
                System.out.println(item);
            }
            //更改List集合数据
            jedis.lset("listkey01",0,"赵六");
        }

          执行结果如下

        

         

         (3)jedis操作Set类型数据

        /**
         * jedis操作Set类型数据
         */
        @Test
        public void operationSet(){
            //切换到数据库
            jedis.select(2);
            //设置Set集合
            jedis.sadd("setkey01","张三","李四","王五");
            //获取
            Set<String> setkey01 = jedis.smembers("setkey01");
            for (String item:setkey01){
                System.out.println(item);
            }
        }

          执行结果如下

        

         

         (4)jedis操作SortedSet(有序set集合)类型数据

        /**
         * jedis操作SortedSet(有序set集合)类型数据
         */
        @Test
        public void operationSortedSet(){
            //切换到数据库
            jedis.select(2);
            //设置SortedSet集合
            jedis.zadd("setkey02",1,"北京");
            jedis.zadd("setkey02",1,"上海");
            jedis.zadd("setkey02",1,"广州");
            //获取SortedSet
            Set<String> setkey02 = jedis.zrange("setkey02", 0, -1);
            for (String item:setkey02){
                System.out.println(item);
            }
        }

          执行结果如下

        

        

        (5)jedis操作Map类型数据

         /**
         * jedis操作Map类型数据
         */
        @Test
        public void operationMap(){
            //切换到数据库
            jedis.select(3);
            //设置Map
            Map<String,String> map=new HashMap<>();
            map.put("name","张三");
            map.put("age","18");
            jedis.hmset("mapkey01",map);
    
            //获取值
            List<String> value = jedis.hmget("mapkey01", "name", "age");
            for (String item:value){
                System.out.println(item);
            }

          执行结果如下

        

        

     二、只用Java操作Redis

      1、导入依赖

        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
      </parent>
    
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

      2、配置Application.yml文件

        

       3、创建SpringBootRedis类

    package com.jedis.service;
    
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    
    @Service
    public class SpringBootRedis {
        @Resource
        private StringRedisTemplate stringRedisTemplate;
    
        public void set(String key,Object value){
            if (value instanceof String){
                //200L, TimeUnit.SECONDS:用来设置时间,TimeUnit.SECONDS相当于设置单位
                //stringRedisTemplate.opsForValue().set(key,(String)value,200L, TimeUnit.SECONDS);
                stringRedisTemplate.opsForValue().set(key,(String)value);
            }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);
            }
        }
    }

      4、创建controller类

    package com.jedis.controller;
    
    import com.jedis.service.SpringBootRedis;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletResponse;
    import java.util.*;
    
    @Controller
    public class RedisController {
        @Resource
        private SpringBootRedis springBootRedis;
    
        @RequestMapping ("/setString")
        public void setString(HttpServletResponse response){
            springBootRedis.set("strkey","strvalue");
        }
    
        @RequestMapping("/setList")
        public void setList(HttpServletResponse response){
            List<String> stringList=new ArrayList<>();
            stringList.add("张三");
            stringList.add("李四");
            stringList.add("王五");
            springBootRedis.set("listkey",stringList);
        }
    
        @RequestMapping("/setSet")
        public void setSet(HttpServletResponse response){
            Set<String> set=new HashSet<>();
            set.add("北京");
            set.add("上海");
            springBootRedis.set("setkey",set);
        }
    
        @RequestMapping("/setMap")
        public void setMap(HttpServletResponse response){
            Map map=new HashMap();
            map.put("name","张三");
            map.put("age","18");
            springBootRedis.set("mapkey",map);
        }
    }

      5、创建启动类StartApplication

    package com.jedis;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class StartApplication {
        public static void main(String[] args){
            SpringApplication.run(StartApplication.class,args);
        }
    }

      6、实现效果如下

         

        (1)http://localhost:8080/setString

          

         (2)http://localhost:8080/setList

          

         (3)http://localhost:8080/setSet

          

        (4)http://localhost:8080/setMap

          

        

  • 相关阅读:
    1.Lucene
    docker 安装常用服务
    docker 常用命令
    05-vue中使用样式
    04-vue的事件修饰符
    03-用基本指令实现跑马灯效果
    02-vue基本指令
    01-vue分层概念MVVM
    Redis-持久化机制
    BigDecimal工具类
  • 原文地址:https://www.cnblogs.com/tinghao/p/12119670.html
Copyright © 2011-2022 走看看