Heim >Java >javaLernprogramm >Wie Java und SpringBoot Redis verwenden

Wie Java und SpringBoot Redis verwenden

王林
王林nach vorne
2023-05-12 20:31:04896Durchsuche

1. Java stellt eine Verbindung zu Redis her

Welche Sprachen unterstützt Redis (siehe offizielle Redis-Website)

Wie Java und SpringBoot Redis verwenden

Wie Java und SpringBoot Redis verwenden

1.1 Verwenden Sie Jedis

(1) Jedis-Abhängigkeit hinzufügen

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <!--只能在测试类中使用-->
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.6.0</version>
        </dependency>

(2 ) Codetest

public class TestJedis {
    @Test
    public void test01(){
        //连接redis--必须保证你的redis服务运行远程连接
        //该对象把每个redis命令封装成对应的方法
        //注意端口号
        //xshell中的redis要运行起来,注意防火墙释放端口号,注意配置文件的修改
        Jedis jedis=new Jedis("192.168.1.16",6379);
        //对于字符串操作的命令
        String set = jedis.set("k1", "v1");
        System.out.println(set);
        String set1 = jedis.set("k2", "v2");
        System.out.println(set1);
        String set2 = jedis.set("k3", "v3");
        System.out.println(set2);

        //对于hash的操作
        jedis.hset("k4","name","小花");
        Long hset = jedis.hset("k4", "age", "18");
        System.out.println(hset);

       Map<String ,String> map=new HashMap<>();
        map.put("name","小明");
        map.put("age","20");
        Long k = jedis.hset("k5", map);
        System.out.println(k);
        jedis.close();
    }
}

1.2 Verwenden Sie den Verbindungspool, um eine Verbindung zu Redis herzustellen

 @Test
    public void test02(){
        //创建连接池的配置类
        JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(20);
        jedisPoolConfig.setMinIdle(5);
        jedisPoolConfig.setMaxWait(Duration.ofMillis(3000));
        JedisPool jedisPool=new JedisPool(jedisPoolConfig,"192.168.1.16",6379);
        long start = System.currentTimeMillis();

        for (int i = 0; i < 1000; i++) {
            //从jedis连接池获取资源
            Jedis jedis=jedisPool.getResource();
            String ping = jedis.ping();
            jedis.close();//是否关闭池子
        }
        long end=System.currentTimeMillis();
        //是为了比较使用池子还是不使用快,结论是使用池子快
        System.out.println("总耗时:"+(end-start));
    }

1.3 Java, um eine Verbindung zum Redis-Clustermodus herzustellen

Stellen Sie beim Herstellen einer Verbindung mit dem Cluster sicher, dass kein Wert im Cluster gespeichert ist

Wie Java und SpringBoot Redis verwenden

Die andere Sache ist, die entsprechenden Ports freizugeben: 6001, 6002, 6003, 6004, 6005, 6006, da der Port 10000 war Beachten Sie die beiden oben genannten Punkte, bevor Sie die Idee erfolgreich umsetzen können.

@Test
    public void test03(){
      Set<HostAndPort> nodes=new HashSet<>();
      nodes.add(new HostAndPort("192.168.227.175",6001));
      nodes.add(new HostAndPort("192.168.227.175",6002));
      nodes.add(new HostAndPort("192.168.227.175",6003));
      nodes.add(new HostAndPort("192.168.227.175",6004));
      nodes.add(new HostAndPort("192.168.227.175",6005));
      nodes.add(new HostAndPort("192.168.227.175",6006));
        JedisCluster jedisCluster=new JedisCluster(nodes);
      jedisCluster.set("k6", "小老虎和小兔子");
        jedisCluster.close();
    }

Wie Java und SpringBoot Redis verwenden

2. SpringBoot integriert Redis

Springboots Betrieb von Redis kapselt zwei StringRedisTemplate- und RedisTemplate-Klassen. StringRedisTemplate kann nur String-Typen und keine Objekttypen speichern. Wenn Sie StringRedisTemplate zum Speichern von Objekten verwenden möchten, müssen Sie das Objekt in einen JSON-String konvertieren.

Wie Java und SpringBoot Redis verwenden

springboot bietet bei der Integration von Redis zwei Vorlagen-Toolklassen, StringRedisTemplate und RedisTemplate.

2.1 StringRedisTemplate Jeder Datentyp, der Die entsprechende interne Klasse wird separat versiegelt.

Hier werden keine verstümmelten Zeichen angezeigt, da die Serialisierungs- und Deserialisierungsmethoden in den String-Typ geändert wurden.

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

2.2 RedisTemplateHier werden verstümmelte Zeichen angezeigt, da die Serialisierungs- und Deserialisierungsmethoden standardmäßig auf JDK basieren.

 @Autowired
 private StringRedisTemplate redisTemplate;

Das obige RedisTemplate muss jedes Mal den Schlüsselwert und die Feldserialisierungsmethode angeben. Können Sie eine Konfigurationsklasse erstellen, die bereits die Serialisierung für RedisTemplate festgelegt hat? Bei späterer Verwendung ist keine Angabe erforderlich.

@Autowired
    private StringRedisTemplate stringRedisTemplate;
 @Test
    public void test01(){
        //对hash类型的操作
        HashOperations<String, Object, Object> forHash = stringRedisTemplate.opsForHash();
        forHash.put("k1","name","张三");
        forHash.put("k1","age","15");
        Map<String,String> map=new HashMap<>();
        map.put("name","李四");
        map.put("age","25");
        forHash.putAll("k36",map);
 
        Object o = forHash.get("k1", "name");
        System.out.println(o);
 
        Set<Object> k1 = forHash.keys("k1");
        System.out.println(k1);
 
        List<Object> k11 = forHash.values("k1");
        System.out.println(k11);
 
        //获取k1对于的所有的field和value
        Map<Object, Object> k12 = forHash.entries("k1");
        System.out.println(k12);
    }
    @Test
    void contextLoads() {
        //删除指定的key
       // stringRedisTemplate.delete("k");
        //查看所有的key
        //stringRedisTemplate.keys("k");
        //是否存在指定的key
        //stringRedisTemplate.hasKey("k");
        //对字符串数据类型的操作ValueOperations
        ValueOperations<String, String> forValue = stringRedisTemplate.opsForValue();
        //存储字符串类型--key value long uint  setex()
        forValue.set("k1","张三",30, TimeUnit.SECONDS);
        //等价于setnx 存入成功返回true ,失败返回false
        Boolean absent = forValue.setIfAbsent("k11", "李四", 30, TimeUnit.SECONDS);
        System.out.println(absent);
        //append拼接
        Integer append = forValue.append("k11", "真好看");
        String k11 = forValue.get("k11");
        System.out.println(k11);
 
    }

Das obige ist der detaillierte Inhalt vonWie Java und SpringBoot Redis verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen