spring boot项目从零开始-(7)集成jedis访问redis集群

﹏ヽ暗。殇╰゛Y 2022-09-02 03:51 251阅读 0赞

spring boot项目从零开始-集成jedis访问redis集群

  • 简述
    • 前提
  • 步骤
    • 文件
      • pom.xml
      • application.yml
      • RedisConfig
      • MainApp
  • 验证
  • 其它redis访问示例

简述

前提

已安装redis 6.2.5,安装参考:https://editor.csdn.net/md/?articleId=119191741

步骤

文件

pom.xml

  1. <parent>
  2. <artifactId>spring-boot-dependencies</artifactId>
  3. <groupId>org.springframework.boot</groupId>
  4. <version>2.1.5.RELEASE</version>
  5. </parent>
  6. <dependencies>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-web</artifactId>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-data-redis</artifactId>
  14. <exclusions>
  15. <exclusion>
  16. <groupId>io.lettuce</groupId>
  17. <artifactId>lettuce-core</artifactId>
  18. </exclusion>
  19. </exclusions>
  20. </dependency>
  21. <dependency>
  22. <groupId>redis.clients</groupId>
  23. <artifactId>jedis</artifactId>
  24. <version>2.9.3</version>
  25. </dependency>
  26. </dependencies>

application.yml

  1. spring:
  2. redis:
  3. cluster:
  4. # 连接池参数
  5. min-idle: 8
  6. max-idle: 16
  7. max-active: 32
  8. # 集群配置参数
  9. max-redirects: 3
  10. # password: xxxx
  11. nodes: 192.168.11.180:6379,192.168.11.180:6380,192.168.11.180:6381,192.168.11.180:6389,192.168.11.180:6390,192.168.11.180:6391

RedisConfig

  1. package org.example.redis;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.data.redis.connection.RedisClusterConfiguration;
  6. import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
  7. import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
  8. import org.springframework.data.redis.core.RedisTemplate;
  9. import org.springframework.data.redis.serializer.StringRedisSerializer;
  10. import redis.clients.jedis.JedisPoolConfig;
  11. import java.time.Duration;
  12. import java.util.List;
  13. @Configuration
  14. public class RedisConfig {
  15. @Value("${spring.redis.cluster.min-idle}")
  16. private int minIdle;
  17. @Value("${spring.redis.cluster.max-idle}")
  18. private int maxIdle;
  19. @Value("${spring.redis.cluster.max-active}")
  20. private int maxActive;
  21. @Value("${spring.redis.cluster.max-redirects}")
  22. private int maxRedirects;
  23. @Value("${spring.redis.cluster.nodes}")
  24. private List<String> nodes;
  25. public JedisConnectionFactory jedisConnectionFactory() {
  26. RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(nodes);
  27. clusterConfiguration.setMaxRedirects(maxRedirects);
  28. // clusterConfiguration.setPassword("");
  29. JedisPoolConfig poolConfig = new JedisPoolConfig();
  30. poolConfig.setMinIdle(minIdle);
  31. poolConfig.setMaxIdle(maxIdle);
  32. poolConfig.setMaxTotal(maxActive);
  33. poolConfig.setTestOnBorrow(true);
  34. JedisClientConfiguration clientConfiguration = JedisClientConfiguration.builder()
  35. .connectTimeout(Duration.ofSeconds(10)).usePooling().poolConfig(poolConfig).build();
  36. JedisConnectionFactory factory = new JedisConnectionFactory(clusterConfiguration, clientConfiguration);
  37. factory.afterPropertiesSet();
  38. return factory;
  39. }
  40. @Bean
  41. public RedisTemplate<String, String> redisTemplate() {
  42. RedisTemplate<String, String> template = new RedisTemplate<>();
  43. template.setConnectionFactory(jedisConnectionFactory());
  44. template.setKeySerializer(new StringRedisSerializer());
  45. template.setValueSerializer(new StringRedisSerializer());
  46. template.setHashKeySerializer(new StringRedisSerializer());
  47. template.setHashValueSerializer(new StringRedisSerializer());
  48. template.afterPropertiesSet();
  49. return template;
  50. }
  51. }

MainApp

  1. package org.example;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.data.redis.core.RedisTemplate;
  6. import org.springframework.web.bind.annotation.GetMapping;
  7. import org.springframework.web.bind.annotation.RestController;
  8. import java.util.Set;
  9. @SpringBootApplication
  10. @RestController
  11. public class MainApp {
  12. public static void main(String[] args) {
  13. SpringApplication.run(MainApp.class, args);
  14. }
  15. /**************************redis测试*****************************/
  16. @Autowired
  17. private RedisTemplate redisTemplate;
  18. @GetMapping("/redis")
  19. public String redis() {
  20. redisTemplate.opsForSet().add("TEST:REDIS", "1", "2", "3");
  21. Set<String> members = redisTemplate.opsForSet().members("TEST:REDIS");
  22. System.out.println("query answer = " + members.toString());
  23. return members.toString();
  24. }
  25. }

验证

http://localhost:8080/redis
在这里插入图片描述

其它redis访问示例

  1. package com.ydfind.jedis;
  2. import org.junit.Test;
  3. import redis.clients.jedis.HostAndPort;
  4. import redis.clients.jedis.Jedis;
  5. import redis.clients.jedis.JedisCluster;
  6. import java.util.HashSet;
  7. import java.util.Set;
  8. public class JedisTest {
  9. // drd notes:redis单机的时候,可以下面这样
  10. @Test
  11. public void testConnect() {
  12. Jedis jedis = new Jedis("192.168.11.180",6379);
  13. String pong = jedis.ping();
  14. System.out.println("连接成功:"+pong);
  15. jedis.close();
  16. }
  17. @Test
  18. public void testSetGet() {
  19. // drd notes:集群下面会发生报错
  20. Jedis jedis = new Jedis("192.168.11.180",6379);
  21. jedis.set("k1", "v1");
  22. jedis.set("k2", "v2");
  23. jedis.set("k3", "v3");
  24. Set<String> keys = jedis.keys("*");
  25. System.out.println(keys.size());
  26. for (String key : keys) {
  27. System.out.println(key);
  28. }
  29. System.out.println(jedis.exists("k1"));
  30. System.out.println(jedis.ttl("k1"));
  31. System.out.println(jedis.get("k1"));
  32. }
  33. @Test
  34. public void testCluster() {
  35. Set<HostAndPort>set =new HashSet<HostAndPort>();
  36. set.add(new HostAndPort("192.168.11.180",6379));
  37. JedisCluster jedisCluster=new JedisCluster(set);
  38. jedisCluster.set("k1", "v1");
  39. System.out.println(jedisCluster.get("k1"));
  40. jedisCluster.set("k2", "v2");
  41. System.out.println(jedisCluster.get("k2"));
  42. jedisCluster.set("k3", "v3");
  43. System.out.println(jedisCluster.get("k3"));
  44. }
  45. @Test
  46. public void testCluster1() {
  47. Set<HostAndPort> nodes = new HashSet<>();
  48. nodes.add(new HostAndPort("192.168.11.180",6379));
  49. nodes.add(new HostAndPort("192.168.11.180",6380));
  50. nodes.add(new HostAndPort("192.168.11.180",6381));
  51. nodes.add(new HostAndPort("192.168.11.180",6389));
  52. nodes.add(new HostAndPort("192.168.11.180",6390));
  53. nodes.add(new HostAndPort("192.168.11.180",6391));
  54. JedisCluster jedisCluster = new JedisCluster(nodes, 120);
  55. jedisCluster.set("k1", "v1");
  56. System.out.println(jedisCluster.get("k1"));
  57. jedisCluster.set("k2", "v2");
  58. System.out.println(jedisCluster.get("k2"));
  59. jedisCluster.set("k3", "v3");
  60. System.out.println(jedisCluster.get("k3"));
  61. }
  62. }

发表评论

表情:
评论列表 (有 0 条评论,251人围观)

还没有评论,来说两句吧...

相关阅读